Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
O SQL Server fornece uma conexão de diagnóstico especial para administradores quando conexões padrão com o servidor não são possíveis. Essa conexão de diagnóstico permite que um administrador acesse o SQL Server para executar consultas de diagnóstico e solucionar problemas, mesmo quando o SQL Server não está respondendo a solicitações de conexão padrão.
Essa conexão de administrador dedicada (DAC) oferece suporte à criptografia e a outros recursos de segurança do SQL Server. O DAC só permite alterar o contexto do usuário para outro usuário administrador.
O SQL Server faz todas as tentativas para fazer com que o DAC se conecte com êxito, mas em situações extremas pode não ser bem-sucedido.
Conecte-se com o DAC
Por padrão, a conexão só é permitida a partir de um cliente em execução no servidor. As conexões de rede não são permitidas, a menos que sejam configuradas usando o sp_configure procedimento armazenado com a opção de configuração do servidor de conexões de administração remota .
Somente membros da função sysadmin do SQL Server podem se conectar usando o DAC.
O DAC está disponível e é suportado através do sqlcmd utilitário de prompt de comando usando uma opção de administrador especial (-A). Para obter mais informações sobre como usar sqlcmdo , consulte sqlcmd - Usar com variáveis de script. Você também pode conectar o prefixo admin: ao nome da instância no formato sqlcmd -S admin:<instance_name>. Você também pode iniciar um DAC a partir de um Editor de Consultas do SQL Server Management Studio conectando-se ao admin:<instance_name>.
Para estabelecer um DAC do SQL Server Management Studio:
Desconecte todas as conexões com a instância relacionada do SQL Server, incluindo o Pesquisador de Objetos e todas as janelas de consulta abertas.
No menu, selecione Arquivo > Nova > Consulta do Mecanismo de Banco de Dados
Na caixa de diálogo de conexão no campo Nome do servidor, digite
admin:<server_name>se estiver usando a instância padrão ouadmin:<server_name>\<instance_name>se estiver usando uma instância nomeada.
Porta DAC
O SQL Server escuta o DAC na porta TCP 1434, se disponível, ou uma porta TCP atribuída dinamicamente na inicialização do Mecanismo de Banco de Dados. O log de erros contém o número da porta em que o DAC está escutando. Por padrão, o ouvinte do DAC aceita conexão somente na porta local. Para obter um exemplo de código que ativa conexões de administração remota, consulte Configuração do servidor: conexões de administração remota.
Depois que a conexão de administração remota é configurada, o ouvinte de DAC é habilitado sem reiniciar o SQL Server e um cliente agora pode se conectar ao DAC remotamente. Você pode habilitar o ouvinte de DAC para aceitar conexões remotamente, mesmo que o SQL Server não esteja respondendo, conectando-se primeiro ao SQL Server usando o DAC localmente e, em seguida, executando o procedimento armazenado para aceitar conexão sp_configure de conexões remotas.
Nas configurações de cluster, o DAC estará desativado por padrão. Os usuários podem executar a opção de conexão de administrador remoto para permitir que o ouvinte de sp_configure DAC acesse uma conexão remota. Se o SQL Server não estiver respondendo e o ouvinte de DAC não estiver habilitado, talvez seja necessário reiniciar o SQL Server para se conectar ao DAC. Portanto, recomendamos que você habilite a opção de configuração de conexões de administração remota em sistemas clusterizados.
A porta de DAC é atribuída dinamicamente pelo SQL Server durante a inicialização. Ao se conectar à instância padrão, o DAC evita usar uma solicitação SSRP (SQL Server Resolution Protocol) para o Serviço de Navegador do SQL Server ao se conectar. Ele primeiro se conecta pela porta TCP 1434. Se isso falhar, ele faz uma chamada SSRP para obter a porta. Se o Navegador do SQL Server não estiver escutando solicitações SSRP, a solicitação de conexão retornará um erro. Consulte o log de erros para localizar o número da porta em que o DAC está escutando. Se o SQL Server estiver configurado para aceitar conexões de administração remota, o DAC deverá ser iniciado com um número de porta explícito:
sqlcmd -S tcp:<server>,<port>
O log de erros do SQL Server lista o número da porta para o DAC, que é 1434 por padrão. Se o SQL Server estiver configurado para aceitar somente conexões de DAC locais, conecte-se usando o adaptador de loopback usando o seguinte comando:
sqlcmd -S 127.0.0.1,1434
Limitações
Como o DAC existe apenas para diagnosticar problemas do servidor em circunstâncias raras, há algumas restrições na conexão:
Para garantir que haja recursos disponíveis para a conexão, apenas um DAC é permitido por instância do SQL Server. Se uma conexão de DAC já estiver ativa, qualquer nova solicitação de conexão por meio do DAC será negada com o erro 17810.
Para conservar recursos, o SQL Server Express não escuta na porta do DAC, a menos que seja iniciado com o sinalizador de rastreamento 7806.
Inicialmente, o DAC tenta se conectar ao banco de dados padrão associado ao login. Depois que ele for conectado com êxito, você poderá se conectar ao
masterbanco de dados. Se o banco de dados padrão estiver offline ou indisponível, a conexão retornará o erro 4060. No entanto, ele terá êxito se você substituir o banco de dados padrão para se conectar aomasterbanco de dados usando o seguinte comando:sqlcmd -A -d masterRecomendamos que você se conecte
masterao banco de dados com o DAC, poismasteré garantido que estará disponível se a instância do Mecanismo de Banco de Dados for iniciada.O SQL Server proíbe a execução de consultas ou comandos paralelos com o DAC. Por exemplo, o erro 3637 é gerado se você executar uma das seguintes instruções com o DAC:
RESTORE...BACKUP...
Apenas é garantido que o CAD disponibilize recursos limitados. Não use o DAC para executar consultas que consomem muitos recursos ou que podem bloquear outras consultas. Isso ajuda a evitar que o DAC agrave quaisquer problemas de servidor existentes. Para evitar possíveis cenários de bloqueio, se você tiver que executar consultas que possam bloquear, execute a consulta em níveis de isolamento baseados em instantâneo, se possível; Caso contrário, defina o nível de isolamento da transação como
READ UNCOMMITTEDe defina oLOCK_TIMEOUTvalor como um valor curto, como 2000 milissegundos, ou ambos. Isso impedirá que a sessão do DAC seja bloqueada. No entanto, dependendo do estado em que o SQL Server está, a sessão de DAC pode ficar bloqueada em uma trava. Talvez seja possível encerrar a sessão do DAC usando CTRL-C mas isso não é garantido. Nesse caso, sua única opção pode ser reiniciar o SQL Server.Para garantir a conectividade e a solução de problemas com o DAC, o SQL Server reserva recursos limitados para processar comandos executados no DAC. Normalmente, esses recursos são suficientes apenas para funções simples de diagnóstico e solução de problemas, como as listadas abaixo.
Embora teoricamente você possa executar qualquer instrução Transact-SQL que não precise ser executada em paralelo no DAC, é altamente recomendável restringir o uso aos seguintes comandos de diagnóstico e solução de problemas:
Consultar exibições de gerenciamento dinâmico para diagnósticos básicos, como sys.dm_tran_locks o status de bloqueio, sys.dm_os_memory_cache_counters verificar a integridade de caches e sys.dm_exec_requests e sys.dm_exec_sessions sessões e solicitações ativas. Evite exibições de gerenciamento dinâmico que consomem muitos recursos (por exemplo, sys.dm_tran_version_store verifica o armazenamento de versão completa e pode causar E/S extensas) ou que usam junções complexas. Para obter informações sobre implicações de desempenho, consulte a documentação para a exibição de gerenciamento dinâmico específica.
Consultando exibições de catálogo.
Comandos DBCC básicos, como DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE,DBCC DROPCLEANBUFFERS eDBCC SQLPERF. Evite comandos que consomem muitos recursos, como DBCC CHECKDB, DBCC DBREINDEX ou DBCC SHRINKDATABASE.
KILL <spid>Transact-SQL comando. Dependendo do estado do SQL Server, oKILLcomando pode não ter êxito. A única opção pode ser reiniciar a instância, no caso do SQL Server ou da Instância Gerenciada SQL do Azure. Seguem-se algumas orientações gerais:Verifique se o SPID foi morto consultando
SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>;. Se ele não retornar linhas, significa que a sessão foi morta.Se a sessão ainda estiver lá, verifique se há tarefas atribuídas a esta sessão executando a consulta
SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>;. Se você vir a tarefa lá, muito provavelmente sua sessão está sendo cancelada no momento. Isso pode levar uma quantidade considerável de tempo e pode não ter sucesso.Se não houver tarefas associadas a
sys.dm_os_tasksesta sessão, mas a sessão permanecer apóssys.dm_exec_sessionsa execução doKILLcomando, isso significa que você não tem um trabalhador disponível. Selecione uma das tarefas atualmente em execução (uma tarefa listadasys.dm_os_tasksno modo de exibição com umsessions_id <> NULL) e mate a sessão associada a ela para liberar o trabalhador. Pode não ser suficiente para matar uma única sessão: você pode ter que matar várias.
Limitação no Banco de Dados SQL do Azure
Ao se conectar ao Banco de Dados SQL do Azure com o DAC, você também deve especificar o nome do banco de dados na cadeia de conexão usando a -d opção.
Limitação na Instância Gerenciada SQL do Azure
O DAC não funciona em um ponto de extremidade privado para a Instância Gerenciada SQL do Azure. Em instâncias gerenciadas pelo SQL, o DAC escuta na porta 1434. Como os pontos de extremidade privados para instâncias gerenciadas pelo SQL só permitem conexões na porta 1433, não é possível usar um ponto de extremidade privado para estabelecer uma conexão de DAC. Você deve estar na mesma rede virtual que a instância gerenciada do SQL para se conectar ao DAC.
Examples
Neste exemplo, um administrador percebe que o servidor contoso-server não está respondendo e deseja diagnosticar o problema. Para fazer isso, o usuário ativa o sqlcmd utilitário de prompt de comando e se conecta ao servidor contoso-server usando -A para indicar o DAC.
sqlcmd -S contoso-server -U sa -P <StrongPassword> -A
O administrador agora pode executar consultas para diagnosticar o problema e, possivelmente, encerrar as sessões que não respondem.
Um exemplo semelhante de conexão com o Banco de dados SQL usaria o seguinte comando, incluindo o -d parâmetro para especificar o banco de dados:
sqlcmd -S serverName.database.windows.net,1434 -U sa -P <StrongPassword> -d AdventureWorks
Conteúdo relacionado
- Usar sqlcmd com variáveis de script
- Utilitário sqlcmd
- SELECIONAR (Transact-SQL)
- sp_who (Transact-SQL)
- sp_lock (Transact-SQL)
- MATAR (Transact-SQL)
- DBCC CHECKALLOC (Transact-SQL)
- DBCC CHECKDB (Transact-SQL)
- DBCC OPENTRAN (Transact-SQL)
- DBCC INPUTBUFFER (Transact-SQL)
- Opções de configuração do Server
- Visualizações e funções de gerenciamento dinâmico relacionadas a transações (Transact-SQL)
- Definir sinalizadores de rastreamento com DBCC TRACEON (Transact-SQL)