이 모니터는 Microsoft® SQL Server™ 인스턴스 서비스 사용자 이름 구성의 상태를 확인합니다.
이 모니터는 Microsoft® SQL Server™ 인스턴스의 SPN(서비스 사용자 이름) 구성을 확인합니다. 이 작업은 SQL Server 서비스 및 도메인 컨트롤러 구성을 비교하여 수행됩니다.
SQL Server 데이터베이스 엔진의 SPN(서비스 사용자 이름)이 도메인의 Active Directory에서 누락되었거나, 위치가 잘못되었거나, 다른 SPN과 중복되었을 수 있습니다.
참고: 위치가 잘못된 SPN은 Active Directory의 잘못된 계정에 구성된 SPN입니다.
setspn.exe 및 klist.exe 프로그램을 사용하면 이 문제를 해결할 수 있습니다.
두 도구 모두 Windows Server 2008 이상에서 제공됩니다. 이전 버전의 Windows에서는 Microsoft Download Center에서 별도로 다운로드하거나 Windows 지원 도구 패키지에서 가져와야 할 수 있습니다.
사례 1: 누락된 SPN 해결 방법:
1. 다음 명령을 실행하여 누락된 SPN 추가합니다.
setspn –A <SPN> <계정>
2. 클라이언트 응용 프로그램에서 SQL Server에 다시 연결해봅니다.
또는 SQL이 필요한 SPN을 자동으로 생성하도록 SQL Service 계정에 적합한 권한을 제공할 수 있습니다.
참고: SPN이 누락된 경우 연결 오류가 발생하지 않을 수 있지만 응용 프로그램이 Kerberos 인증을 사용할 수 없습니다.
사례 2: 위치가 잘못된 SPN 해결 방법:
1. 위치가 잘못된 SPN을 제거하려면 다음 명령을 실행합니다.
setspn –D <SPN> <계정>
2. 클라이언트 컴퓨터에서 로그오프한 후 다시 로그인하거나 다음 명령을 실행하여 Kerberos 티켓 캐시를 지웁니다.
klist purge
3. 클라이언트 응용 프로그램에서 SQL Server에 다시 연결해봅니다.
참고: 응용 프로그램에서 Kerberos를 사용하려면 위 사례 1의 해결 방법을 사용해서 올바른 SPN을 구성해야 합니다.
사례 3: 중복된 SPN 해결 방법:
1. 중복되어 제거해야 하는 SPN을 식별합니다.
2. 중복된 각 SPN을 제거하려면 다음 명령을 실행합니다.
setspn –D <SPN> <계정>
3. 클라이언트 컴퓨터에서 로그오프한 후 다시 로그인하거나 다음 명령을 실행하여 Kerberos 티켓 캐시를 지웁니다.
klist purge
4. 클라이언트 응용 프로그램에서 SQL Server에 다시 연결해봅니다.
Target | Microsoft.SQLServer.2008.DBEngine | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.DBEngine.Configuration.SPNStatusMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/Account$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MissingSpnList']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='MisplacedSpnList']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='DuplicateSpnList']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Good" MonitorTypeStateID="Good" HealthState="Success"/>
<OperationalState ID="Bad" MonitorTypeStateID="Bad" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerNetworkName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerNetworkName>
<NetbiosComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</InstanceName>
<Account>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/Account$</Account>
<ServiceName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</ServiceName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SearchScope>LDAP</SearchScope>
</Configuration>
</UnitMonitor>