Errore: impossibile generare il contesto SSPI


8

Quando qualcuno tenta di connettersi a un'istanza di SQL Server, viene visualizzato l'errore:

Non è possibile generare un contesto SSPI.

Ieri abbiamo avuto un blackout (non so come dire questa espressione in inglese) e ho dovuto chiudere i nostri server.

In cerca di risposte, ho trovato questo:

Problema di connettività di SQL Server 2008: impossibile generare il contesto SSPI

Ma non mi aiuta, perché stanno lavorando bene fino a ieri. Non voglio cambiare nulla. Ma se è necessario, lo cambierò.

Obs: Non riesco a riavviare il server ora.


Modifica: da quando ho la mia risposta, non abbiamo avuto errori.


Non riesco a riavviare il server, abbiamo più di 500+ utenti online. Non riesco davvero a capire cosa fare. Non c'è niente di utile su Internet.
Racer SQL,

1
Impostare i criteri di gruppo dal server stesso per modificare automaticamente l'ora per gli utenti. Se non si desidera riavviare il server per forzare le modifiche ai criteri di gruppo, è possibile utilizzare gpupdate /force. Maggiori informazioni su questo bellissimo argomento qui Ma consiglio vivamente questo compito da consegnare al server manager.
Nelz,

Risposte:


14

"Impossibile generare il contesto SSPI" è un errore generico. Può essere causato da molti problemi, come una password obsoleta, deriva dell'orologio, autorizzazioni di accesso ad Active Directory, mancata registrazione di un SPN e così via e così via.

Non esiste una soluzione a questo problema. L'unica 'soluzione' è indagare sulla causa, come da KB811889 e / o risoluzione dei problemi relativi agli errori Kerberos . L'applicazione di una soluzione o di un'altra da risorse Internet casuali, senza la comprensione della causa, può o meno risolvere il problema, può o meno causare frustrazione, può o meno causare danni irrevocabili.


2
Risposta-> L'applicazione di una soluzione o di un'altra da risorse Internet casuali, senza comprendere la causa, può o meno risolvere il problema, può o meno causare frustrazione, può o meno causare danni irrevocabili. Risposta -> "Abbiamo modificato l'utente del SERVIZIO SQL in" Domain Admin "." -ooooo-kay allora.
matao,

3

Abbiamo cambiato quello SQL SERVICE usercon " Domain Admin".

Ho fatto alcune ricerche per sapere perché questo accade. Dice che quando si arresta il servizio, è necessario un account con privilegi per creare un nuovo SPN (quando si riaccende). Se si avvia un servizio senza di esso, verrà visualizzato in CANNOT GENERATE SSPI CONTEXT.

stiamo cambiando i privilegi del nostro account di sistema.

Spero che aiuti qualcuno.


8
La buona pratica per gli account di servizio è quella di offrire loro i privilegi minimi. Dare al tuo account di servizio un amministratore di dominio è l'opposto di questo approccio: ti consiglio vivamente di non farlo, dal punto di vista della sicurezza.
Mike,

2

Abbiamo riscontrato questo problema dopo aver prelevato un database da PROD e averlo ripristinato nel QA. La nostra applicazione chiamava tre database su tre server e, a parte questo, non era complicato.

Si scopre che un SPN spurio (nome principale del servizio) si stava intromettendo nell'account del servizio con cui la connessione avrebbe dovuto essere in esecuzione. Lo abbiamo scoperto usando Programmi> Microsoft Kerberos Config Manager.

La soluzione a breve termine consisteva nell'utilizzare Gestione configurazione SQL Server e modificare le connessioni SQL Server e Agente SQL Server dall'account del servizio a "LocalSystem" in "Usa account incorporato".


1

Impossibile generare il contesto SSPI può significare esattamente questo. Quando un client si connette a un server SQL, utilizza un metodo di generazione che include il nome di dominio completo e la porta del tipo di servizio (MsSQLsvr). Utilizza DNS per generare il nome del server, quindi se risolve il nome in modo errato a causa di CNAME o file host ecc., La generazione fallirà. Effettua il ping del server desiderato e vedi quale risposta ottieni. Se non è il nome FQDN del server SQL, l'SPN verrà generato in modo errato causando questo errore.


1

In alcune situazioni otterrai questo errore a causa delle impostazioni SPN. Ad esempio, se si eseguono test di ripristino di emergenza su un nuovo server, è possibile che venga visualizzato un errore SSPI durante la connessione a SQL Server. Ancora più strano è che potresti essere in grado di connetterti utilizzando SQL Server Management Studio ma non puoi connetterti tramite ODBC o OLEDB. Potrebbe esserci una soluzione temporanea che probabilmente ti consentirà di accedere al database.

Soluzione alternativa : su ogni computer client che tenta di connettersi a SQL Server, creare una voce nel file host di ciascuna workstation. L'esatto meccanismo utilizzato per risolvere il problema non è confermato ma è possibile che l'utilizzo di esso abbia la precedenza sulla necessità di SPN.

Anche se questo non è garantito per essere risolto in tutti i casi, molto probabilmente ti farà tornare in esecuzione. Questo non dovrebbe essere considerato una soluzione permanente. È necessario risolvere l'SPN o altri problemi in una situazione ideale. Tuttavia, se si verificano problemi con i vecchi computer Windows che eseguono un sistema operativo non supportato o se si sta semplicemente eseguendo una prova del concetto di test di ripristino di emergenza, questo dovrebbe portarti dove devi essere per mantenere le luci accese o eseguire nuovamente la produzione.


Voglio solo ribadire che si tratta di una soluzione alternativa. Le soluzioni alternative non sono correzioni permanenti. Se si desidera causare meno problemi in futuro, è necessario risolvere il problema di fondo che, nella mia esperienza, ha a che fare con SPN.
Jason Geiger,

Una voce che associa il nome della macchina all'IP della macchina?
Bill Greer,

1

Ho riscontrato questo problema ed è stato risolto rimuovendo la voce SPN negli attributi dell'account del computer in Active Directory per il server

Trova l'account macchina in Utenti e computer AD (visualizzazione avanzata)

inserisci qui la descrizione dell'immagine

Quindi rimuovere le due voci in servicePrincipalName per MSSQLSvc

inserisci qui la descrizione dell'immagine


0

Ho avuto un problema simile. Ho finito per dover rimuovere le voci dalle informazioni SPN sull'account del computer in ADSIEdit.

Dopo aver rimosso le voci, ho riavviato il servizio SQL e ha registrato l'SPN con l'account della risorsa di dominio che avevo creato. Sono stato quindi in grado di accedere a SQL Server in remoto.


0

Per me la soluzione era eseguire SQL Studio come utente di dominio con questo comando:

runas / user: OtherDomain \ User SSMS.exe


0

Ho riscontrato questo problema solo di recente. Ero in esecuzione come account SERVICE NT e quando passai a utilizzare un account di servizio, non potevo più collegarmi usando SSMS con il nome della macchina o il nome FQDN. Potrei connettermi con l'indirizzo IP. Con alcune ricerche ho scoperto che l'SPN in Active Directory per l'istanza SQL era registrato sulla macchina. Una volta rimosso questo, quindi aggiunto all'account del servizio e riavviato la macchina SQL, tutto ha funzionato come dovrebbe. Felice di fornire ulteriori dettagli se necessario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.