Te kilka poleceń pozwala mi diagnozować problemy z połączeniem do SQL servera, zwłaszcza w przypadku wystąpienia błędu:
SSPI handshake failed with error code 0x80090311
bardzo pomocne są artykuły
- https://mssqlwiki.com/2013/12/09/sql-server-connectivity-kerberos-authentication-and-sql-server-spn-service-principal-name-for-sql-server/
- https://technet.microsoft.com/en-us/library/ms191153.aspx
z których pochodzą między innymi poniższe komendy.
Do poprawnego skonfigurowania protokołu Kerberos i tym samym uniknięcia w/w błedu potrzebne są tzw. Service Principal Name skonfigurowane dla konta serwisowego SQL Server. Jeśli połączenie do serwera jest nawiązywane z wykorzystaniem NTLM zamiast Kerberos, to najpierw sprawdź, czy SPN dla danego serwera są zarejestrowane. Pomoże w tym komenda:
setspn -L 'domain\user'
Wynik pusty oznacza, że zapomniano o konfiguracji SPN. Jeśli komenda coś wyświetla, to są to definicje SPN. Gdy brakuje SPN, to można je utworzyć wykorzystując poniższe instrukcje:
Setspn -A MSSQLSvc/server.subdomain.domain domain\user Setspn -A MSSQLSvc/server.subdomain.domain:1433 domain\user
Oczywiście zamienieamy server, subdomin, domain i user na właściwe.
Kiedy protokół jest już skonfigurowany a anadal podejrzewasz problemy, możesz sprawdzić zawartość ticketa Kerberos korzystając z polecenia Klist:
- Aby sprawdzić ticket dla usługi SQL:
Klist get MSSQLSvc/server.subdomain.domain:1433
- Aby sprawdzić ticket dla hosta:
Klist get Host/server.subdomain.domain
Ta ostatnia komenda zawsze powinna coś zwrócić. Jeżeli nie zwraca, tzn że masz problem na poziomie hosta, a nie usługi SQL.