Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 


The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service.


Oxite 설치로 인해 많은 일이 벌어지는군요. ^^ 그와 관련해서 SQL Express 버전의 User Instance 옵션도 알아봤지요.

SQL Express 버전과 User Instance 옵션 
; https://www.sysnet.pe.kr/2/0/668

그런데, UAC하의 계정에서 Oxite를 실행했더니 다음과 같은 오류가 발생했습니다.

A connection was successfully established with the server, but then an error occurred during the login process. (provider: Named Pipes Provider, error: 0 - No process is on the other end of the pipe.)



재미있는 것은, 조금의 시간이 흐른 후에 다시 해보면 정상적으로 Oxite 실행 화면이 나온다는 점입니다. 조금 더 살펴보니, SQL 서비스를 재시작하는 것에 문제가 있음을 알게 되었습니다. SQL 서비스가 "중지"는 빠르게 되는데, "시작"을 하면 한참 동안 진행 상태 대화창이 보이다가 결국에 다음과 같은 메시지를 내뱉으면서 서비스는 기어이 시작은 되어 있습니다.

[그림 1: SQL Express 2008 서비스 시작 오류]
sql_kerberos_failure_1.png

이 시점에 이벤트 로그를 살펴보면 다음과 같은 로그를 발견할 수 있습니다.

Log Name:      Application
Source:        MSSQL$SQLEXPRESS2008
Date:          2009-02-21 오전 11:58:14
Event ID:      26037
Task Category: Server
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      THEMYTH.mydomain.com
Description:
The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service. Error: 0x54b, state: 3. 
Failure to register an SPN may cause integrated authentication to fall back to NTLM instead of Kerberos. 
This is an informational message. 
Further action is only required if Kerberos authentication is required by authentication policies.

음... 이제야 이해가 갑니다. AD에 참여된 노트북이기 때문에 회사에서는 정상적으로 AD에 접속이 되어 Kerberos 보안이 적용된 SPN 등록이 이뤄지지만, 집에 와서 하니 AD 접속에 실패해서 대신 NTLM 보안 방식을 사용하겠다는 것입니다. Oxite 실행에서 처음에는 오류가 발생했다가, 시간이 흐른 뒤에 (즉, NTLM 보안으로 이행한 다음) 접속을 하면 정상적으로 실행되는 점도 같이 설명이 되어졌습니다.

그렇다면, SPN을 등록하지 않도록 하는 방법이 없을까요? 어차피 개인 PC에서 실행되는 SQL Express 버전이 크게 보안이 필요한 부분은 아니기 때문에 AD 접속으로 인한 지연 시간 때문에 웹 사이트 동작을 얼마간 기다려야 한다는 것은 별로 유쾌한 일은 아니니까요.

그러다 찾게 된 것이 아래의 토픽입니다.

SQL Server에서 Kerberos 인증을 사용하는 방법
; http://support.microsoft.com/kb/319723

위의 글을 읽다보면, 얻게 되는 단서가 2개 있는데 "Local SYSTEM" 계정은 SPN을 자동으로 구성한다는 점"과 클라이언트 측에서 "TCP/IP 프로토콜"을 사용하여 SQL 서버에 연결하는 경우에만 Kerberos 보안이 사용되어진다는 점입니다.

그렇다면, "Sql Server Configuration Manager"를 사용하여 TCP/IP 프로토콜을 끄면 혹시 자동적으로 Kerberos 지원을 포기하지 않을까 싶어서 봤는데... 흠... 이미 ^^; TCP/IP 프로콜은 꺼져있는 상태입니다. 이제 남은 희망이라면 "Local SYSTEM"을 다른 걸로 바꿔야 한다는 것인데, SQL Server 2005에서 기본적으로 "Network Service" 계정이었던 점을 감안하여 그걸로 한번 바꿔봤습니다. 쩝... 안되네요. 연이어 로컬 계정으로 지정해 보기도 하고, 설치 단계에서부터 SPN을 사용하겠다는 식으로 등록이 되어 그런 것이 아닐까 싶어서 SQL Express를 설치제거하고 다시 설치해보아도 역시나 안되었습니다.

어쩔 수 없군요. 이젠 다음의 3가지 중에 하나를 선택하는 수 밖에는 없을 것 같습니다.

  • 도메인을 탈퇴하거나,
  • SQL Express에 MDF 파일을 등록해서 쓰거나,
  • User Instance를 쓰지 말고 UAC 계정에서 관리자 계정으로 VS.NET을 실행한다.

(참고로, SQL Express 재설치 후에 User Instance 연결이 아예 안되는 경우 master DB가 캐쉬되어 있는 폴더를 삭제하시면 됩니다.)



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/10/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...
NoWriterDateCnt.TitleFile(s)
12063정성태11/21/201919793디버깅 기술: 134. windbg - RtlReportCriticalFailure로부터 parameters 정보 찾는 방법
12062정성태11/21/201919152디버깅 기술: 133. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례 - 두 번째 이야기
12061정성태11/20/201919491Windows: 167. CoTaskMemAlloc/CoTaskMemFree과 윈도우 Heap의 관계
12060정성태11/20/201921275디버깅 기술: 132. windbg/Visual Studio - HeapFree x64의 동작 분석
12059정성태11/20/201920499디버깅 기술: 131. windbg/Visual Studio - HeapFree x86의 동작 분석
12058정성태11/19/201921066디버깅 기술: 130. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례
12057정성태11/18/201916884오류 유형: 579. Visual Studio - Memory 창에서 유효한 주소 영역임에도 "Unable to evaluate the expression." 오류 출력
12056정성태11/18/201922534개발 환경 구성: 464. "Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법파일 다운로드1
12055정성태11/17/201916767개발 환경 구성: 463. Visual Studio의 Ctrl + Alt + M, 1 (Memory 1) 등의 단축키가 동작하지 않는 경우
12054정성태11/15/201918427.NET Framework: 869. C# - 일부러 GC Heap을 깨뜨려 GC 수행 시 비정상 종료시키는 예제
12053정성태11/15/201920063Windows: 166. 윈도우 10 - 명령행 창(cmd.exe) 속성에 (DotumChe, GulimChe, GungsuhChe 등의) 한글 폰트가 없는 경우
12052정성태11/15/201918749오류 유형: 578. Azure - 일정(schedule)에 등록한 runbook이 1년 후 실행이 안 되는 문제(Reason - The key used is expired.)
12051정성태11/14/201922421개발 환경 구성: 462. 시작하자마자 비정상 종료하는 프로세스의 메모리 덤프 - procdump [1]
12050정성태11/14/201920005Windows: 165. AcLayers의 API 후킹과 FaultTolerantHeap
12049정성태11/13/201920441.NET Framework: 868. (닷넷 프로세스를 대상으로) 디버거 방식이 아닌 CLR Profiler를 이용해 procdump.exe 기능 구현
12048정성태11/12/201920497Windows: 164. GUID 이름의 볼륨에 해당하는 파티션을 찾는 방법
12047정성태11/12/201922852Windows: 163. 안전하게 eject시킨 USB 장치를 물리적인 재연결 없이 다시 인식시키는 방법
12046정성태10/29/201917346오류 유형: 577. windbg - The call to LoadLibrary(...\sos.dll) failed, Win32 error 0n193
12045정성태10/27/201917355오류 유형: 576. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 - 두 번째 이야기
12044정성태10/27/201916836오류 유형: 575. mstest.exe - System.Resources.MissingSatelliteAssemblyException: The satellite assembly named "Microsoft.VisualStudio.ProductKeyDialog.resources.dll, ..."
12043정성태10/27/201918462오류 유형: 574. Windows 10 설치 시 오류 - 0xC1900101 - 0x4001E
12042정성태10/26/201918127오류 유형: 573. OneDrive 하위에 위치한 Documents, Desktop 폴더에 대한 권한 변경 시 "Unable to display current owner"
12041정성태10/23/201919113오류 유형: 572. mstest.exe - The load test results database could not be opened.
12040정성태10/23/201919452오류 유형: 571. Unhandled Exception: System.Net.Mail.SmtpException: Transaction failed. The server response was: 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied
12039정성태10/22/201916961스크립트: 16. cmd.exe의 for 문에서는 ERRORLEVEL이 설정되지 않는 문제
12038정성태10/17/201917030오류 유형: 570. SQL Server 2019 RC1 - SQL Client Connectivity SDK 설치 오류
... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...