segunda-feira, 27 de dezembro de 2010

SQL Server: Solução reporting services para cópia de segurança

Boa tarde,

Hoje quero compartilhar com meus amigos DBA SQL Server (e porque não analistas de suporte) uma solução que utilizo no dia a dia para visualizar e auditar as cópias de segurança das instâncias do SQL Server.

Abaixo estão as queries que utilizo para analisar cópias de segurança completa, diferenciais e do log, respectivamente.

--Analisa cópia de segurança completas

SELECT Database_Name AS Nome,

CONVERT(VARCHAR(20), Backup_Finish_Date, 120) AS Ultimo,

Backup_Size

FROM dbo.BackupSet(NOLOCK) AS [1]

WHERE Backup_Finish_Date =

(SELECT CONVERT(VARCHAR(20), MAX(Backup_Finish_Date), 120) AS Ultimo

FROM dbo.backupSet(NOLOCK) AS [2]

WHERE [1].database_name = [2].database_name

AND [TYPE] = 'D'

GROUP BY database_name)


--Analisa cópia de segurança diferenciais

(SELECT Database_Name AS Nome,

CONVERT(VARCHAR(20), Backup_Finish_Date, 120) AS Ultimo, Backup_Size

FROM dbo.BackupSet(NOLOCK) AS [1]

WHERE Backup_Finish_Date =

(SELECT CONVERT(VARCHAR(20), MAX(Backup_Finish_Date), 120) AS Ultimo

FROM dbo.backupSet(NOLOCK) AS [2]

WHERE [1].database_name = [2].database_name

AND [TYPE] = 'I'

GROUP BY database_name)


----Analisa cópia de segurança incrementais

(SELECT Database_Name AS Nome,

CONVERT(VARCHAR(20), MAX(Backup_Finish_Date), 120) AS Ultimo

FROM dbo.BackupSet(NOLOCK)

WHERE TYPE = 'L'

GROUP BY Database_Name)

E agora?

Imagino que você pensou que iria executar estas consultas diretamente no SQL Server Management Studio, claro que não. Na verdade as consultas acima são apenas um ‘aperitivo’(rs), pois vou disponibilizar o download da solução do reporting services para você, que unifica as queries, onde as análises serão realizadas.

A única necessidade após o download é abrir a solução no reporting service, criar o dataset(DS), informar na table usada na solução o dataset e executar o deploy.

O legal da solução, é que cada célula da table será colorida na cor vemelha se for identificado a falta de alguma cópia de segurança.

Se você não tiver conhecimentos suficiente para importar a solução para reporting services considere realizar o download da query completa, neste caso você terá que executá-la diretamente na base msdb de cada instância, com as alterações de dia e horário1.

1 Você vai perceber na query que existe a função que faz a análise de dias anteriores, é justamente o ponto chave da query, e isto deve ser modificado seguindo o horário de cópia de segurança das suas bases (instâncias)

segunda-feira, 20 de dezembro de 2010

SQL Server: Utilitário tablediff ('Sincronizando Replicações')

Companheiros(as), hoje vou comentar sobre um utilitário nativo a partir do SQL Server 2000 que possibilita exportar comandos de insert, update e delete para ressincronizar informações de uma publicação/assinatura.

Este utilitário chama-se tablediff*, e pode nos salvar nas situações onde as informações entre objetos publicados e sua réplica estão inconsistentes.

A idéia deste post não é apenas comentar sobre a existência do utilitário, mas possibilitar que você meu amigo(a) possa solucionar seus problemas de maneira mais facilitada.

O script abaixo servirá para automatizar esta atividade, e deve ser executado na base de dados replicada.

Narrando o script: a partir de um SELECT são informados o caminho onde o executável do utilitário é encontrado, os comandos do utilitário que estão separados para o servidor da publicação e replicado, respectivamente (-sourceserver Source Host; -sourcedatabase Source Database; -sourceschema Source Schema Name; -sourcetable Source Table or View; -sourceuser Source Login; -sourcepassword Source Password; -destinationserver Destination Host -destinationdatabase Destination Database, -destinationschema Destination Schema Name, -destinationtable Destination Table or View, -destinationuser Destination Login, -destinationpassword Destination Password), o comando de exportação dos comandos (-f) e a palavra-chave [name] que no momento da execução será substituída pelo nome do objeto replicado.

DECLARE Script

CURSOR FOR

SELECT '"c:\Program Files\Microsoft SQL Server\100\COM\tablediff.exe"

-sourceserver IPservidorpublicacao

-sourcedatabase nomedatabasepublicacao

-sourceschema dbo -sourcetable ' + name + '

-sourceuser usuariodeconexao -sourcepassword passworddeconexao

-destinationserver IPservidorreplica

-destinationdatabase nomedatabasereplica

-destinationschema dbo

-destinationtable ' + name + '

-destinationuser usuariodeconexao

-destinationpassword passworddeconexao

-f F:\Temp\Diff\' + name + '.sql' FROM SYS.tables

DECLARE @Comando VARCHAR(1000)

OPEN Script

FETCH NEXT FROM Script INTO @Comando

WHILE @@FETCH_STATUS = 0

BEGIN

SET @Comando = 'xp_cmdshell '''+@Comando+''''

EXEC(@Comando)

FETCH NEXT FROM Script INTO @Comando

END

CLOSE Script

DEALLOCATE Script

Da maneira que o script está acima, o mesmo vai seguir com a análise de todos os objetos da base replicada, se porventura sua idéia é analisar apenas alguns objetos, sugiro trocar o comandoEXEC(@Comando) porPRINT(@Comando) assim, na execução da query poderá visualizar um comando para cada objeto, e utilizar um(1) a um(1) no processo de análise.

*Para conhecer um pouco mais sobre o utilitário e os comandos utilizados, acessem o sitehttp://msdn.microsoft.com/pt-br/library/ms162843.aspx

Espero que o post seja útil para você em algum momento, afinal automatizamos o processo utilizando CURSOR, para mim já foi de grande utilidade.

Abraços e até mais

Bruno Santos

quinta-feira, 2 de dezembro de 2010

Carreira: Referências para DBA SQL Server

Ontem fiquei super feliz pelo sucesso profissional de um amigo da boa terra (Salvador/BA). Atualmente um excelente DBA Oracle, e que estava analisando a possibilidade de aumentar seus conhecimentos, sua idéia seria estudar o SQL Server da Microsoft.
Meu amigo sabia que sou DBA SQL Server e me fez a seguinte pergunta: Quais boas referências (livros e/ou sites) você indicaria para um profissional iniciar na carreira de DBA SQL Server?

Apresento abaixo minha humilde explicação, quem sabe pode ser útil para vocês:
Meu amigão, vou inicialmente informar alguns livros que conheço, li e me ajudam muito, são de nível básico a intermediário: SQL Server 2005 curso completo: http://migre.me/2EQoe; Implementing a Microsoft SQL Server 2005 Database (MOC – treinamento oficial Microsoft); Maintaining a Microsoft SQL Server 2005 Database (MOC – treinamento oficial Microsoft); Microsoft SQL Server 2005 - Guia de Bolso do Administrador: http://migre.me/2EQuy.
Já os próximos dois(2) são altamente recomendados por especialistas, e mais avançados, são estes: Microsoft SQL Server 2008 Internals: http://migre.me/2EQ0d; Microsoft SQL Server 2008 T-SQL Fundamentals: http://migre.me/2EQ3D.
Outra dica são os treinamentos gratuitos Microsoft: Profissional 5 Estrelas: http://migre.me/2EQ78; Academia Technet: http://migre.me/2EQ8i e Technet Experience: http://migre.me/2EQ9O; aprendi muito nestes treinamentos.
E a última dica é assinar a revista SQL Magazine, existe muita informação e treinamentos de nível intermediário sobre administração do SQL Server e outros databases, o site é este http://migre.me/2EQcN
No próximo post vou comentar um pouco sobre as ferramentas que utilizo no dia a dia para administração do SQL Server, até mais.
Abraços
Bruno Santos