Ho un paio di nodi di Microsoft SQL Server 2016 in un gruppo di disponibilità Always On. Sto provando a eseguire un BULK INSERT
(utilizzando una query di SQL Server 2016 Management Studio) su un file che si trova in un cluster di failover del file server di Windows Server 2016, ma visualizzo il seguente errore:
Messaggio 4861, livello 16, stato 1
Impossibile caricare in blocco perché non è stato possibile aprire il file "\ nas2.my.domain \ Microsoft SQL Server 2016 Enterprise \ test.txt". Codice di errore del sistema operativo 5 (accesso negato.).
Ciò accadrà a prescindere se utilizzo il nome nodo attivo ( nas2.my.domain
) o il listener di cluster di failover ( nas.my.domain
).
Dopo essermi guardato intorno ho scoperto che ciò era dovuto al fatto che SQL Server non era in grado di impersonare l'account utente con cui sono connesso a causa di sfumature BULK INSERT
.
Se ci si connette a SQL Server utilizzando l'autenticazione di Windows, l'account del servizio SQL Server tenta di rappresentare l'account utente durante la connessione al file server. Se ci si connette utilizzando l'autenticazione di SQL Server, si connetterà al file server come account del servizio SQL Server.
Se la delega e la rappresentazione non sono configurate correttamente (lo stato predefinito), il servizio SQL Server non sarà in grado di impersonare l'account utente e tornerà a tentare di connettersi al file server come utente anonimo.
Ciò può essere confermato guardando nel registro degli eventi di sicurezza sul file server. Questi fatti insieme a una guida sulla configurazione della delega vincolata e vincolata sono documentati in questi collegamenti:
Ho provato a seguire le istruzioni nella guida di quequdeude ma non funziona ancora.
Il database che sto cercando di BULK INSERT
fare non fa parte del gruppo di disponibilità, quindi solo il nodo MSSQL1 dovrebbe essere rilevante. Il file server era attivo sul nodo NAS2. Il controllo del registro eventi sul file server mostra che sta ancora soffrendo di questo problema e SQL Server sta tentando di autenticarsi sul file server come utente anonimo anziché impersonare il mio account utente.
Qualcuno sa cosa sta andando storto? O se qualcosa è cambiato in SQL Server 2016 per rendere obsolete queste guide?
- Voce registro eventi sicurezza file server
- Delega dell'account di servizio
- SPN dell'account di servizio
- Delega dell'account computer n. 1 di SQL Server
- SPN dell'account computer n. 2 del file server
- Oggetti Criteri di gruppo
sys.dm_exec_connections
- Kerberos
Posso confermare che questo oggetto Criteri di gruppo è stato applicato a MSSQL1 tramite gpresult.exe /R
e che sia i nodi SQL che i file server sono stati riavviati in seguito per garantire che tutte le cache siano state svuotate.