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

비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  [37]  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
12704정성태7/12/20217977개발 환경 구성: 576. Azure VM의 서비스를 Azure Web App Service에서만 접근하도록 NSG 설정을 제한하는 방법
12703정성태7/11/202113624개발 환경 구성: 575. Azure VM에 (ICMP) ping을 허용하는 방법
12702정성태7/11/20218754오류 유형: 733. TaskScheduler에 등록된 wacs.exe의 Let's Encrypt 인증서 업데이트 문제
12701정성태7/9/20218400.NET Framework: 1075. C# - ThreadPool의 스레드는 반환 시 ThreadStatic과 AsyncLocal 값이 초기화 될까요?파일 다운로드1
12700정성태7/8/20218819.NET Framework: 1074. RuntimeType의 메모리 누수? [1]
12699정성태7/8/20217605VS.NET IDE: 167. Visual Studio 디버깅 중 GC Heap 상태를 보여주는 "Show Diagnostic Tools" 메뉴 사용법
12698정성태7/7/202111577오류 유형: 732. Windows 11 업데이트 시 3% 또는 0%에서 다운로드가 멈춘 경우
12697정성태7/7/20217462개발 환경 구성: 574. Windows 11 (Insider Preview) 설치하는 방법
12696정성태7/6/20218029VC++: 146. 운영체제의 스레드 문맥 교환(Context Switch)을 유사하게 구현하는 방법파일 다운로드2
12695정성태7/3/20218072VC++: 145. C 언어의 setjmp/longjmp 기능을 Thread Context를 이용해 유사하게 구현하는 방법파일 다운로드1
12694정성태7/2/20219994Java: 24. Azure - Spring Boot 앱을 Java SE(Embedded Web Server)로 호스팅 시 로그 파일 남기는 방법 [1]
12693정성태6/30/20217767오류 유형: 731. Azure Web App Site Extension - Failed to install web app extension [...]. {1}
12692정성태6/30/20217651디버깅 기술: 180. Azure - Web App의 비정상 종료 시 남겨지는 로그 확인
12691정성태6/30/20218500개발 환경 구성: 573. 테스트 용도이지만 테스트에 적합하지 않은 Azure D1 공유(shared) 요금제
12690정성태6/28/20219309Java: 23. Azure - 자바(Java)로 만드는 Web App Service - Tomcat 호스팅
12689정성태6/25/20219835오류 유형: 730. Windows Forms 디자이너 - The class Form1 can be designed, but is not the first class in the file. [1]
12688정성태6/24/20219549.NET Framework: 1073. C# - JSON 역/직렬화 시 리플렉션 손실을 없애는 JsonSrcGen [2]파일 다운로드1
12687정성태6/22/20217548오류 유형: 729. Invalid data: Invalid artifact, java se app service only supports .jar artifact
12686정성태6/21/20219984Java: 22. Azure - 자바(Java)로 만드는 Web App Service - Java SE (Embedded Web Server) 호스팅
12685정성태6/21/202110201Java: 21. Azure Web App Service에 배포된 Java 프로세스의 메모리 및 힙(Heap) 덤프 뜨는 방법
12684정성태6/19/20218655오류 유형: 728. Visual Studio 2022부터 DTE.get_Properties 속성 접근 시 System.MissingMethodException 예외 발생
12683정성태6/18/202110170VS.NET IDE: 166. Visual Studio 2022 - Windows Forms 프로젝트의 x86 DLL 컨트롤이 Designer에서 오류가 발생하는 문제 [1]파일 다운로드1
12682정성태6/18/20217838VS.NET IDE: 165. Visual Studio 2022를 위한 Extension 마이그레이션
12681정성태6/18/20217177오류 유형: 727. .NET 2.0 ~ 3.5 + x64 환경에서 System.EnterpriseServices 참조 시 CS8012 경고
12680정성태6/18/20218269오류 유형: 726. python2.7.exe 실행 시 0xc000007b 오류
12679정성태6/18/20218876COM 개체 관련: 23. CoInitializeSecurity의 전역 설정을 재정의하는 CoSetProxyBlanket 함수 사용법파일 다운로드1
... 31  32  33  34  35  36  [37]  38  39  40  41  42  43  44  45  ...