Habilitando DAC SQL Server
Olá pessoal, tudo certo?
No post de hoje vou comentar a respeito de uma conexão especial que poucos DBA’s habilitam ao configurar a instância, essa conexão está disponibilizada desde a versão SQL Server 2005, a Microsoft introduziu a feature chamada Dedicated Administrator Connection (DAC), essa conexão deve ser utilizada somente quando a instância não está respondendo e você não consegue realizar um troubleshoot para identificar o que está acontecendo.
É permitido apenas uma conexão na DAC por instância, e somente membros da role Sysadmin pode usar essa conexão.
A conexão DAC tem os recursos reservados para ela, se você verificar mais, os recursos na DMV sys.dm_os_schedulers, nela podemos verificar que existe um scheduler reservado para a DAC, para ela é reservada apenas uma thread, por isso ela deve ser utilizada somente para emergência e não para manutenção.
SELECT parent_node_id,scheduler_id,status,is_online FROM sys.dm_os_schedulers
Por default a DAC vem desabilitada sendo necessário habilitar depois de instalar a instância, para isso podemos fazer tanto por comando como por interface.
Para habilitar via comando:
sp_configure 'remote admin connections', 1 GO RECONFIGURE GO
Para habilitar por interface:
Clicar no nome da instância no object explorer => Facets => Surface Area Configuration, marcar TRUE para RemoteDacEnabled
Você pode utilizar DAC tanto conectando via SQLCMD ou pelo Management Studio, para conectar utilizando o SQLCMD ao final do comando de conexão você deve adicionar o parâmetro -A, para conectar utilizando o Management Studio você tem que adicionar o parâmetro ADMIN antes do nome da instância.
Conectando utilizando SQLCMD
SQLCMD -S [SQL Server Name] -U [User Name] -P [Password] -A
Conectando utilizando o Management Studio
Como foi dito é permitido somente um conexão utilizando DAC, então, não é possível conectar utilizando o object explorer, você tem que abrir uma nova query e conectar.
Por default a porta padrão da DAC é a 1434, para alterar a porta, não é como alterar a porta padrão SQL Server que você altera no SQL Server Configuration Manager, para alterar a porta padrão da DAC você tem que alterar no registro do servidor e depois criar uma regra no firewall se ele estiver habilitado.
--Script para descobrir em qual porta o SQL Server esta sendo executado. SELECT e.name , e.endpoint_id , e.principal_id , e.protocol , e.protocol_desc , ec.local_net_address , ec.local_tcp_port , e.[type] , e.type_desc , e.[state] , e.state_desc , e.is_admin_endpoint FROM sys.endpoints e LEFT OUTER JOIN sys.dm_exec_connections ec ON ec.endpoint_id = e.endpoint_id GROUP BY e.name , e.endpoint_id , e.principal_id , e.protocol , e.protocol_desc , ec.local_net_address , ec.local_tcp_port , e.[type] , e.type_desc , e.[state] , e.state_desc , e.is_admin_endpoint
Alterando a porta default DAC
Para alterar a porta default da DAC, você tem que alterar o registro na HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp, e alterar o valor do registro TcpDynamicPorts para o numero da porta que você deseja configurar, após isso você tem que reiniciar o serviço do SQL Server.
Bom pessoal por hoje é isso, espero ter agregado conhecimento.
O Rodrigo Crespi (Blog/Twitter) da CrespiDB fez um post sobre DAC, nessa semana que pode complementar o assunto.
Referências:
- https://technet.microsoft.com/pt-br/library/ms190468.aspx
- Microsoft SQL Server 2012 Internals
- http://blog.sqlauthority.com/2009/01/09/sql-server-sqlcmd-using-a-dedicated-administrator-connection-to-kill-currently-running-query/
- https://www.brentozar.com/archive/2011/08/dedicated-admin-connection-why-want-when-need-how-tell-whos-using/
Abraços,
Tiago Neves
Excelente post amigo! Parabéns
Obrigado!!!