이 모니터는 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 –S <SPN> <계정>
2. 클라이언트 응용 프로그램에서 SQL Server에 다시 연결해봅니다.
setspn 명령에 대해 /S 또는 –A 매개 변수를 사용할 수도 있습니다. –A 매개 변수는 더 이상 사용되지 않는 것으로 간주되지만 이전 Windows Server 버전(2012, 2012 R2)에서는 계속 사용할 수 있습니다.
가상 계정(예: 로컬 시스템 또는 NT 서비스\MSSQL Server)을 사용하는 경우 컴퓨터의 호스트 이름에 setspn 명령의 <Account> 값이 나타나야 합니다.
또는 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에 다시 연결해봅니다.
이름 | 설명 | 기본값 |
경고 우선 순위 | 알림 우선 순위를 정의합니다. | 보통 |
경고 심각도 | 알림 심각도를 정의합니다. | 경고 |
사용 | 워크플로 사용하거나 사용하지 않도록 설정합니다. | 예 |
알림 생성 | 워크플로에서 알림을 생성하는지 여부를 정의합니다. | 예 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 900 |
검색 범위 | 검색 범위가 도메인 또는 조직 구성 단위인 경우 LDAP 검색을 사용합니다. 검색 범위가 포리스트인 경우 글로벌 카탈로그(GC) 검색을 사용하여 임의의 파티션 내에서 쿼리를 해결할 수 있습니다. 값 목록: LDAP GC | LDAP |
동기화 시간 | 24시간 형식으로 지정된 동기화 시간입니다. 생략될 수 있습니다. |
|
시간 제한(초) | 여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다. | 300 |
Target | Microsoft.SQLServer.Windows.LocalDBEngine | ||
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.Windows.DBEngine.Configuration.SPNStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SqlDiscW!Microsoft.SQLServer.Windows.LocalDBEngine" ParentMonitorID="Health!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.DBEngine.Configuration.SPNStatusMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='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>
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<PrincipalName>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/PrincipalName$</PrincipalName>
<SearchScope>LDAP</SearchScope>
</Configuration>
</UnitMonitor>