SQL GO!!!

select 'Blog focado em SQL Server' from blog where nome ='SQLGO.wordpress.com'

Arquivos da Categoria: Reporting Services

Como resolver o “Divide by zero” no reporting services

Olá galera, voltei para deixar uma dica vocês!

Eu estava quebrando a cabeça com um erro costumeiro, “Divide by zero”, mas não importava o IIF que eu montasse, ele acabava tentando realizar a divisão.

Depois de muito tentar, resolvi apelar para o google e achei uma forma muiiiito fácil de fazer a divisão, e logo após resolver o problema consegui montar o IIF novamente Humpfff.

Vamos lá!

Montei uma query simples para esse exemplo:

Select *

FROM (VALUES      (0,0),(0,6),(6,0),(23,234)

,(647,435),(645,874),(354,422),(9,11)

,(32,22),(45,46),(76,2) ) as Tabela (Valor1, Valor2)

Resultado da query

E o resultado da divisão entre o primeiro valor pelo segundo, retornado a percentagem, junto com o bendito erro!!!

img2

Warning              1             [rsRuntimeErrorInExpression] The Value expression for the textrun ‘Textbox5.Paragraphs[0].TextRuns[0]’ contains an error: Attempted to divide by zero.

O jeito mais fácil foi criar um código em VB, mas não precisa se assustar, é bem simples!

  1. No toolbar, clique em report, depois em report properties.
  2. Na aba “code”, cole o código abaixo:

img3

Public Function Divisao(ByVal dividendo As Double, ByVal divisor As Double) As Double

If divisor = 0 Then

Return 0

Else

Return dividendo / divisor

End If

End Function

Se o valor for um número inteiro irá retornar NAN ou Infinity, nesse caso está como decimal, então retorna #Error

Googlando, eu achei uma maneira de evitar o erro usando um truque de matemática, bem fácil também.

Agora, veja como ficou o código de cada campo:

%

=Fields!Valor1.Value/Fields!Valor2.Value

IIF

=IIf(Fields!Valor2.Value = 0

,0

,Fields!Valor1.Value / IIf( Fields!Valor2.Value = 0

,1

,Fields!Valor2.Value))

Code

=Code.Divisao(Fields!Valor1.Value,Fields!Valor2.Value)

Truque de matematica

=IIf(Fields!Valor2.Value = 0

,0

,Fields!Valor1.Value * (Fields!Valor2.Value ^ -1))

E o resultado é o seguinte:

img4

Pronto, tudo resolvido!

Até a próxima!

Anúncios

Auto Refresh Reporting Services

Hoje venho trazer para vocês uma dica rápida!

Como atualizar o seu relatório automaticamente pelo SSRS, segue o passo a passo:

Clique no relatório (.rdl), e aperte F4 ou abra a aba propriedades.

Dentro do grupo “Other” existe uma opção AutoRefresh, no meu caso abaixo eu defini para 60 segundos.

Veja a imagem abaixo:

Imagem

E pronto!

Simples, fácil e extremamente útil!

 

Até a próxima!

 

Utilizando o Document Map no Reporting Services

Document map é um conjunto de links de navegação exibidos no relatório, esses links podem ser definidos manualmente, setando a propriedade DocumentMapLabel do objeto ou dinamicamente como no exemplo que vamos criar nesse post.

Crie um projeto e selecione o template Report como no exemplo abaixo:

image

Adicione um Shared DataSource, clique com o botão esquerdo e selecione a opção Add>>New data source, e configure as propriedades da sua conexão.

Agora clique com o botão direito da pasta  Reports, e selecione a opção Add>>New Item.

image

Defina o DataSource a ser utilizado, como esse item já existe no SharedDataSouces iremos apenas referenciá-lo.

Na aba ReportData clique com o botão direto em DataSource e selecione add New Data Source, na janela que aparecerá selecione a opção Use shared data source reference, e escolha o data source criado anteriormente.

image

Agora que a nossa fonte de dados já está definida vamos criar o data set, você pode definir um shared data set e somente referenciar do mesmo jeito que fizemos com o data source ou pode adicionar um novo, nesse exemplo eu adicionei um novo data set.

Defina a fonte de dados e por fim a query ou a stored procedure que irá retornar os dados.

Você pode fazer o download do banco que utilizei para esse exemplo, o link se encontra no final do artigo.

SELECT     mon.pkIdMontadora
    , mon.Montadora
    , mar.pkIdMarca
    , mar.Marca
    , cat.pkIdCategoria
    , cat.Categoria
    , subc.pkIdSubCategoria
    , subc.SubCategoria
    , m.Modelo
FROM     Modelo AS m
    INNER JOIN SubCategoria AS subc ON m.fkIdSubCategoria = subc.pkIdSubCategoria
    INNER JOIN Marca AS mar ON m.fkIdMarca = mar.pkIdMarca
    INNER JOIN Montadora AS mon ON mar.fkIdMontadora = mon.pkIdMontadora
    INNER JOIN Categoria AS cat ON subc.fkIdCategoria = cat.pkIdCategoria

Eu criei uma tabela agrupada por montadora, marca, categoria e subcategoria.

Após isso vamos iniciar a montagem do nosso document map.

Clique com o botão direito no grupo montadora >> group properties…

image

Você irá visualizar uma tela semelhante à tela abaixo. Na guia Advanced selecione o campo que você deseja que seja exibido no document map, no nosso caso é a montadora.

image

Ao clicar em preview, já conseguimos visualizar o primeiro nível do nosso document map.

image

Vamos adicionar mais alguns níveis a esse document map. repetindo a mesma estrutura que foi realizada para a montadora, porém agora com o campo marca.

Ao finalizar as etapas, teremos dois níveis na hierarquia do document map.

image

Repita o processo para todos os níveis desejados, no meu caso tenho os seguintes níveis:

Montadora

Marca

Categoria

SubCategoria

Modelo (detalhe)

Veja como ficou o resultado após todos os níveis finalizados:

image

Conforme dito no inicio do post, você pode adicionar objetos para o documento map alterado a propriedade DocumentMapLabel com o nome que você deseja que seja exibido.

image

Como podem verificar, os retângulos estão sendo listados juntamente com os grupos da tabela.

image

Clique aqui para fazer o download da base e do exemplo.

Até a próxima!

Andressa Martins

IT Women

 

Em comemoração ao mês da mulher a equipe do SQL Pass Latam reuniu algumas mulheres para ministrar palestras sobre o SQL Server, teremos palestrantes de muitos paises da América Latina, inclusive o Brasil.

 

Agenda

22 de Março

 

11:00 a.m (-5GMT)
Mary Arcia (Venezuela)

clip_image001[4]

Data Tier Application Component. Disminuyendo la brecha entre Developers y DBA’s.

Consultora de Base de Datos en Caracas-Venezuela. Graduada de Ing. en Informática, trabaja con SQL Server desde 1999 realizando labores de soporte de base de datos e implementando soluciones de diseño, desarrollo, auditoría del desempeño y construcción de datawarehouse. Es una profesional activa en el mundo de base da datos, en búsqueda del conocimiento y aprendizaje trabaja constantemente en comunidades que promuevan su uso y tecnología. Desde 2004 inició el camino de las certificaciones como MCP SQL Server 2000. Hoy en día es MCTS en SQL Server 2005 y 2008 y aspira obtener la certificación como Profesional Developer en Business Intelligence.

12:00 p.m (-5GMT)
Nancy Ramírez Romero (México)

clip_image002[4]

Estrategias de Alta Disponibilidad con SQL Server 2008 R2

Licenciada en Sistemas Computarizados e Informática. Ha trabajado con SQL Server desde hace 14 años, de los cuales 10 años de su experiencia laboral han sido en Microsoft México trabajando como Consultor de Desarrollo, después como SQL Server Premier Field Engineer a nivel Latinoamérica y su actual rol está en preventas técnicas como Data Platform and BI Technical Specialist Professional.Ha obtenido las certificaciones de Enterprise Administrator, Database Administrator y Solution Developer y ha estado involucrada en actualizaciones tecnológicas de la plataforma de datos y BI en los sectores financiero, industria y manufactura, Educación y Comunicaciones, y sobre todo en casos de OLTP y BI en los han ganado contra la competencia.

01:00 p.m (-5GMT)
Isabel de la Barra (Chile)
clip_image003[4]

Nuestros usuarios quieren ir más rápido y mejor! SQL Server Performance Tools

Ingeniero de Infraestrutura con más de 18 años de experiencia en distintas plataformas y bases de datos. Trabaja con SQL Server desde la versión 6.0 hasta las actuales versiones. Es Microsoft Profesional Certified desde el año 2002 y Technical Specialist en SQL Server 2005. Como Trainer ha dictado cursos de SQL Server desde la versión 2000 a la 2008. Ha trabajado en distintos proyectos de Implementación incluyendo configuraciones de Alta Disponibilidad tales como Cluster, Mirror y Log Shipping, especializándose en Identificar Problemas de Desempeño y Disponibilidad. Es especialista también en Windows Server, Exchange Server, SharePoint y Dynamics CRM.

02:00 p.m (-5 GMT)
Carmen Vásquez (Venezuela)
clip_image004

¿Por qué debo considerar migrar a SQL SERVER 2008 R2?

Ingeniero en Computación con más de 16 años de experiencia en la industria del software. Cuenta con una amplia experiencia en el desarrollo de software y el control de proyectos. Es Certificada como SQL Server 2000 Administrator y Technical Specialist en SQL Server 2008 (En implementación y mantenimiento, en desarrollo y en inteligencia de negocios). Durante los últimos 9 años, ha trabajado en Microsoft Venezuela, desempeñándose en los roles de Consultor, Arquitecto y Especialista en soluciones de Inteligencia de Negocios. Carmen es ponente activa en eventos de Microsoft Venezuela donde comparte sus conocimientos y experiencias en tópicos de variada índole sobre SQL Server. Se ha desempeñado también de manera exitosa en otras áreas como: desarrollo con .Net, Implantación y personalización de Sharepoint e Implantación y personalización de Project Server.

05:00 p.m (-5 GMT)
Andressa Alves (Brasil)
clip_image005

Trabalhando com mapas no Reporting Services 2008 – Português (19:00hs)

Formada em Tec. De Banco de Dados, atua com SQL Server há três anos é responsável pela área de relatórios na empresa em que atua. Participou da Semana de Webcast liderada por Mulheres realizado pelo MSDN. Mantém um blog especializado em SQL Server.

06:00 p.m (-5 GMT)
Alicia Estrada (Bolivia)
clip_image006[4]

Explotando tus datos geoespaciales con Reporting Services 2008 R2

Microsoft Student Partner en Bolivia. Formadora de células dentro de las universidades e institutos de La Paz, Tarija, Cochabamba y Sucre. Ha participado en la coordinación de eventos universitarios como CICC (Congreso Internacional de Ciencias de la Computación), CCBOL (Conferencia Nacional de Ciencias de la Computación), organización de conferencia académicas, programa académico SU+MAS y participa en eventos como conferencista sobre tecnología Microsoft, tanto para seguridad como desarrollo. Trabaja como consultora independiente en el Ministerio de Desarrollo Productivo y Economía Plural. Es docente de C# en el Centro de Alto Rendimiento e Innovación Informática de la Universidad Mayor de San Andrés .Ha sido reconocida en el 2010 con la premiación Metropolitana TOYP (Jóvenes Sobresalientes del Mundo) en la categoría de Servicio humanitario y voluntario.

23 de Março

 

11:00 a.m (-5GMT)
Nancy Herrera (Colombia) clip_image007

Administrando Múltiples Servidores con SQL Server 2008 R2

Nancy Pertenece al grupo de líderes de la comunidad ITPros DC, Bogotá, Colombia donde ha dictado el curso para la certificación 70-432 Microsoft SQL Server 2008 en la que ella misma obtuvo la certificación. Ha trabajado a nivel de implementación y mantenimiento de bases de datos, tanto en las versiones 2005 como 2008 y 2008 R2. Adicionalmente ha tenido la oportunidad de conocer, trabajar y estudiar herramientas de BI como Reporting Services. Participa activamente en charlas de SQL Server. Le llena de satisfacción el poder compartir el conocimiento y que sean muchos los que busquen ese ideal. Es una apasionada de las bases de datos y aún más con orientación a BI. Le encanta aprender, leer y ser autodidacta implementando laboratorios en máquinas virtuales, aprendiendo y mejorando con esas experiencias.

12:00 p.m (-5GMT)
Beatriz Corona (México)

clip_image008

Conectando Análisis Services con Fuentes Externas

Ing. En Sistemas Computacionales.Trabaja con Bases de Datos desde 1999 iniciándose con Oracle y posteriormente con SQL Server. Es MCITP Database Administrator SQL Server 2005. Actualmente se desempeña como DBA con SQL Server 2000, 2005 y 2008, además de administrar Analysis Services, Integation Services y Reporting Services. Le gusta investigar, aprender brindar asesoría, dar soporte y capacitación en el ámbito de Bases de Datos, especialmente en la parte de Performance y Tunning.

01:00 p.m (-5GMT)
Mónica Camacho (México)
clip_image009[4]

Nuestros usuarios quieren ir más rápido y mejor! SQL Server Performance Tools

Profesional activa de IT y forma parte del programa MSP (Microsoft Student Partner) de Microsoft México en el cual ha brindado varias conferencias y charlas en temas de tecnología tales como social media. Mantiene un blog tecnológico que actualiza con frecuencia en el cual cuenta las innovaciones y avances de último momento en el mundo de IT . Recientemente ha trabajado en proyectos de base de datos, en especial , en transformaciones de datos en información útil y valiosa para la toma de decisiones apoyándose para ello en las herramientas de Business Intelligence que trae SQL Server.

02:00 p.m (-5 GMT)
Ana Maria Bisbé York (España)
clip_image010[4]

Integration Services, el mejor de los puentes para enlazar orígenes y destinos

Graduada en Licenciatura en Cibernética Económica con Master en Ciencias Económicas en el Instituto de Dirección de la Economía, Moscú en 1988. Tiene un Máster en Gestión del Conocimiento y Business Intelligence con tecnología Microsoft. Durante 12 años trabajó en el desarrollo e implementación de aplicaciones de gestión en diferentes áreas de economía, comercial y medicina empleando para ello MS Visual FoxPro. Sus pasos por SQL Server se inician con la versión 2005 realizando trabajos en T-SQL, y dedicando muchos esfuerzos a la herramientas BI de SQL Server 2005 y 2008. Mantiene un blog sobre tecnología de base de datos. Desde 2002 participa activamente en los grupos de noticias de Microsoft Visual FoxPro en Español transmitiendo conocimientos y experiencias en el empleo de la herramienta de programación, técnicas de diseño.

05:00 p.m (-5 GMT)
Maritza Mera (Colombia)
clip_image011[4]

Descubre y vencerás. Minería de Datos con Excel 2010

Participa en Microsoft Student Partner de Popayán, Colombia. Estudiante de último semestre de Ingeniería de Sistemas de la Universidad del Cauca, Trabaja con SQL Server desde hace 2 años. Apoyada en su experiencia en .net ha realizado trabajos como desarrollador de base de datos que van desde el modelado hasta la implementación de triggers, procedimientos almacenados,CLR, etc. Ha participado también en proyectos de Business Intelligence en los que se involucra temas de minería de datos y bodegas de datos. Gracias al reconocimiento que le ha dado Microsoft como MSP ha logrado participar activamente en la difusión de tecnologías como MS SQL Server. Se considera una IT Woman que vive entre la infraestructura y el desarrollo de base de datos.

06:00 p.m (-5 GMT)
Valeria Rodríguez Zuccaro (Paraguay)
clip_image012

Portafolio de BI

Directora en Paradigmas Software, S.R.L., una empresa especializada en el desarrollo de base de datos, proyectos de software, entrenamiento y consultoría en Paraguay. Es responsable de la gestión de los recursos humanos, técnicos y administrativos para los proyectos de Business Intelligence, Data Warehouse, Data Mining, Desarrollo de Software y Servicios de Consultoría, además de la implementación de los planes de negocio de la compañía y de la administración de los presupuestos en el área técnica y financiera. Desde el año 2003 ha sido reconocida por Microsoft como Most Value Professional en SQL Server (MVP), reconocimiento que ha mantenido hasta entonces dada su gran dedicación y conocimiento del producto.

clip_image013 image

 

Página oficial do evento

Clique aqui para se inscrever!

Alternando cores entre as linhas de uma tabela no Reporting Services

 

Para alternar as cores entre as linhas de uma tabela é muito simples, vou demostrar como podemos fazer essa alteração.

Temos um relatório e dentro dele uma tabela simples como podem ver abaixo:

 

clip_image002

 

Clique na linha de detalhe da tabela, na guia propriedades da Row no item Backgroundcolor escolha a opção “<expression…>”.

 

clip_image004

 

Irá aparecer uma janela e nela escreva a linha abaixo:

=IIf((RowNumber("table1") mod 2), "Gainsboro", "White")

Se houver resto na divisao (numero da linha da tabela table1/2) então Gainsboro senão White

 

Sintaxe

IIF = Immediate IF

RowNumber("table1") = número da linha da tabela table1

Mod 2 = Resto da Divisão por 2

 

clip_image006

 

E como resultado, a nossa tabela com as cores alternadas!

 

clip_image008

 

Faça Donwload desse projeto aqui

#FicaDica

[]’s

Andressa

CheckList diário utilizando o Reporting Services

Há algum tempo atrás eu li um artigo do Fabricio Lima (Criando um CheckList Automático do Banco de Dados ), adaptei os scripts dele as minhas necessidades e montei um relatório no Reporting Services, segue passo a passo o relatório que recebo diariamente por e-mail.

Para desenvolver um relatório é necessário ter instalado o Business Intelligence Development Studio, caso já tenha crie um projeto do tipo “Report Server Project”

clip_image002

Agora precisamos das fontes de dados compartilhadas, na aba Solution explorer clique com o botão direito em cima da pasta “Shared Data Sources” e selecione a opção “Add New Data Source”.

clip_image003

Defina as propriedades da conexão com o banco de dados.

clip_image005

Agora é necessário criar os DataSet de acordo com a sua necessidades, segue abaixo alguns

exemplos:

Para obtermos o tamanho das bases de dados da instância utilizamos a procedure abaixo.

— ============================================= 
— Author:  <Andressa> 
— Create date: <18/02/2011> 
— Description: <retorna dados do espaço utilizado pelas bases> 
— ============================================= 
CREATE PROCEDURE [dbo].[usp_Relatório_DBCheckList] 
  
AS 
BEGIN  
DECLARE @tabela TABLE (Nome  NVARCHAR(128),Tamanho float,NaoAlocado float) 
DECLARE AllDatabases CURSOR FOR  
  SELECT name
  FROM sys.databases
  WHERE STATE = 0 
   
OPEN AllDatabases 
 
   DECLARE @DBNome NVARCHAR(128),@SQL NVARCHAR(MAX) 
 
    FETCH NEXT FROM AllDatabases INTO @DBNome 
     WHILE (@@FETCH_STATUS = 0) 
      BEGIN 
        SET @SQL = N’USE ‘ + @DBNome +’ 
         declare @objname nvarchar(776), @id int   ,@type character(2)  ,@pages bigint    , 
         @dbname sysname    ,@dbsize bigint    ,@logsize bigint    ,@reservedpages  bigint    , 
         @usedpages  bigint    ,@rowCount bigint   
          
         SELECT @id = object_id, @type = type FROM sys.objects WHERE object_id = object_id(@objname)   
         if @id is null   
          begin   
            select @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))   
             ,@logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end))   
            from dbo.sysfiles   
          end 
          select   @reservedpages = sum(a.total_pages),   
             @usedpages = sum(a.used_pages),   
             @pages = sum(   
            CASE   
             When it.internal_type IN (202,204) Then 0   
             When a.type <> 1 Then a.used_pages   
             When p.index_id < 2 Then a.data_pages   
             Else 0   
            END   
            )   
         from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id   
           left join sys.internal_tables it on p.object_id = it.object_id   
           select database_name = db_name(),   
           database_size = ltrim(str((convert (dec (15,2),@dbsize) + convert (dec (15,2),@logsize))    
           * 8192 / 1048576,15,2)),   
           ”unallocated space” = ltrim(str((case when @dbsize >= @reservedpages then   
           (convert (dec (15,2),@dbsize) – convert (dec (15,2),@reservedpages))    
           * 8192 / 1048576 else 0 end),15,2) ) ‘  
        INSERT INTO @tabela 
        EXEC sp_executesql @SQL 
 
         FETCH NEXT FROM AllDatabases INTO @DBNome 
      END 
    SELECT Nome, Tamanho, NaoAlocado from @tabela 
  CLOSE AllDatabases 
  DEALLOCATE AllDatabases 
END

Agora referencie a procedure no dataset.

clip_image007

Tamanho das unidades de Disco do servidor (DataSet_Disco)

 
XP_FIXEDDRIVES
 

 

Tamanho dos arquivos de log de toda a instância (DataSet_LogSpace)

DBCC SQLPERF(LOGSPACE)
 

 

 

Listagem de Jobs que estão em execução (DataSet_JobsExecucao)

SELECT Name AS Nome

,run_Requested_Date AS DataExecucao

,DATEDIFF(mi,run_Requested_Date

,GETDATE()) AS Duracao_Minutos

FROM msdb..sysjobactivity A INNER JOIN

msdb..sysjobs B ON A.job_id = B.job_id

WHERE start_Execution_Date IS NOT NULL AND stop_execution_date IS NULL

Listagem dos Jobs que não foram executados com sucesso (DataSet_JobFailed)

DECLARE @Ontem INT

DECLARE @OntemHorario INT

SET @OntemHorario= CAST((RIGHT(‘0’+CONVERT(VARCHAR(2), (DATEPART(HOUR,DATEADD(HOUR,-1, GETDATE())))), 2) +RIGHT(‘0’+CONVERT(VARCHAR(2), (DATEPART(MINUTE,GETDATE()))), 2)+RIGHT(‘0’+CONVERT(VARCHAR(2), (DATEPART(SECOND,GETDATE()))), 2)) AS INT)

SET @Ontem = CAST(CONVERT (VARCHAR(8),(DATEADD (DAY, -1, GETDATE())),112) AS INT)

CREATE TABLE #HistoricoJobs( Cod INT identity(1,1)

,IDInstancia INT

,IDJob VARCHAR(255)

,NomeJob VARCHAR(255)

,IDStep INT

,NomeStep VARCHAR(255)

,IDSqlMensagem INT

,SqlSeverity INT

,SqlMensangem VARCHAR(3990)

,IDStatusExecucao INT

,DataExecucao VARCHAR(20)

,HorarioExecucao VARCHAR(20)

,DuracaoExecucao INT

,EmailOperador VARCHAR(100)

,NetSenderOperador VARCHAR(100)

,PagerOperador VARCHAR(100)

,TentativasRealizadAS INT

,NomeServidor VARCHAR(100))

INSERT INTO #HistoricoJobs

EXEC Msdb.dbo.SP_HELP_JOBHISTORY NULL,NULL,NULL,NULL,NULL,@Ontem,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,’FULL’

SELECT NomeJob

,CASE

WHEN IDStatusExecucao = 0 THEN ‘Failed’

WHEN IDStatusExecucao = 1 THEN ‘Succeeded’

WHEN IDStatusExecucao = 2 THEN ‘Retry (step only)’

WHEN IDStatusExecucao = 3 THEN ‘Canceled’

WHEN IDStatusExecucao = 4 THEN ‘In-progress message’

WHEN IDStatusExecucao = 5 THEN ‘Unknown’ END Status

,CAST(DataExecucao + ‘ ‘ + RIGHT(’00’ + SUBSTRING(HorarioExecucao,(LEN(HorarioExecucao)-5),2) ,2)+ ‘:’ +

RIGHT(’00’ + SUBSTRING(HorarioExecucao,(LEN(HorarioExecucao)-3),2) ,2)+ ‘:’ +

RIGHT(’00’ + SUBSTRING(HorarioExecucao,(LEN(HorarioExecucao)-1),2) ,2) AS VARCHAR) Dt_Execucao

,RIGHT(’00’ + SUBSTRING(cast(DuracaoExecucao AS VARCHAR),(LEN(DuracaoExecucao)-5),2) ,2)+ ‘:’ +

RIGHT(’00’ + SUBSTRING(cast(DuracaoExecucao AS VARCHAR),(LEN(DuracaoExecucao)-3),2) ,2)+ ‘:’ +

RIGHT(’00’ + SUBSTRING(cast(DuracaoExecucao AS VARCHAR),(LEN(DuracaoExecucao)-1),2) ,2) DuracaoExecucao

,SqlMensangem

FROM #HistoricoJobs

WHERE ((DataExecucao >=@Ontem AND HorarioExecucao >= @OntemHorario) OR DataExecucao >@Ontem)

AND IDStep = 0

AND IDStatusExecucao <> 1

ORDER BY Dt_Execucao

DROP TABLE #HistoricoJobs

Listagem dos últimos backups (DataSet_Backup)

SELECT database_name as NomeDataBase

, name as Nome

,Backup_start_date as DataInicio

, datediff(mi,Backup_start_date,Backup_finish_date) Duracao_Min

, server_name as NomeServidor

,recovery_model as RecoveryModel

, cast(backup_size/1024/1024 as numeric(15,2)) As Tamanho

,type as Tipo

FROM msdb.dbo.backupset B

INNER JOIN msdb.dbo.backupmediafamily BF ON

B.media_set_id = BF.media_set_id

WHERE Backup_start_date >= DATEADD(HH, 18 ,@Dt_Referencia – 1 ) –backups realizados a partir das 18h de ontem

and Backup_start_date < DATEADD (DAY, 1, @Dt_Referencia)

order by database_name, Backup_start_date

/

Após criar os DataSets você terá uma lista semelhante a imagem abaixo:

clip_image018

Para criar um relatório clique com o botão direito em cima da pasta report e “New Item”, selecione “report”, nomeie o arquivo e clique em “Add”. Feito isso você precisa  criar os DataSources/DataSets utilizando o DataSource/DataSet reference correspondente.

image

Com a parte de acesso a dados já finalizada, precisamos criar a parte gráfica do relatório, montei umas tabelas simples e sem formatação apenas para o melhor entendimento.

Para adicionar um campo à uma tabela é simples, somente arrastar o campo do dataset para a tabela desejada.

clip_image020

Abaixo eu apliquei uma formatação simples apenas para diferenciar os dados do nosso relatório (job, bkp, log…)

Utilizei um recurso opcional de alterar a cor da célula de acordo com o valor da linha, assim quando um banco de dados estiver com pouco espaço alocado eu posso visualizar de maneira mais rápida facilitando a tomada de decisão, segue o comando que eu montei.

image

=IIF(
((Fields!Tamanho.Value-Fields!NaoAlocado.Value)/Fields!Tamanho.Value)>0.9,
    "#f28989",
    IIF((((Fields!Tamanho.Value-Fields!NaoAlocado.Value)/Fields!Tamanho.Value)>0.8
            and ((Fields!Tamanho.Value-Fields!NaoAlocado.Value)/Fields!Tamanho.Value) < 0.9),
    "#ffff80",
    "#c0ffc0"))

Você pode adaptar a expressão acima para toda as tabelas.

Interpretação  do código:

Quando o espaço alocado do meu banco de dados for…

  • maior que 90% a linha fica vermelha.
  • maior que 80% e menor que 90% a linha fica amarela.
  • menor que 80% a linha fica verde.

Vejam como ficou o relatório depois de renderizado.

image



 
O projeto de relatórios está disponível pra download.
 
Espero que tenham gostado da dica.
 
Andressa

Criando um relatório no Reporting Services 2008 R2

Olá pessoal, trabalho há alguns anos com o MSSQL2005 e uma das ferramentas que mais utilizo é o Reporting Services, vou iniciar uma série de post com exemplos de relatórios e expressões na versão 2008 R2. Vamos lá.

Clique em iniciar >> Microsoft SQL Server 2008 R2 >> SQL Server Business Intelligence e Development Studio.

image

Irá abir uma janela do Visual Studio, agora clique em File >> New >> Project , selecione Report Server Project, nomeie o projeto e selecione o diretório. Você terá uma tela semelhante a abaixo:

image

Para criar um relatório precisamos antes definir a fonte de dados que o mesmo utilizará, para isso na aba Solution Explorer que está localizada lado direito da imagem acima, agora clique com o botão direito em Shared Data Sources, a seguir selecione a opção Add new data source. Nomeio o seu DataSource, selecione o tipo, nós vamos utilizar o Microsoft Sql Server agora clique em edit para configurar o servidor SQL, as credenciais de acesso e a base com os dados após isso será preenchido automaticamente o campo Connection string.

image >> image

Agora vamos criar o relatório. Clique com o botão direito em Reports que fica abaixo de Shared Data Sources e selecione a opção Add new report, será iniciado o Report wizard.

image

Clique em Next, selecione na opção Shared Data Source o DataSouce que criamos anteriomente, clique em next e digite a query que será utilizada no relatório ou selecione o “QueryBuilder” e monte a sua consulta, eu vou utilizar a base de teste da MS AdventureWorks.

SELECT    ProductID, Name, ProductNumber, Color, ListPrice, Size, Weight
FROM    Production.Product

Selecione a opção Tabular, agora temos que selecionar os campos que serão utlizados.

Pages = os dados são agrupados, a separação dos grupos será feita por páginas. (não utilizaremos nesse relatório)

Group = os dados são agrupados, a separação dos grupos será feita por linhas. (não utilizaremos nesse relatório)

Details = os dados são listados como uma tabela simples. (Selecione todos os campos disponíveis ou que deseja mostrar no relatório)

image

Clique em next e selecione o estilo desejado, next novamente e nomeie o relatório e finish. Vocês terão uma tela semelhante a abaixo:

image

Agora clique fora do relatório e localize a opção Language na aba Properties situada no lado direito da imagem e altere para Pt-BR assim a formatação será adaptada para o Brasil. Caso queira mudar cores, fontes, etc, clique no campo ou selecione os campos desejados e identifique na aba Properties o que deseja alterar.

image

Agora clique em visualizar e pronto você finalizou seu primeiro relatório.

image

O relatório criado está na minha pasta de compartilhamento do SkyDrive

ReportingServices >> Relatorio >> Demo1.rdl