[sql-server] 대상 주체 이름이 올바르지 않습니다. SSPI 컨텍스트를 생성 할 수 없습니다.

컴퓨터 A에서 SQL Server를 실행하는 컴퓨터 B로 SQL Server 연결을 얻는 데 어려움을 겪고 있습니다.

나는 광범위하게 Google을 검색했으며 내가 찾은 모든 것이 작동하지 않았습니다. 또한이 문제를 해결하는 과정을 단계별로 안내하지도 않습니다.

Kerberos를 사용하지 않고 구성된 NTLM을 사용합니다.

여기에 이미지 설명 입력

관련된 컴퓨터는 다음과 같습니다 (xx는 보안을 위해 일부 컴퓨터 이름을 가리는 데 사용됨).

  • xxPRODSVR001 -Windows Server 2012 도메인 컨트롤러
  • xxDEVSVR003 -Windows Server 2012 (이 시스템에서 오류가 발생 함)
  • xxDEVSVR002 -Windows Server 2012 (이 컴퓨터는 SQL Server 2012를 실행 중입니다)

다음 SPN은 DC (xxPRODSVR001)에 등록되어 있습니다. 보안을 위해 yyy로 도메인을가 렸습니다.

CN = xxDEVSVR002, CN = Computers, DC = yyy, DC = local에 대해 등록 된 ServicePrincipalName :

            MSSQLSvc/xxDEVSVR002.yyy.local:49298

            MSSQLSvc/xxDEVSVR002.yyy.local:TFS

            RestrictedKrbHost/xxDEVSVR002

            RestrictedKrbHost/xxDEVSVR002.yyy.local

            Hyper-V Replica Service/xxDEVSVR002

            Hyper-V Replica Service/xxDEVSVR002.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR002

            Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR002

            Microsoft Virtual Console Service/xxDEVSVR002.yyy.local

            SMTPSVC/xxDEVSVR002

            SMTPSVC/xxDEVSVR002.yyy.local

            WSMAN/xxDEVSVR002

            WSMAN/xxDEVSVR002.yyy.local

            Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local

            TERMSRV/xxDEVSVR002

            TERMSRV/xxDEVSVR002.yyy.local

            HOST/xxDEVSVR002

            HOST/xxDEVSVR002.yyy.local

CN = xxDEVSVR003, CN = Computers, DC = yyy, DC = local에 대해 등록 된 ServicePrincipalName :

            MSSQLSvc/xxDEVSVR003.yyy.local:1433

            MSSQLSvc/xxDEVSVR003.yyy.local

            Hyper-V Replica Service/xxDEVSVR003

            Hyper-V Replica Service/xxDEVSVR003.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR003

            Microsoft Virtual System Migration Service/xxDEVSVR003.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR003

            Microsoft Virtual Console Service/xxDEVSVR003.yyy.local

            WSMAN/xxDEVSVR003

            WSMAN/xxDEVSVR003.yyy.local

            TERMSRV/xxDEVSVR003

            TERMSRV/xxDEVSVR003.yyy.local

            RestrictedKrbHost/xxDEVSVR003

            HOST/xxDEVSVR003

            RestrictedKrbHost/xxDEVSVR003.yyy.local

            HOST/xxDEVSVR003.yyy.local

이제 SQL Server 오류 메시지 만 더 설명적이고 연결하려는 주체 이름을 알려 주면이 문제를 진단 할 수 있습니다.

누구든지이 문제를 해결하는 방법을 안내해 줄 수 있습니까? 아니면 제가 제공 한 것이 잘못된 것을 볼 수 있습니까?

더 많은 디버그 정보를 생성 해 드리겠습니다. 필요한 것을 알려주세요.



답변

작업중인 ASP.NET MVC 앱에서이 문제가 발생했습니다.

최근에 비밀번호를 변경했다는 사실을 깨달았고, 로그 아웃했다가 다시 로그인하여 수정할 수있었습니다.


답변

Windows 인증을 사용하여 SQL Server Management Studio를 통해 연결할 때이 오류가 발생했습니다. 내 암호가 만료되었지만 아직 변경하지 않았습니다. 일단 변경되면 컴퓨터가 새 자격 증명을 사용하여 작동하도록 로그 아웃했다가 다시 로그인해야했습니다.


답변

Integrated Security=true연결 문자열에서이 매개 변수를 제거하도록 설정 하십시오.


중요 : @Auspex 사용자가 언급했듯이

통합 보안을 제거하면 Windows 자격 증명으로 로그인하려고 할 때 오류가 발생하므로이 오류를 방지 할 수 있습니다. 불행히도 대부분의 경우 Windows 자격 증명으로 로그인 할 수 있기를 원합니다.


답변

Windows 인증을 시도 할 때 동일한 오류가 발생했습니다. 우스꽝스럽게 들리지만 다른 사람에게 도움이되는 경우를 대비하여 : 로그인 (!)하는 동안 내 도메인 계정이 어떻게 든 잠 겼기 때문입니다. 계정을 잠금 해제하면 문제가 해결되었습니다.


답변

암호 대신 PIN을 사용하여 Windows 10에 로그인했습니다. 로그 아웃했다가 대신 내 암호로 다시 로그인했으며 Management Studio를 통해 SQL Server에 로그인 할 수있었습니다.


답변

이 가장 모호한 오류에 또 다른 잠재적 솔루션을 추가하려면 다음을 수행하십시오 The target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider).

SQL Server를 ping 할 때 확인 된 IP가 구성 관리자의 IP와 동일한 지 확인합니다. 확인하려면 SQL Server 구성 관리자를 열고 SQL Server 네트워크 구성> MSSQLServer 용 프로토콜> TCP / IP로 이동합니다.

TCP / IP가 활성화되어 있는지 확인하고 IP 주소 탭에서 ping을 수행 할 때 서버가 확인하는 IP가 여기에서 동일한 지 확인합니다. 그것은 나를 위해이 오류를 수정했습니다.


답변

SSPI 컨텍스트 오류는 확실히 Kerberos를 사용하여 인증을 시도하고 있음을 나타냅니다 .

Kerberos 인증 SQL Server의 Windows 인증 은 컴퓨터와 네트워크 도메인 컨트롤러간에 추진 된 관계가 필요한 Active Directory에 의존 하므로 먼저 해당 관계의 유효성을 검사해야합니다.

다음 Powershell 명령 Test-ComputerSecureChannel을 통해 해당 관계를 빠르게 확인할 수 있습니다 .

Test-ComputerSecureChannel -verbose

여기에 이미지 설명 입력

False를 반환 하면 컴퓨터 Active Directory 보안 채널을 복구해야 합니다. 그렇지 않으면 컴퓨터 외부에서 도메인 자격 증명 유효성 검사가 불가능하기 때문입니다.

다음 Powershell 명령을 통해 컴퓨터 보안 채널을 복구 할 수 있습니다 .

Test-ComputerSecureChannel -Repair

보안 이벤트 로그를 확인하십시오. kerberos를 사용하는 경우 인증 패키지 : Kerberos로 로그온 시도가 표시되어야합니다.

NTLM 인증이 실패 할 수 있으므로 kerberos 인증을 시도하고 있습니다. 보안 이벤트 로그에 NTLM 로그온 시도 실패가 표시 될 수도 있습니다.

dev에서 kerberos 이벤트 로깅을 켜서 매우 장황하지만 kerberos가 실패한 이유를 디버깅 할 수 있습니다.

SQL Server 용 Microsoft의 Kerberos 구성 관리자는 이 문제를 빠르게 진단하고 해결하는 데 도움이 될 수 있습니다.

읽어야 할 좋은 이야기가 있습니다. http://houseofbrick.com/microsoft-made-an-easy-button-for-spn-and-double-hop-issues/