Erro: Não é possível gerar o contexto SSPI

8

Quando alguém tenta se conectar a uma instância do SQL Server, o erro aparece:

Não é possível gerar o contexto SSPI.

Ontem tivemos um blecaute (não sei como pronunciar essa expressão em inglês) e tive que desligar nossos servidores.

Procurando respostas, encontrei o seguinte:

Problema de conectividade do SQL Server 2008: não é possível gerar o contexto SSPI

Mas isso não me ajuda, porque eles estão funcionando bem até ontem. Eu não quero mudar nada. Mas se for necessário, eu vou mudar.

Obs: Não consigo reiniciar o servidor agora.


Edit: Desde a minha resposta, não tivemos nenhum erro.

Racer SQL
fonte
Não consigo reiniciar o servidor, temos mais de 500 usuários online. Eu realmente não consigo descobrir o que fazer. Não há nada útil na internet.
Racer SQL
11
Defina a política de grupo no próprio servidor para alterar automaticamente o horário dos usuários. Se você não deseja reiniciar o servidor para forçar as alterações na política de grupo, você pode usar gpupdate /force. Mais sobre esse assunto bonito aqui Mas eu recomendo que essa tarefa seja entregue ao gerente do servidor.
Nelz

Respostas:

14

'Não é possível gerar o contexto SSPI' é um erro genérico. Isso pode ser causado por muitos problemas, como uma senha desatada, desvio do relógio, permissões de acesso ao Active Directory, falha ao registrar um SPN e assim por diante.

Não há solução para esse problema. A única 'solução' é investigar a causa, conforme KB811889 e / ou solução de problemas de erros do Kerberos . A aplicação de uma solução ou de outra a partir de recursos aleatórios da Internet, sem entender a causa, pode ou não resolver o problema, pode ou não causar frustração, pode ou não causar danos irrevogáveis.

Remus Rusanu
fonte
2
Resposta-> A aplicação de uma solução ou de outra a partir de recursos aleatórios da Internet, sem entender a causa, pode ou não resolver o problema, pode ou não causar frustração, pode ou não causar danos irrevogáveis. Resposta -> "Alteramos o usuário do SQL SERVICE para um que seja" Domain Admin "." -ooooo-kaay então.
matao 28/09/16
3

Nós mudamos SQL SERVICE userpara o que é " Domain Admin".

Eu fiz algumas pesquisas para saber por que isso acontece. Ele diz que, quando você encerra o serviço, precisa de uma conta com privilégios para criar um novo SPN (quando ele é ativado novamente). Se você iniciar um serviço sem ele, ele será exibido em NÃO PODE GERAR CONTEXTO SSPI.

estamos alterando os privilégios da nossa conta do sistema.

Espero que ajude alguém.

Racer SQL
fonte
8
A boa prática para contas de serviço é conceder a eles o mínimo de privilégios possível. Dar à sua conta de serviço o administrador do domínio é o oposto dessa abordagem - eu recomendo fortemente que não, do ponto de vista da segurança.
21318 Mike
2

Tivemos esse problema depois que pegamos um banco de dados do PROD e o restauramos no controle de qualidade. Nosso aplicativo chamou três bancos de dados em três servidores e, além disso, não foi complicado.

Acontece que um SPN falso (nome principal do serviço) estava atrapalhando a conta de serviço sob a qual a conexão deveria estar em execução. Descobrimos isso usando os Arquivos de programa> Microsoft Kerberos Config Manager.

A correção de curto prazo foi usar o SQL Server Configuration Manager e alterar as conexões do SQL Server e do SQL Server Agent da conta de serviço para 'LocalSystem' em 'Use BuiltIn Account'.

Bob Sullentrup
fonte
1

Não é possível gerar o contexto SSPI pode significar exatamente isso. Quando um cliente se conecta a um servidor SQL, utiliza um método de geração que inclui o FQDN e a porta do servidor do tipo de serviço (MsSQLsvr). Ele usa o DNS para gerar o nome do servidor, portanto, se ele resolver o nome incorretamente devido a CNAMEs ou arquivo host etc., a geração falhará. Faça ping no servidor desejado e veja qual resposta você recebe. Se não for o FQDN do servidor SQL, o SPN será gerado incorretamente, causando esse erro.

Adrian Morson
fonte
1

Em algumas situações, você receberá esse erro devido às configurações do SPN. Por exemplo, se você estiver testando a recuperação de desastres para um novo servidor, poderá receber um erro SSPI ao se conectar ao SQL Server. Ainda mais estranho é que você pode se conectar usando o SQL Server Management Studio, mas não pode se conectar via ODBC ou OLEDB. Pode haver uma solução temporária que provavelmente permitirá que você acesse o banco de dados.

Solução alternativa : em cada computador cliente que tenta se conectar ao SQL Server, crie uma entrada no arquivo host de cada estação de trabalho. O mecanismo exato usado para corrigir o problema não está confirmado, mas pode ser que o uso do mesmo substitua a necessidade do SPN.

Embora isso não seja garantido para ser corrigido em todos os casos, é provável que você volte a funcionar. Isso não deve ser considerado uma correção permanente. Você deve resolver o SPN ou outros problemas em uma situação ideal. No entanto, se você estiver tendo problemas com máquinas Windows antigas executando um sistema operacional não suportado ou se estiver apenas testando um teste de recuperação de desastre, deve chegar onde você precisa para manter as luzes acesas ou a produção em funcionamento.

Jason Geiger
fonte
Eu só quero reiterar que esta é uma solução alternativa. Soluções alternativas não são correções permanentes. Se você quiser causar menos problemas no futuro, corrija o problema subjacente que, na minha experiência, tem a ver com os SPNs.
21819 Jason Geiger
Uma entrada mapeando o nome da máquina para o IP da máquina?
Bill Greer
1

Tive esse problema e foi resolvido removendo a entrada SPN nos atributos da conta do computador no AD para o servidor

Encontre a conta da máquina em Usuários e computadores do AD (exibição avançada)

insira a descrição da imagem aqui

Em seguida, remova as duas entradas no servicePrincipalName for MSSQLSvc

insira a descrição da imagem aqui

Bill Appleton
fonte
0

Eu tive uma questão semelhante. Acabei tendo que remover entradas das informações do SPN na conta do computador no ADSIEdit.

Após remover as entradas, reiniciei o serviço SQL e ele registrou o SPN na conta de recurso de domínio que eu havia criado. Pude acessar o SQL Server remotamente.

DJSkippy
fonte
0

Para mim, a solução foi executar o SQL Studio como o usuário do domínio com este comando:

runas / usuário: OtherDomain \ User SSMS.exe

nevasca
fonte
0

Eu experimentei esse problema recentemente. Eu estava executando como a conta do NT SERVICE e, quando mudei para o uso de uma conta de serviço, não consegui mais me conectar usando o SSMS com o nome da máquina ou o FQDN. Eu poderia me conectar com o endereço IP. Com algumas pesquisas, descobri que o SPN do Active Directory para a instância SQL estava registrado na máquina. Depois que eu removi e adicionei à conta de serviço e reinicializei a máquina SQL, tudo funcionou como deveria. É um prazer fornecer mais detalhes, se necessário.

Rob Hawthorne
fonte