Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
O SQL Server fornece uma conexão de diagnóstico especial para administradores quando as 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 resolver problemas mesmo quando o SQL Server não responde às solicitações de conexão padrão.
Esta conexão de administrador dedicada (DAC) oferece suporte à criptografia e outros recursos de segurança do SQL Server. O DAC só permite alterar o contexto de usuário para outro usuário admin.
O SQL Server faz todas as tentativas de fazer com que o DAC se conecte com êxito, mas em situações extremas pode não ser bem-sucedido.
Conectar-se ao DAC
Por padrão, a conexão só é permitida de um cliente executando no servidor. As conexões de rede não são permitidas, a menos que estejam configuradas usando o sp_configure procedimento armazenado com a opção de configuração do servidor de conexões de administrador remoto .
Apenas membros da função sysadmin do SQL Server podem se conectar usando o DAC.
O DAC está disponível e tem suporte por meio do utilitário de prompt de comando sqlcmd que usa uma opção de administrador especial (-A). Para obter mais informações sobre como usar sqlcmd, consulte sqlcmd – Use com variáveis de script. Você também pode se conectar inserindo o prefixo admin: no nome da instância no formato sqlcmd -S admin:<instance_name>. Além disso, você pode iniciar um DAC de um Editor de Consultas do SQL Server Management Studio conectando-se a admin:<instance_name>.
Para estabelecer um DAC por meio do SQL Server Management Studio:
Desfaça todas as conexões com a instância do SQL Server relacionada, incluindo o Pesquisador de Objetos e todas as janelas de consulta abertas.
No menu, selecione Arquivo> Novo> 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 do DAC
SQL Server verifica o DAC em uma porta TCP 1434, se estiver disponível, ou em uma porta TCP dinamicamente atribuída na inicialização do Mecanismo de Banco de Dados . O log de erros contém o número da porta que o DAC está escutando. Por padrão, a escuta do DAC aceita conexão apenas na porta local. Para obter um exemplo de código que ativa conexões de administração remota, consulte a configuração do servidor: conexões de administrador remoto.
Depois que uma conexão de administração remota for configurada, o ouvinte do DAC será habilitado sem a reinicialização do SQL Server e um cliente poderá se conectar ao DAC remotamente. Você pode habilitar o ouvinte do DAC para aceitar conexões remotamente, mesmo que o SQL Server não responda durante a primeira conexão com o SQL Server usando o DAC localmente e executar o procedimento armazenado sp_configure para aceitar conexão de conexões remotas.
Em configurações de cluster, o DAC estará offline, por padrão. Os usuários podem executar a opção conexão de administração remota sp_configure para permitir que o ouvinte do DAC acesse uma conexão remota. Se o SQL Server não responder e o ouvinte do DAC não estiver habilitado, reinicie o SQL Server para se conectar ao DAC. Dessa forma, recomendamos que você habilite a opção de configuração conexões de administração remotas em sistemas clusterizados.
A porta DAC é atribuída dinamicamente pelo SQL Server durante a inicialização. Ao conectar-se à instância padrão, o DAC evita usar uma solicitação do Protocolo de Resolução (SSRP) do SQL Server ao serviço SQL Server Browser. Primeiro ele se conecta usando a porta TCP 1434. Se isso falhar, ele faz uma chamada ao SSRP para obter a porta. Se o SQL Server Browser não estiver escutando as solicitações do SSRP, a solicitação de conexão retornará um erro. Consulte o log de erros para localizar o número da porta que o DAC está escutando. Se o SQL Server for configurado para aceitar conexões de administração remotas, 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, por padrão, é 1434. Se o SQL Server estiver configurado para aceitar apenas conexões DAC locais, conecte usando o adaptador de loopback com o seguinte comando:
sqlcmd -S 127.0.0.1,1434
Limitações
Como o DAC existe somente para diagnosticar problemas do servidor em circunstâncias raras, há algumas restrições na conexão:
Para garantir que existam recursos disponíveis para a conexão, apenas um DAC é permitido por instância do SQL Server. Se uma conexão DAC já estiver ativa, qualquer nova solicitação de conexão via DAC será negada com o erro 17810.
Para conservar recursos, o SQL Server Express não escuta na porta DAC a menos que seja iniciado com a flag de rastreamento 7806.
Inicialmente, o DAC tenta se conectar ao banco de dados padrão associado ao logon. Depois que ele estiver conectado com êxito, você poderá se conectar ao
masterbanco de dados. Se o banco de dados padrão estiver offline ou não estiver disponível, a conexão retornará o erro 4060. Entretanto, ela terá sucesso se você substituir o banco de dados padrão para se conectar ao banco de dadosmasterusando o seguinte comando:sqlcmd -A -d masterRecomendamos que você se conecte ao banco de dados
mastercom o DAC porque omasterestará com certeza disponível se a instância do Mecanismo de Banco de Dados for iniciada.SQL Server impede a execução de consultas paralelas ou comandos com o DAC. Por exemplo, erro 3637 será gerado se você executar uma das seguintes instruções com o DAC:
RESTORE...BACKUP...
Apenas recursos limitados têm garantia de disponibilidade com o DAC. Não use o DAC para executar consultas ou consultas com uso intensivo de recursos que possam bloquear outras consultas. Isso ajuda a evitar que o DAC combine qualquer problema de servidor existente. Para evitar possíveis cenários de bloqueio, se você precisar executar consultas que possam ser bloqueadas, execute a consulta em níveis de isolamento baseados em instantâneo, se possível; caso contrário, defina o nível
READ UNCOMMITTEDde isolamento da transação como e defina oLOCK_TIMEOUTvalor como um valor curto, como 2000 milissegundos ou ambos. Isso impedirá que a sessão DAC seja bloqueada. Porém, dependendo do estado do SQL Server , a sessão DAC pode ser travada imediatamente. Talvez você consiga encerrar a sessão do DAC usando CTRL-C, mas não há garantia disso. Nesse caso, sua única opção pode ser reiniciar o SQL Server.Para garantir a conectividade e resolver problemas com o DAC, o SQL Server reserva recursos limitados para processar comandos executados no DAC. Esses recursos geralmente só são suficientes para diagnósticos simples e resolução de problemas de funções, como as listadas abaixo.
Embora seja teoricamente possível executar qualquer instrução Transact-SQL que não precise ser executada paralelamente no DAC, recomendamos que você restrinja o uso dos seguintes comandos de diagnóstico e solução de problemas:
Consulta de exibições de gerenciamento dinâmico para diagnósticos básicos como sys.dm_tran_locks para o status de bloqueio, sys.dm_os_memory_cache_counters para verificar a integridade dos caches, e sys.dm_exec_requests e sys.dm_exec_sessions para sessões e solicitações ativas. Evite exibições de gerenciamento dinâmico que usem muitos recursos (por exemplo, sys.dm_tran_version_store examina o repositório de versão completo e pode causar E/S extensiva) ou que usem junções complexas. Para obter informações sobre implicações de desempenho, consulte a documentação sobre exibições de gerenciamento dinâmicoespecíficas.
Consulta de exibições do catálogo.
Comandos DBCC básicos como DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS e DBCC SQLPERF. Evite comandos com uso intensivo de recursos, como DBCC CHECKDB, DBCC DBREINDEX ou DBCC SHRINKDATABASE.
Comando Transact-SQL
KILL <spid>. 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 de SQL do Azure. A seguir, algumas diretrizes gerais:Verifique se o SPID foi interrompido consultando
SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>;. Se nenhuma linha for retornada, significa que a sessão foi interrompida.Se a sessão ainda estiver ativa, verifique se há tarefas atribuídas para ela executando a consulta
SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>;. Se a tarefa estiver ativa, é provável que sua sessão esteja sendo interrompida no momento. Isso pode levar muito tempo e talvez não tenha êxito.Se não houver nenhuma tarefa associada a
sys.dm_os_tasksesta sessão, mas a sessão permanecer dentrosys.dm_exec_sessionsdepois de executar oKILLcomando, isso significa que você não tem um trabalho disponível. Selecione uma das tarefas em execução no momento (uma tarefa listada na exibiçãosys.dm_os_taskscom umsessions_id <> NULL) e encerre a sessão associada a ela para liberar o trabalho. Talvez não seja suficiente matar uma única sessão: talvez seja necessário matar várias.
Limitação no Banco de Dados SQL do Azure
Durante a conexão com o Banco de Dados SQL do Azure com o DAC, você também precisa especificar o nome do banco de dados na cadeia de conexão usando a opção -d.
Limitação na Instância Gerenciada de SQL do Azure
O DAC não funciona em um ponto de extremidade privado para a Instância Gerenciada de SQL do Azure. Em instâncias gerenciadas de SQL, o DAC escuta na porta 1434. Como os pontos de extremidade privados para instâncias gerenciadas de SQL permitem apenas conexões na porta 1433, você não pode usar um ponto de extremidade privado para estabelecer uma conexão DAC. Você deve estar na mesma rede virtual que a instância gerenciada de SQL para se conectar ao DAC.
Exemplos
Neste exemplo, um administrador observa que o servidor contoso-server não está respondendo e deseja diagnosticar o problema. Para isso, o usuário ativa o utilitário de prompt de comando sqlcmd e se conecta ao servidor contoso-server usando -A para indicar o DAC.
sqlcmd -S contoso-server -U sa -P <StrongPassword> -A
Agora o administrador pode executar consultas para diagnosticar o problema e possivelmente encerrar as sessões sem-resposta.
Um exemplo semelhante de conexão ao 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
- SELECT (Transact-SQL)
- sp_who (Transact-SQL)
- sp_lock (Transact-SQL)
- KILL (Transact-SQL)
- DBCC CHECKALLOC (Transact-SQL)
- DBCC CHECKDB (Transact-SQL)
- DBCC OPENTRAN (Transact-SQL)
- DBCC INPUTBUFFER (Transact-SQL)
- Opções de configuração do servidor
- Funções e exibições de gerenciamento dinâmico relacionadas à transação (Transact-SQL)
- Definir sinalizadores de rastreamento com DBCC TRACEON (Transact-SQL)