Questo monitoraggio controlla lo stato della configurazione del nome dell'entità servizio dell'istanza di Microsoft SQL Server.
Questo monitoraggio controlla la configurazione del nome dell'entità servizio (SPN) dell'istanza di Microsoft SQL Server. Ciò si effettua confrontando le configurazioni del controller di dominio e del servizio SQL Server.
Un nome dell'entità servizio (SPN) per il motore di database di SQL Server potrebbe essere mancante, erroneamente posizionato o può essere un duplicato di altri nomi dell'entità servizio (SPN) configurati in Active Directory nel dominio.
Nota: un nome dell'entità servizio (SPN) erroneamente posizionato è un nome dell'entità servizio (SPN) configurato per un account non corretto in Active Directory.
I programmi setspn.exe e klist.exe possono risultare utili per risolvere questo problema.
Entrambi gli strumenti sono inclusi in Windows Server 2008 e versioni successive. Per versioni di Windows precedenti potrebbe essere necessario scaricare tali strumenti separatamente dall'Area download Microsoft od ottenerli dal pacchetto Strumenti di supporto di Windows.
Caso 1: Come risolvere un nome dell'entità servizio (SPN) mancante:
1. Per aggiungere il nome dell'entità servizio (SPN) mancante, eseguire il comando seguente:
setspn –S <SPN> <Account>
2. Riprovare a connettersi a SQL Server con l'applicazione client in uso.
È anche possibile usare il parametro /S o –A per il comando setspn. Sebbene il secondo sia considerato deprecato, può essere ancora usato nelle versioni di Windows Server meno recenti (2012, 2012 R2).
Si noti che nel caso in cui venga usato un account virtuale (ad esempio un account di sistema locale o NT Service\MSSQL Server), il valore <Account> per il comando setspn deve essere presentato dal nome host del computer.
In alternativa, è possibile fornire le autorizzazioni appropriate all'account del servizio SQL per consentire a SQL di generare automaticamente i nomi SPN necessari.
Nota: un nome dell'entità servizio (SPN) mancante non può generare un errore di connettività ma può impedire all'applicazione di usare l'autenticazione Kerberos.
Caso 2: Come risolvere un nome dell'entità servizio (SPN) erroneamente posizionato:
1. Per rimuovere il nome dell'entità servizio (SPN) posizionato erroneamente, eseguire il comando seguente:
setspn -D <SPN> <Account>
2. Nel computer client, disconnettersi ed effettuare nuovamente l'accesso o cancellare la cache del ticket Kerberos eseguendo il comando seguente:
klist purge
3. Riprovare a connettersi a SQL Server con l'applicazione client in uso.
Nota: se si vuole usare Kerberos dall'applicazione è necessario configurare il nome dell'entità servizio (SPN) corretto usando la soluzione del Caso 1 precedente.
Caso 3: Come risolvere un nome dell'entità servizio (SPN) duplicato:
1. Identificare i nomi SPN duplicati da rimuovere.
2. Per rimuovere ciascun nome dell'entità servizio (SPN) duplicato, eseguire il comando seguente:
setspn -D <SPN> <Account>
3. Nel computer client, disconnettersi ed effettuare nuovamente l'accesso o cancellare la cache del ticket Kerberos eseguendo il comando seguente:
klist purge
4. Riprovare a connettersi a SQL Server con l'applicazione client in uso.
Nome | Descrizione | Valore predefinito |
Priorità avviso | Definisce la priorità dell'avviso. | Normale |
Gravità avviso | Definisce la gravità dell'avviso. | Avviso |
Abilitato | Abilita o disabilita il flusso di lavoro. | Sì |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso. | Sì |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 900 |
Ambito della ricerca | Usare la ricerca LDAP quando l'ambito della ricerca è costituito dal dominio o da un'unità organizzativa. Quando l'ambito di una ricerca è la foresta, la query può essere risolta in qualsiasi partizione tramite una ricerca del Catalogo globale. Elenco di valori: LDAP GC | LDAP |
Ora di sincronizzazione | Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa. |
|
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 300 |
Target | Microsoft.SQLServer.2014.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.2014.DBEngine.Configuration.SPNStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2014.DBEngine.Configuration.SPNStatusMonitor" Accessibility="Public" Enabled="true" Target="SQL2014Core!Microsoft.SQLServer.2014.DBEngine" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.DBEngine.Configuration.SPNStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.DBEngine.Configuration.SPNStatusMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.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="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</InstanceName>
<Account>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/Account$</Account>
<ServiceName>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.DBEngine"]/ServiceName$</ServiceName>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SearchScope>LDAP</SearchScope>
</Configuration>
</UnitMonitor>