SQL Server - Extended Events


Olá pessoal tudo certo? 

Sabemos que a cada nova versão do SQL Server, diversas melhorias são feitas a fim de tornar mais fácil o trabalho do DBA perante a monitoração de um ambiente e resolução de problemas. Tivemos melhorias no SQLDIAG e no SQL Server Profiler, houve o surgimento das DMV’s e DMF’s no SQL Server 2005 e finalmente no SQL Server 2008, surgiu a funcionalidade que irei abordar neste post chamada Extended Events. 

O que são? 

 Extended Events é um sistema de manipulação de eventos que permite ao DBA coletar as informações que ele julgar necessárias para ajudá-lo a resolver determinado problema, permitindo ainda em alguns cenários que ele relacione os dados obtidos do SQL Server com os dados do sistema operacional através do Event Tracing for Windows, mais conhecido como ETW.


 Para quem quiser maiores detalhes sobre a arquitetura do Extended Events, vocês podem conferir o excelente whitepaper do Jonathan Kehayias que usei como referência na escrita deste post: http://msdn.microsoft.com/en-us/library/dd822788.aspx. 
 

Ná prática... 

 É importante dizer que no SQL Server 2008 nós não tínhamos uma interface gráfica que permitisse configurar uma sessão de Extended Events, o DBA precisava escrever queries complexas para fazer esta configuração. No SQL Server 2012 a vida ficou mais fácil, uma interface está disponível para esta finalidade, e pode ser acessada através do Management Studio, como mostra a figura abaixo:


 Vamos criar uma sessão simples simples que monitore a criação de novas bases de dados, no meu caso estou utilizando o SQL Server 2014 CTP1. 

1. Expanda a parte de Extended Events, em “Sessions”, clique com o direito e selecione “New Session Wizard”:


2. Em “Session Name”, vamos chamar a coleta de “NewDB”, clique em “Next”:
 

3. Deixe selecionado “Do not use a template”, clique em “Next”:


4. Localize o evento chamado “database_created”, e clique em “>” para adicioná-lo, depois clique em “Next”:

5. Selecione os campos que serão coletados no evento: “database_id”, “database_name” e “session_id”. Clique em “Next”:

6. Não é necessário aplicar nenhum filtro ou armazenamento dos dados, clique em “Next”.

7. Vamos configurar um arquivo de extensão “xel” onde serão gravados os dados coletados, no caso podemos deixar no diretório “c:\” com o nome “NewDBXevent.xel”, em “Maximum file size” deixe em 1 e a unidade em “GB”, marque a opção “Enable file rollover” e por último, em “Maximum number of files:” deixe em 5:


8. Em “Summary” confira se está tudo de acordo com o que configuramos e clique em “Finish”:

9. Na última tela, selecione a opção “Start the event session immediately after session creation” e clique em “Close”:

10. Agora que nossa coleta usando Extended Events foi configurada, abra uma janela de query e crie uma base de dados chamada “TESTEDB”:


CREATE DATABASE TESTEDB 
GO
 
11. Expanda a coleta que acabamos de criar e clique em “View Target Data...” em nosso pacote "xel" igual na imagem abaixo:


12. Perceba que o nosso evento de criação da base foi coletado com sucesso:

13. Apenas para concluir, o script para a criação desta coleta ficaria da seguinte forma: 

CREATE EVENT SESSION [NewDB] ON SERVER
ADD EVENT sqlserver.database_created(
ACTION(sqlserver.database_id,sqlserver.database_name,sqlserver.session_id))
ADD TARGET package0.event_file(SET filename=N'C:\NewDBXevent.xel')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO

Referências utilizadas para a criação deste post:  


Bom pessoal, é isso, espero que tenham gostado do post! Um abraço!

CRIANDO UM CLUSTER DO SQL SERVER 2014 + WINDOWS SERVER 2008 R2 EM HYPER-V

Pessoal, tranquilo? Espero que sim! 

Bom, antes de qualquer coisa quero dizer que estou muito contente de finalmente estar postando algo mais detalhado sobre o SQL Server 2014. Neste post irei mostrar como se cria um ambiente completo de alta disponibilidade em Hyper-V utilizando um cluster Microsoft de 2 nós com Domain Controller e Storage, rodando o SQL Server 2014 CTP em cima do Windows Server 2008 R2. Apesar de já ter revisado o post peço que me informem sobre qualquer coisa que não estiver claro ou estiver incorreto. Muito obrigado!

PRÉ REQUISITOS:

-ROLE HYPER-V HABILITADA NA MÁQUINA QUE IRA MANTER O AMBIENTE VIRTUAL.
-ISO DO WINDOWS SERVER 2008 R2.
-ISO DO SQL SERVER 2014 CTP.
-MÍNIMO DE 512 RAM POR MÁQUINA VIRTUAL.

Obs.: No post estou supondo que você já sabe instalar o Windows Server 2008 R2, portanto me atentei mais ao que deve ser configurado e habilitado nas máquinas virtuais depois que o sistema operacional já estiver instalado.


MÁQUINA VIRTUAL (DOMAIN CONTROLLER e SIMULADOR STORAGE)

Sistema Operacional: Windows Server 2008 R2 SP1

Roles: Habilitar Active Directory Domain Services
Features: Habilitar .NET 3.5.1

Nas configurações do adaptador de rede configure o IPv4 conforme abaixo:

IP Address: 10.0.0.2
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.0.2

Preferred DNS Server: 10.0.0.2
Alternate DNS Server: Deixe em branco.

MÁQUINA VIRTUAL (NÓ 1)

Sistema Operacional: Windows Server 2008 R2 SP1

Roles: Habilitar Hyper-V, faça isso subindo um prompt de comando com privilégios de administrador e execute os comandos abaixo na sequência:

a) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V

Obs.: Não reinicie ainda o servidor.

b) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V-Management-Clients

Obs.: Agora pode reiniciar o servidor.

Features: Habilitar .NET 3.5.1

Nas configurações do adaptador de rede configure o IPv4 conforme abaixo:

IP Address: 10.0.0.3
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.0.2

Preferred DNS Server: 10.0.0.2
Alternate DNS Server: Deixe em branco.

MÁQUINA VIRTUAL (NÓ 2)

Sistema Operacional: Windows Server 2008 R2 SP1

Roles: Habilitar Hyper-V, faça isso subindo um prompt de comando com privilégios de administrador e execute os comandos abaixo na sequência:

a) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V

Obs.: Não reinicie ainda o servidor.

b) DISM /Online /Enable-Feature /FeatureName: Microsoft-Hyper-V-Management-Clients

Obs.: Agora pode reiniciar o servidor.

Features: Habilitar .NET 3.5.1

Nas configurações do adaptador de rede configure o IPv4 conforme abaixo:

IP Address: 10.0.0.4
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.0.2

Preferred DNS Server: 10.0.0.2
Alternate DNS Server: Deixe em branco.

CONFIGURANDO O STORAGE:

Iremos precisar de uma ferramenta chamada iSCSI Software Target 3.3, você pode baixar a mesma através do link abaixo:


Gere uma ISO dela e carregue ela na VM, quando descompactar os arquivos, você irá observar que um deles possui mais de 5 MB, este é o arquivo que você deverá instalar no servidor.

Uma vez instalada, navegue até as ferramentas administrativas, vamos criar agora nossos discos a serem usados pelo cluster.

Clique com o direito em iSCSI Targets, Next, escolha um nome da sua preferência, Next, nesta etapa temos que definir quais servidores poderão acessar e utilizar os discos em nosso storage, clique em "Advanced...", "Add...", No identifier Type troque para "Ip Address", e em valor adicione o IP dos nossos nós, no caso 10.0.0.3 e 10.0.0.4, Next, Finish.

Agora vamos criar nossos discos virtuais, vamos criar dois discos, um para ser o Witness/Quorum do cluster, e um para armazenar os arquivos de dados e log das bases do SQL Server que será posteriormente instalado:

Tamanho disco Quorum: 1 GB
Tamanho disco Dados: 10 GB

Para os dois discos acima faça o procedimento a seguir: clique com o direito no Target que você acabou de criar, e clique em "Create Virtual Disk For iSCSI Target", Next, de o caminho do novo disco virtual, nome dele e extensão deixe como "VHD", algo como "c:\meus discos\dados.vhd", se o caminho não existir não se preocupe que ele irá criar, Next, agora defina seu tamanho em MB (Conforme citado acima), Next, a descrição é opcional, Next, Finish.

CONFIGURANDO O DOMAIN CONTROLLER (MESMA VM DO STORAGE):

Vamos agora criar nosso domínio, vá no menu iniciar, executar e digite DCPROMO.EXE, aguarde o wizard surgir, Next, Next, selecione "Create a new domain in a new forest", Next, agora você devera inserir o nome do seu novo domínio, no meu caso utilizei “SQL2014.net”, Next, vamos agora escolher o nível funcional da Floresta, escolha "Windows Server 2008 R2", Next, confirme que o "DNS Server" está selecionado, Next, um “warning” ira aparecer com relação ao DNS, apenas clique em "Yes", na próxima etapa de diretórios apenas deixe como está e clique em Next, defina agora a senha da conta do administrador do Domínio, clique em Next, clique em Next mais uma vez, aguarde a instalação e configuração do novo domínio, perceba que você tem como marcar a opção para que um boot seja feito automaticamente ao término da mesma, fica a seu critério, contudo o boot deverá ser feito. Após o boot seu domínio já estará configurado e pronto para ser utilizado!

COLOCANDO OS NÓS NO DOMINIO.

Primeiramente vamos colocar nossos servidores em domínio, pois do contrário não conseguiremos trabalhar com eles em modo cluster. Execute nos dois servidores. Clique com o direito em Computer, “Properties”, "Change Settings",  "Change", mude o nome do computador para algo mais simples, no meu caso utilizei a nomenclatura Win2k8-1 e Win2k8-2 e em Domain especifique o nome do domínio que você criou, no meu caso, “SQL2014”, clique em “OK”, se a comunicação das máquinas estiver ok (Nó x DC), será solicitado um usuário e senha que tenha privilégio administrativo no domínio para configurar a máquina, insira o usuário e senha, confirme e aguarde, deverá aparecer algo como "Bem Vindo ao domínio XXX", reinicie a máquina conforme solicitado e quando ela subir faça o login já usando uma conta do domínio.

ASSOCIANDO DISCOS DO STORAGE AOS NÓS DO CLUSTER.

Teremos que associar os discos do storage em nossos dois nós, para isso, navegue até as Ferramentas Administrativas, localize o "iSCSI Initiator", em "Target" digite o IP do Storage e clique em "Quick Connect", se der tudo certo, uma nova janela irá abrir com uma mensagem dizendo que a conexão foi bem sucedida, clique em "Done", vá na aba "Volumes and Devices" e clique em "Auto Configure", se tudo der certo seus discos do storage serão listados na "Volume List", clique em "Apply" e feche o "iSCSI Initiator".

INICIANDO DISCOS - EXECUTE APENAS EM UM DOS NÓS.

Escolha um dos nós para este procedimento, ele não pode ser feito nos dois nós, clique com o direito em Computador, "Manage", expanda "Storage" e clique em "Disk Management", perceba que os discos criados no storage estarão lá, coloque eles online, inicialize os mesmos como GPT, crie o novo volume com os devidos tamanhos sem associar uma letra a eles.

VALIDANDO A CONFIGURAÇÃO E CRIANDO O CLUSTER.

Agora vamos configurar os nós para que eles suportem trabalhar em cluster, execute nos dois nós. Abra o Server Manager, vá até Features e habilite a feature chamada "Failover Clustering".

VALIDANDO A CONFIGURAÇÃO DO CLUSTER.

Instalada a feature do passo anterior em ambos nós, vamos validar nosso cluster. Em um dos nós, vá ao menu iniciar, executar, e digite cluadmin.msc ou navegue até as ferramentas administrativas e abra o "Failover Cluster Manager", clique com o direito em "Failover Cluster Manager", clique em "Validade a Configuration...", Next, digite o nome do nó 1 no campo "Enter Server Name:" ou então faça uma busca pelo nome do mesmo no domínio clicando em "Browse...", adicionado o nome do nó 1, faça o mesmo para o nó 2, depois de adicionados os dois nós, clique em Next, selecione “Run all tests (reccomended)”, Next, o “wizard” irá verificar se os discos estão offline para os testes serem executados, se algum disco estiver online você tem a opção de deixar eles desta forma e os testes nos mesmos não serão executados ou você pode escolher a segunda opção, para que os discos sejam colocados em offline e os testes sejam então executados nos mesmos, escolhida uma delas clique em Next, a próxima tela é apenas um resumo das escolhas anteriores, clique em Next, aguarde a validação, ao término da mesma clique em Finish.

CRIANDO O CLUSTER.

Agora vamos de fato criar nosso cluster. Em um dos nós, vá ao menu iniciar, executar, e digite cluadmin.msc ou navegue até as ferramentas administrativas e abra o "Failover Cluster Manager", clique com o direito em "Failover Cluster Manager", clique em "Create Cluster...", Next, digite o nome do nó 1 no campo "Enter Server Name:" ou então faça uma busca pelo nome do mesmo no domínio clicando em "Browse...", adicionado o nome do nó 1, faça o mesmo para o nó 2, depois de adicionados os dois nós, clique em Next, defina um IP para o cluster, utilizei o IP 10.0.0.5, Next, Next, Finish. Aguarde o término da configuração do cluster. Automaticamente o cluster ira varrer o storage em busca do disco com menor capacidade para que ele seja o Quorum, caso sejam discos de mesmo tamanho ele irá utilizar a ordem de apresentação do discos como critério.

Em Storage, verifique que os discos estarão lá, para o disco que não é o Quorum, configure uma letra para ele, feito isso perceba que ele irá aparecer em Computador.

SETUP DO SQL SERVER 2014 CTP.

1. Insira a mídia do SQL Server 2014 CTP no nó win2k8-1.
2. Rode o “setup.exe”.
3. Na esquerda, clique em “Installation” > “New SQL Server failover cluster installation”.
4. Na tela Setup “Support Rules”, clique em “OK” após as verificações.
5. Na tela “Product Updates” desmarque o “Include SQL Server product updates” e clique em “Next”.
6. Na tela “Install Setup Files”, aguarde o término da instalação.
7. Na tela “Setup Support Rules”, clique em “Next” após as verificações.
8. Na tela “Product Key”, em “Specify a free edition:” selecione “Evaluation” e clique em “Next”.
9. Na tela “License Terms”, selecione “I accept the license terms”, desmarque a segunda opção e clique em “Next”.
10. Na tela “Setup Role”, selecione “SQL Server Feature Installation” e clique em “Next”.
11. Na tela de “Feature Selection”, escolha as features que desejár, no meu caso escolhi “Database Engine Services”, “Client Tools Connectivity”, “Documentation Components” e “Management Tools – Basic”. Para os diretórios mantive o padrão “C:\Program Files\Microsoft SQL Server\” e “C:\Program Files (x86)\microsoft SQL Server”, clique em “Next”.
12. Na tela “Feature Rules”, aguarde as verificações e clique em “Next”.
13. Na tela “Instance Configuration”, em “SQL Server Network Name:” defina o nome do seu SQL Server na rede, no meu caso irei utilizar “CLUSQL14”, selecione “Default instance” para a instalação de uma instância “default” ou “Named Instance:” para a instalação de uma instância nomeada, no meu caso irei utilizar nomeada e minha instância irá se chamar “MSSQL2014”, em “Instance root directory:”, deixei o diretório padrão “C:\Program Files\Microsof SQL Server”, clique em “Next”.
14. Na tela “Disk Space Requirements” aguarde as verificações e clique em “Next”.
15. Na tela “Cluster Resource Group”, em “SQL Server cluster resource group name:” coloque qual será o nome do grupo do SQL no cluster, no meu caso irei colocar “SQL14GROUP”, clique em “Next”.
16. Na tela “Cluster Disk Selection”, selecione os discos a serem utilizados pelo cluster, no caso deste guia, teremos apenas um disco para ser selecionado, clique em “Next”.
17. Na tela “Cluster Network Configuration”, marque “IPv4” e em “Address” digite qual será o IP do SQL Server, no caso irei utilizar “10.0.0.6”, clique em “Next”.
18. Na tela “Server Configuration”, defina as contas a serem utilizadas para os serviços, irei utilizar uma conta que criei como “domain admin” em meu domínio, chamada SQLUSER, coloque a senha da conta e mude para a aba “Collation”, defina qual será o “collation” da sua instância, irei utilizar “SQL_Latin1_General_CP1_CI_AI”, clique em “Next”.
19. Na tela “Database Engine Configuration”, defina a forma de autenticação do SQL Server, no meu caso irei selecionar “Mixed Mode” e definir uma senha para o usuário S.A., também irei clicar em “Add Current User” para que o usuário no qual estou logado no Windows seja também um administrador da instância, feito estas customizações, mude para a aba “Data Directories”, em “Data root directory:”, deixei apenas meu disco do cluster “G:\”, em “User database directory:” deixei como “G:\SQLDATA”, em “User databaselog directory:” deixe como “G:\SQLTLOG”, em “Temp DB directory:” deixei como “G:\SQLDATA”, em “Temp DB log directory:” deixei como “G:\SQLTLOG”, em “Backup directory:”, deixei como “G:\BACKUP”, clique em “Next”.
20. Na tela “Error Reporting”, deixei desmarcado a opção e cliquei em “Next”.
21. Na tela “Cluster Installation Rules”, aguarde as verificações e clique em “Next”.
22. Na tela “Ready to Install”, verifique se tudo está de acordo com o que você configurou e clique em “Install”.
23. Ao término da instalação clique em “Close”.

Vamos agora adicionar o outro nó do cluster em nossa instalação do SQL Server 2014 CTP...

1. Insira a mídia do SQL Server 2014 CTP no nó win2k8-2.
2. Rode o “setup.exe”.
3. Na esquerda, clique em “Installation” > “Add node to a SQL Server failover cluster”.
4. Na tela “Setup Support Rules”, aguarde as verificações e clique em “OK”.
5. Na tela “Product Updates”, clique em “Next”.
6. Na tela “Install Setup Files”, aguarde o término da instalação.
7. Na tela “Setup Support Rules”, aguarde as verificações e clique em “Next”.
8. Na tela “Product Key”, em “Specify a free edition:” selecione “Evaluation” e clique em “Next”.
9. Na tela “License Terms”, selecione “I accept the license terms”, desmarque a segunda opção e clique em “Next”.
10. Na tela “Cluster Node Configuration”, perceba que ele já ira detectar nossa instância instalada no nó 1 automaticamente, basta clicar em “Next”.
11. Na tela “Cluster Network Configuration”, perceba que ele já ira detectar o ip do SQL Server que instalamos automaticamente, basta clicar em “Next”.
12. Na tela “Service Accounts”, adicione a senha para as contas de serviço que você definiu durante a instalação da instância no nó 1, feito isso clique em “Next”.
13. Na tela “Error Reporting”, deixei desmarcado a opção e cliquei em “Next”.
14. Na tela “Add Node Rules”, aguarde as verificações e clique em “Next”.
15. Na tela “Ready to Add Node”, verifique se tudo está de acordo com o que você configurou e clique em “Install”.
16. Ao término da instalação clique em “Close”.

Pessoal é isso! Espero que o post tenha sido útil a vocês e até a próxima!