LOGIN:

iMasters | Por uma internet mais criativa e dinâmica

Feeds

SQL Server

Feed da seção SQL Server

Newsletter de SQL Server


Quinta-feira, 20/11/2008 - 10:00 - Por Laerte Poltronieri Junior
Seções relacionadas:

PowerShell e o dia a dia do DBA SQL SERVER

Bom, pessoal, neste artigo vamos ver um recurso que foi incorporado ao SQL SERVER 2008, o Powershell, que nos ajudará numa tarefa diária que alguns de nós temos: checar a conectividade dos linked servers de todos os servidores

Vou fazer uma breve introdução ao PS (Powershell - a partir de agora chamarei assim) e colocarei alguns links que acho interessante para quem está iniciando nesta tecnologia.

O PS é um poderosíssimo Shell que nos permite a criação de scripts (uma "linguagem" de criação de scripts) sendo totalmente baseado em .NET Framework que é a base do SO Windows. A facilidade que temos no gerenciamento do SO tanto em máquinas remotas como local é completamente simples e amigável.

Ele é desenhado para ser usado especialmente por Administradores de Redes/Sistemas/Ambientes e agora (eu digo agora pois ficou mais simples trabalhar com o PS do SQL SERVER, mas poderíamos muito bem trabalhar com o PS e a SMO antes do SQL Server 2008) vem incorporado no SQL SERVER 2008 aumentando assim também para Administradores de Banco de Dados SQL SERVER.

A diferença básica do PS do SQL SERVER (sqlps.exe) para o PS, digamos normal, se encontra no fato de que no PSSQL é iniciada uma sessão PS com os cmdlets e provedor do SQL SERVER POWERSHELL já carregados e registrados.

O PSSQL (SQL SERVER POWERSHELL) possui nomenclaturas padronizadas para os comandos(cmdltes) e é a junção de um verbo (write,new,out..) mais um nome (host,content...) e sendo ou não seguido de parâmetros (commom parameters).

A grande sacada de se trabalhar com o PS no SQL SERVER é saber usar a SMO e XML. Meus scripts de checagem são 99% baseados na SMO.

Exemplo :

Get-content

Write-host

Bom, gente, pra quem quiser saber mais sobre o PS segue alguns links que me ajudaram e me ajudam diariamente.

http://blogs.microsoft.co.il/blogs/ScriptFanatic

http://www.andersonpatricio.org

http://blogs.technet.com/dbordini

http://www.computerperformance.co.uk/powershell/powershell_intro.htm

http://technet.microsoft.com/en-us/library/bb978526.aspx

Vamos ao nosso intuito que é a checagem dos linked serves em vários servidores.

Inicialmente criaremos uma pasta chamada c:\dadosps e nela colocaremos um .txt contendo o nome dos nossos servidores. Caso use uma ou várias instâncias nomeadas, coloque-as também.

Definiremos um Servidor e Database Centrais, que receberão os dados. Vamos usar o Servidor1\MSSQLSERVER_1 e o Database DBA. Também criaremos um schema chamado DIARIO para receber a tabela e facilitar a atribuição de permissões além de segmentar.

Criando o Schema

USE [DBA]

GO


/****** Object:  Schema [Diario]    Script Date: 11/10/2008 18:04:53 ******/

CREATE SCHEMA [Diario] AUTHORIZATION [dbo]

GO

Criando a Tabela que receberá os dados (os linkedservers que deram erro).

USE [DBA]

GO

/****** Object:  Table [Diario].[tb_LinkeDServersErro]    Script Date: 11/10/2008 18:04:33 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [Diario].[tb_LinkedServersErro](

      [Servidor] [varchar](50) NULL,

      [Data] [datetime] NULL,

      [NomeLinkedServer] [varchar](100) NULL,

      [MsgErro] [varchar](500) NULL

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Pronto! Já temos o que precisamos para começar a trabalhar. Vou colocar primeiramente um script simples da checagem, depois passaremos para um complexo com tratamento de erros, gravação do log num arquivo e erro no EventViewer, verificação de ping dos servidores e se o serviço do SQL (por instância cadastrada no TXT) está online e envio de email.

Script 1

Como o método testconnection não me retorna valores, temos que trabalhar com o erro que é gerado caso algum linked server esteja sem conectividade ou com problemas.

Vamos entender este script

Link: http://msdn.microsoft.com/pt-br/library/cc281720.aspx

Prontinho, desta maneira temos a posição dos linked servers de todos os servidores.

Vamos rodar este script ?

Primeiramente vamos startar o PSSQL. Botão direito em cima de qualquer objeto do servidor no SSMS e escolha Start Powershell

Após isso copiar o script (copy-paste) e colar na janela do PSSQL e vamos rodar o script.

Podemos também gravá-lo num arquivo .PS1. Abra o notepad, cole o script lá e salve-o na pasta c:\dadosps como TestLSError.PS1 (lembre-se de no notepad, quando for gravar, colocar no "Salvar como tipo" como todos).

Agora vamos automatizar o processo num job?

Após o arquivo TestLSError.PS1 devidamente criado na pasta c:\dadosps, crie um novo job e no step no Type coloque Powershell e na janela de comando a chamada do arquivo PS1.

\dadosps\TestLSError.ps1

Pronto..agora só Schedular e chegando de manhã já temos a posição atualizada dos linked servers.

Como eu disse anteriormente, este script teoricamente não está pronto para ser usado em produção. Teríamos que tratar os erros tipo algum servidor do TXT estar fora de propósito, o serviço do SQL Server estar offline também por algum motivo programado ou até não, mas teríamos que fazer estes testes.No meu blog além dos meus avanços com PS e o SQL SERVER tenho exemplo de uma abordagem profissional deste mesmo script e outros que estou usando no dia a dia.

http://laertejuniordba.spaces.live.com/

Um Grande Abraço a todos!

Links Relacionados

http://blogs.msdn.com/dtjones/default.aspx

http://blogs.msdn.com/powershell/

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

Conclusão

Como vimos, o Powershell é uma potente ferramenta que temos para gerenciamento de múltiplos ambientes. Em junção com a SMO e XML se torna uma das mais poderosas neste quesito.

Todos os artigos de Laerte Poltronieri Junior

0 comentários publicados

Poste um comentário


Os textos publicados neste espaço são de responsabilidade única de seus autores (colunistas e leitores) e podem não expressar necessariamente a opinião do iMasters.

Sobre o autor

Laerte Poltronieri Junior é DBA SQL SERVER SÊNIOR e atua no mercado a mais de 20 anos, sendo 10 com SQL Server e tem certificação MCDBA SQL 2000. Tem estudado muito o gerenciamento de múltiplos servidores SQL SERVER com o powershell e é fã de scripts e códigos.


Indique para um amigo

captcha

TI SHOP Produtos iMasters

  • Lançamento: CD-ROM Treinamento Aplicado de SQL - Lançamento! Treinamento Aplicado de SQL - Aprenda a trabalhar com SQL com bancos de dados Oracle e SQL Server. São mais de 100 tópicos explicados por Mauro Pichilliani, um articulistas mais lidos do iMasters. Aproveite! Apenas R$ 69,90 no TI SHOP.
  • Lançamento: Livro iMasters "O Encontro de 2 Mundos"- Este livro conta com 56 crônicas de profissionais mais admirados e influentes do mercado brasileiro de Internet. Aproveite o preço especial para leitores do iMasters. Apenas R$ 40,00 e envio imediato!
  • DVD Curso Completo de Photoshop - Do conceito à finalização Lançamento! Curso Completo de Photoshop, em DVD, com mais de 230 aulas dividas em 4 módulos: conceito, básico, avançado e finalização. Apenas R$ 69,50 no TI SHOP - Frete com 50% de desconto
  • DVD Javascript Starter - Curso Completo Com mais de 9 horas de vídeo-aulas, é um curso completo sobre Javascript. Ideal para quem deseja aprender a linguagem. Apenas R$ 64,90 no TI SHOP - Frete com 50% de desconto!

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.