VISUALIZANDO TODO O ESQUEMA DO SERVIDOR

 
Bom, volta e meia precisamos relacionar os objetos existentes em um banco ou em vários bancos ao mesmo tempo. Pensando nisso, elaborei uma procedure para listar os objetos existentes em todos os databases de um servidor.
Fiz essa procedure porque sempre tem alguém perguntando sobre como gerar um catálogo dos objetos.
Nessa procedure estão contempladas tabelas, procedure e triggers, caso seja necessário listar outros tipos de objetos, basta ajustar um pouco o script.
 
Segue script:
 
Para executar a procedure é bastante fácil, basta fornecer alguns parâmetros ou omití-los para busca em todos os bancos:
 
exec pr_esquema                                   —  Seleciona todos os objetos do servidor sem destinção de database.
exec pr_esquema @tipo=2                      — Seleciona todos os objetos por tipo , ex: @tipo=1 tabelas, @tipo=2 Procedures, @tipo=3 Triggers,@tipo=4 Funções, @tipo=5 Views.
exec pr_esquema @database=’ocadio’     — Seleciona todos os objetos por database , ex: @database=’master’
exec pr_esquema @objeto=’produtos’     — Seleciona o objeto especificado.
 
Resumindo, caso seja necessário realizar uma busca em todos os databases do servidor atrás de um objeto específico, execute:
exec pr_esquema @objeto=’produtos’ 
 
 
Tudo bem simples, até a próxima….
 
Emanuel Peixoto.
 
 
 
Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube 

Log Shipping (Backups e Restores Customizados)

Bom, hoje, irei postar aqui como criar um processo de alta disponibilidade utilizando o log shipping.
O QUE É O LOG SHIPPING?
O Log Shipping é um recurso para proporcionar alta disponibilidade de databases. Esse recurso acompanha o SQL Server desde a versão 2000.  O conceito por trás do Log Shipping é bastente simples, consiste apenas nos backups dos logs de transações e restores desses backups de log no servidor de destino, este por sua vez, ficará em STANDBY aguardando o momento para ser utilizado, em caso de falha do servidor principal.
VANTAGENS
– Pode ser configurado em todas as verções do SQL a partir do SQL 2000.
– Permiter disponibilizar um ambiente de alta disponibilidade com baixo custo.
– Fácil de configurar e manter.
– Se bem implementado, fornecerá boa confiança dos serviço de redundância
DESVANTAGENS
– O Log Shipping não realiza um failover automático, ou seja, em caso de falha do servidor principal, existirá a intervenção do DBA para tornar o servidor STANDBY em Online.
– Existirá perda de informações dos usuários das aplicações, a perda dependerá da periodicidade em que são replicados os logs de transações.
PASSOS PARA CONFIGURAR O LOG SHIPPING:
– Garanta um Hardware compatível com a carga que será aplicada em caso de o servidor STANDBY ser ativado como online.
– Crie ou replique os logins existentes no servidor principal para o STANDBY.
– Configure o database com o recovery model como FULL.(alter database [database_name] set recovery full)
– Crie uma rotina de backup FULL + LOGS ou FULL + DIFERENCIAL + LOGS no servidor principal.
– Copie esses backups em um local compartilhado existente no servidor STANDBY.
– Crie uma rotina de restores dos backups criados.
Para os backups e restores estou disponibilizando 2 scripts criados para a realização customizada desses procedimentos.
Como boa prática de política de backup e restore, irei sugerir a realização de backups na seguinte ordem.
1 – Realização de um backup full diário em horário definido na sua política de backup.
2 – Realização de backups diferenciais intercalados durante o dia.
3 – Realização de backups de logs em intervá-los curtos, exemplo: 5 minutos.
Os scripts de backup e restore são:
Backup
Restore
Como recomendação, segue sugestão de comandos de backup e restore utilizando os scripts postados, após a criação das procedures existentes nos scripts, basta criar jobs para os tipo de backups utilizando os parâmetros abaixo:
BACKUP FULL
exec pr_backup @database=’teste’,                                      — Nome do databsae
@localbackup =’\SERVIDORCOMPARTILHAMENTO’,            — Local do backup, ex: c:backups’
@tipoBackup=1
— Tipo de backup: 1 para FULL, 2 para DIFF, 3 para LOG
BACKUP DIFERENCIAL
exec pr_backup @database=’teste’,                                      — Nome do databsae
@localbackup =’\SERVIDORCOMPARTILHAMENTO’,            — Local do backup, ex: c:backups’
@tipoBackup=2
— Tipo de backup: 1 para FULL, 2 para DIFF, 3 para LOG
BACKUP DE LOG
exec pr_backup @database=’teste’,                                      — Nome do databsae
@localbackup =’\SERVIDORCOMPARTILHAMENTO’,             — Local do backup, ex: c:backups’
@tipoBackup=3                                                                   — Tipo de backup: 1 para FULL, 2 para DIFF, 3 para LOG
Comandos para a criação dos jobs de restore no servidor standby
RESTORE FULL
exec pr_restore @database=’teste’,                                      — Nome do database a ser restaurado.
@localrestore =’\SERVIDORCOMPARTILHAMENTO’,            — Local dos arquivos de backup a serem restaurados, ex: c:backups’
@tiporestore=1                                                                   — Tipo de restore: 1 para FULL, 2 para DIFF, 3 para LOG
RESTORE DIFERENCIAL
exec pr_restore @database=’teste’,                                      — Nome do database a ser restaurado.
@localrestore =’\SERVIDORCOMPARTILHAMENTO’,            — Local dos arquivos de backup a serem restaurados, ex: c:backups’
@tiporestore=2
RESTORE DE LOG
exec pr_restore @database=’teste’,                                      — Nome do database a ser restaurado.
@localrestore =’\SERVIDORCOMPARTILHAMENTO’,            — Local dos arquivos de backup a serem restaurados, ex: c:backups’
@tiporestore=3
NOTA IMPORTANTE:
A rotina de restore realiza o restore do último backup full, do último diferencial e restaura os backups de logs na sequência, ou seja, do primeiro ao último.
Em resumo, se no restore for usado o parâmetro @tiporestore=1 ou @tiporestore=2 , serão restaurados os últimos full e diferencial, respectivamente.
Caso o parâmetro seja @tiporestore=3 , a cada execução será verificada a existência de novos backups de logs no local especificado no parâmetro @localrestore, então, para esse job basta deixar ele executando de tempos em tempos, se o backup de log existir será restaurado.
Como mencionado anteriormente, basta criar os jobs de backups e apontar os jobs para serem armazenados em um compartilhamento existente no servidor STANDBY e depois criar os jobs de restore no servidor STANDBY.
A rotina de restore é inteligente o suficiente para restaurar os backups na ordem correta, bastando que, primeiramente, seja realizado um restore full, depois um difirencial se existir, e os de log durante toda a existência do servidor STANDBY.
Basta rodar a procedure de restore com o parâmetro @tiporestore=3 (Log), e pronto, se os arquivos de backups estiverem disponíveis, os restores serão executados automaticamente sem reaplicar os que já foram restaurados.
Espero que essa rotina seja útil para alguém.
Qualquer dúvida ou sugestão, estou à disposição.
Até a próxima…
Abr, Emanuel Peixoto.
Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube 

Troca de Licença do SQL Server sem reinstalação do Produto‏

Irei abordar um assunto que é pouco conhecido a respeito de licenciamento do SQL Server:
 
Como alterar informações de chave do produto e infomações da conpanhia proprietária do produto, após o produto já estar instalado?
 
O SQL Server, após a instalação, não possui um mecanismo de gerenciamento de licenças que permita modificar a chave fornecida durante a instalação do produto, bem como informações da sua empresa.
 
Então, digamos que o SQL Server tenha sido instalado em vários servidores com um mesmo serial e, por uma política da sua empresa, você deverá fornecer os seriais corretos para cada servidor.
 
Apesar disso ser uma dor de cabeça para muitas empresas, essa é uma preocupação desnecessária, pois, uma vez que a empresa possua a licença do produto, não existe ilegalidade mesmo que os servidores estejam com informações incorretas.
 
Já ví muitos especialistas recomendarem a reinstalação do produto para essa adequação, mas, acho essa alternativa extermamente desnecessária, uma vez que você poderá fornecer as informações sobre licenciamento sem expor o seu ambiente a um trabalho tão grande.
 
Então, como fornecer essas informações? 
 
Legalmente falando, mesmo que o seu servidor possua informações incorretas sobre licenciamento, é possível alterar essas informações via registro.
 
Essas alterações não geram problemas em relação ao seu produto, pois, são chaves com a finalidade informativa sobre o produto.

Para visualizar as informações sobre licenciamento do SQL Server, temos que recorrer ao registro, pois, não é como nas informações de licenciamento do WINDOWS, que você clica com o botão direito do mouse em meu computador e vai nas propriedades do mesmo.
 
Com o SQL Server é diferente, se você deseja saber essas informações, elas estão no Registro, junto com as chaves referentes ao Setup do produto em:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionInstallerUserDataPERFIL_INSTALADORProductsIDENTIFICADOR _PRODUTOInstallProperties*.*

Na chave "products" você encontra todos os produtos que foram instalados no servidor.
Encontre os valores errados e troque-os.
ex: em "regcompany" forneça o nome adequado da sua empresa, em "productID", forneça as informações corretas do código do produto. Note que o Id do produto não é a chave, a chave serve para validar a legalidade do produto e o seu código é apenas uma identicação do mesmo.

Essas informações também são encontradas nas chaves da engine do SQL Server, mas a verdade é que suas alterações  são desnecessárias, mas, se for uma necessidade da sua empresa, seguem caminhos.

2000
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL Server80Registration

2005
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL.1MSSQLServerCurrentVersion

2008
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerMSSQL10CurrentVersion

Espero ter colaborado!

Até mais,
Emanuel Peixoto.
Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube 

COMO MONITORAR FALHAS DE CONECTIVIDADE USANDO O SQL SERVER.

Hoje, irei dar uma dica de como usar o SQL Server para monitorar as indisponibilidades de rede existentes em nosso servidor.
É bastante comum nos depararmos com situações onde precisamos descobrir se um determinado problema está relacionado com uma indisponibilidade de rede momentânea ou não.
Existem diversas ferramentas para realização de monitoramento de recursos de rede, uma delas é o hostmonitor. Existem outras dezenas de ferramentas, mas se você não dispõe de uma ferramenta de monitoramento ou, simplesmente, deseja realizar um simples teste com o próprio SQL Server, então, você vai gostar dessa dica.
Bom, para monitorar eventuais problemas de conectividade em uma instância com o SQL Server, podemos realizar um teste simples usando o SSMS ou o QA (Query analyze), para isso, podemos executar os seguintes comandos:
while 1 <> 2
begin
select getdate()
waitfor delay ’00:00:01
end
Executando os comandos acima, o SQL Server irá entrar no loop cada vez que houver uma indisponibilidade de link e irá esperar 1 segundo para executar nova verificação. No script acima, quando houver uma indisponibilidade, será logada a data e hora da indisponibilidade, mas, você pode usar a imaginação e adaptar o script para realizar outas tarefas, como alertas, logar as informações de indisponibilidade em tabela ou em arquivos….
No Exemplo abaixo(Tela 1.1), vemos o script em ação:
Podemos constatar que, quando houve indisponibilidade do link,  foi registrado um evento como resultado de um simples select. Vale resaltar que o script ficará infinitamente em execução até a interrupção do usuário ou alteração da lógica do script.
(Tela 1.1)
Para automatizar nosso monitoramento, podemos criar um arquivo contendo nosso script de verificação de indisponibilidade e juntamente com o comando SQLCMD ou OSQL, conectar a algum servidor para executar o nosso script.
No exemplo abaixo, podemos ver que utilizo os seguintes parâmetros no comando SQLCMD(Tela 1.2):
-S, para informar o nome do servidor.
-E, para informar que a conexão com o servidor será como “trust connection”, ou seja, com o usuário que estou logado.
-i, para informar o arquivo de “input”, que no nosso caso é o script de monitoramento(“C:monitoramentomonitora.sql”).
-o, para informar um arquivo de saída, ou seja, o nosso arquivo de log dos eventos de indisponibilidade
(Tela 1.2)
Bom, espero que tenha ficado clara e objetiva essa demonstração.
Até a próxima!
Abraço, Emanuel Peixoto
Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube 

COMO REALIZAR UM DEPLOY DE VÁRIOS PACOTES SSIS PARA O MSDB USANDO O DEPLOYMENT UTILITY

É como muito prazer que estou fazendo essa demonstração, devido a uma dúvida que surgiu no fórum do MSDN (http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=4227104&SiteID=21).
A dúvida seria a respeito de importar para o MDSB vários pacotes criados em um projeto do BIDS.
Bom, a solução para esse caso é a utilização do utilitário de deploy do BIDS(DeploymentUtility)
Segue um passo-a-passo que preparei:
No nosso exemplo, iremos realizar o deploy dos pacotes existentes em um projeto de teste do BIDS(Tela 1.1)
Tela 1.1
O primeiro passo é tornar a funcionalidade de deployment “ativada”, para isso, devemos recorrer às propriedades do nosso projeto e ativá-las setando a opção “createDeploymentUtility” como “True” e configurar também o local onde serão armazenados os arquivos com os metadados dos pacotes e o arquivo de manifeto.
Após habilitarmos esse recurso de deploy, podemos realizar um rebuild em nosso projeto para que seja criado o manifestfile, juntamente com os arquivos *.dtsx do nosso projeto (Tela 1.3).
Tela 1.3
Feito isso, podemos constatar que foram gerados os arquivos de deploy no destino desejado, ou seja, no destino configurado nas propriedade do DeploymentUtility do BIDS.(Tela 1.4).
Tela 1.4
Pronto, agora basta executar o arquivo de manifesto para dar início ao deploy.
No nosso caso, o utilitário criou o arquivo “Teste deploy MSDB.SSISDeploymentManifest”, ou seja, o arquivo de manifesto sempre será criado tendo como prefixo o nome do projeto.
Ao executá-lo, irá iniciar o utilitário de deploy (tela 1.5).
Tela 1.5
Nesse ponto da instalação, poderemos escolher onde desejamos armazenar nossos pacotes, no nosso caso, escolheremos realizar o deploy dos pacotes no SQL Server.
Feito isso, o próximo passo é definir os parâmetros de conexão, como nome do servidor, credenciais, Bla,bla,blá…. (Tela 1.6)
Tela 1.6
A partir de agora, podemos avançar e aguardar o wizard finalizar.
Ao logarmos no SQL Server Integration Services através do SSMS, iremos verificar que nossos pacotes foram importados com sucesso (Tela 1.7)
Tela 1.7
Pronto, agora basta aplicar os conceitos aprendidos nesse exemplo para criar rotinas de deploy.
Até a proxima….
Emanuel Peixoto.
Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube