Condividi tramite


Nomi SPN (Service Principal Name) nelle connessioni client (OLE DB)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Importante

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e da SQL Server Management Studio 19 (SSMS). Il provider OLE DB di SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB legacy Microsoft per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni. In futuro, passare al nuovo driver Microsoft OLE DB (MSOLEDBSQL) per SQL Server.

In questo argomento vengono descritte le funzioni membro e le proprietà OLE DB che supportano i nomi SPN (Service Principal Name) nelle applicazioni client. Per altre informazioni sui nomi SPN nelle applicazioni client, vedere Supporto del nome dell'entità servizio (SPN) nelle connessioni client. Per un esempio, vedere Autenticazione Kerberos integrata (OLE DB).

Parole chiave della stringa di inizializzazione del provider

Le seguenti parole chiave della stringa di inizializzazione del provider supportano i nomi SPN nelle applicazioni OLE DB. Nella tabella seguente i valori nella colonna relativa alla parola chiave vengono usati per la stringa del provider di IDBInitialize::Initialize. I valori nella colonna relativa alla descrizione vengono usati nelle stringhe di inizializzazione quando la connessione viene eseguita con ADO oppure IDataInitialize::GetDataSource.

Parola chiave Descrizione valore
ServerSPN SPN server Nome SPN del server. Il valore predefinito è una stringa vuota, che fa sì che SQL Server Native Client usi il nome SPN predefinito generato dal provider.
FailoverPartnerSPN Nome SPN del partner di failover Nome SPN del partner di failover. Il valore predefinito è una stringa vuota, che fa sì che SQL Server Native Client usi il nome SPN predefinito generato dal provider.

Proprietà di inizializzazione dell'origine dati

Le seguenti proprietà del set di proprietà DBPROPSET_SQLSERVERDBINIT consentono alle applicazioni di specificare nomi SPN.

Nome Type Utilizzo
SSPROP_INIT_SERVERSPN VT_BSTR, lettura/scrittura Specifica il nome SPN per il server. Il valore predefinito è una stringa vuota, che fa sì che SQL Server Native Client usi il nome SPN predefinito generato dal provider.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, lettura/scrittura Specifica il nome SPN per il partner di failover. Il valore predefinito è una stringa vuota, che fa sì che SQL Server Native Client usi il nome SPN predefinito generato dal provider.

Proprietà dell'origine dati

Le seguenti proprietà del set di proprietà DBPROPSET_SQLSERVERDATASOURCEINFO consentono alle applicazioni di trovare il metodo di autenticazione.

Nome Type Utilizzo
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, sola lettura Restituisce il metodo di autenticazione utilizzato per la connessione. Il valore restituito all'applicazione è il valore restituito da Windows a SQL Server Native Client. Di seguito sono riportati i valori possibili:
"NTLM", restituito quando una connessione viene aperta utilizzando l'autenticazione NTLM.
"Kerberos", restituito quando una connessione viene aperta utilizzando l'autenticazione Kerberos.

Se è stata aperta una connessione ed è impossibile determinare il metodo di autenticazione, viene restituito VT_EMPTY.

Questa proprietà può essere letta solo quando è stata inizializzata un'origine dati. Se si tenta di leggere la proprietà prima che sia stata inizializzata un'origine dati, IDBProperties::GetProperies restituirà DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED, a seconda dei casi e verrà impostato DBPROPSTATUS_NOTSUPPORTED in DBPROPSET_PROPERTIESINERROR per questa proprietà. Questo comportamento è conforme alla specifica OLE DB principale.
SSPROP_MUTUALLYAUTHENICATED VT_BOOL, sola lettura Restituisce VARIANT_TRUE se nella connessione è stata eseguita un'autenticazione reciproca dei server. In caso contrario, restituisce VARIANT_FALSE.

Questa proprietà può essere letta solo quando è stata inizializzata un'origine dati. Se si tenta di leggere la proprietà prima che sia stata inizializzata un'origine dati, IDBProperties::GetProperies restituirà DB_S_ERRORSOCCURRED o DB_E_ERRORSOCCURRED, a seconda dei casi e verrà impostato DBPROPSTATUS_NOTSUPPORTED in DBPROPSET_PROPERTIESINERROR per questa proprietà. Questo comportamento è conforme alla specifica OLE DB principale

Se viene eseguita una query su questo attributo per una connessione in cui non è stata utilizzata l'autenticazione di Windows, viene restituito VARIANT_FALSE.

Supporto dell'API OLE DB per i nomi SPN

Nella tabella seguente vengono descritte le funzioni membro OLE DB che supportano i nomi SPN nelle connessioni client:

Funzione membro Descrizione
IDataInitialize::GetDataSource pwszInitializationString può contenere le nuove parole chiave ServerSPN e FailoverPartnerSPN.
IDataInitialize::GetInitializationString Se SSPROP_INIT_SERVERSPN e SSPROP_INIT_FAILOVERPARTNERSPN contengono valori non predefiniti, saranno inclusi nella stringa di inizializzazione attraverso ppwszInitString come valori di parola chiave per ServerSPN e FailoverPartnerSPN. In caso contrario, queste parole chiave non saranno incluse nella stringa di inizializzazione.
IDBInitialize::Initialize Se la richiesta viene abilitata impostando DBPROP_INIT_PROMPT nelle proprietà di inizializzazione dell'origine dati, verrà visualizzata la finestra di dialogo di accesso OLE DB. Ciò consente di immettere i nomi SPN per il server principale e per il relativo partner di failover.

La stringa del provider in DPPROP_INIT_PROVIDERSTRING, se impostata, riconoscerà le nuove parole chiave ServerSPN e FailoverPartnerSPN e userà i relativi valori, se presenti, per inizializzare SSPROP_INIT_SERVER_SPN e SSPROP_INIT_FAILOVER_PARTNER_SPN.

È possibile chiamare IDBProperties::SetProperties per impostare le proprietà SSPROP_INIT_SERVER_SPN e SSPROP_INIT_FAILOVER_PARTNER_SPN prima che venga chiamato IDBInitialize::Initialize. Si tratta di un'alternativa all'utilizzo di una stringa del provider.

Se una proprietà viene impostata in più posizioni, un valore impostato a livello di programmazione ha la precedenza su un valore impostato nella stringa del provider. Un valore impostato in una stringa di inizializzazione ha la precedenza su un valore impostato in una finestra di dialogo.

Se la stessa parola chiave viene visualizzata più volte nella stringa del provider, il valore della prima occorrenza avrà la precedenza.
IDBProperties::GetProperties È possibile chiamare IDBProperties::GetProperties per ottenere i valori delle nuove proprietà di inizializzazione dell'origine dati SSPROP_INIT_SERVERSPN e SSPROP_INIT_FAILOVERPARTNERSPN e delle nuove proprietà dell'origine dati SPROP_AUTHENTICATIONMETHOD e SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo include le nuove proprietà di inizializzazione dell'origine dati SSPROP_INIT_SERVERSPN e SSPROP_INIT_FAILOVERPARTNERSPN oppure le nuove proprietà dell'origine dati SPROP_AUTHENTICATIONMETHOD e SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::SetProperties È possibile chiamare IDBProperties::SetProperties per impostare i valori delle nuove proprietà di inizializzazione dell'origine dati SSPROP_INITSERVERSPN e SSPROP_INIT_FAILOVERPARTNERSPN.

È possibile impostare queste proprietà in qualsiasi momento; tuttavia, se l'origine dati è già aperta, verrà restituito il seguente errore: DB_E_ERRORSOCCURRED, "Si sono verificati errori in un'operazione OLE DB composta da più passaggi. Controllare i singoli valori di stato OLE DB, se disponibili. Nessuna operazione eseguita".

Vedi anche

SQL Server Native Client (OLE DB)