Dela via


Tjänsthuvudnamn (SPN) i klientanslutningar (OLE DB)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Viktig

Den interna SQL Server-klienten (ofta förkortad SNAC) har tagits bort från SQL Server 2022 (16.x) och SQL Server Management Studio 19 (SSMS). Både SQL Server Native Client OLE DB-providern (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny utveckling. Växla till den nya Microsoft OLE DB Driver (MSOLEDBSQL) för SQL Server framöver.

Det här avsnittet beskriver OLE DB-egenskaper och medlemsfunktioner som stöder tjänsthuvudnamn (SPN) i klientprogram. Mer information om SPN i klientprogram finns i SPN-stöd (Service Principal Name) i Klientanslutningar. Ett exempel finns i Integrerad Kerberos-autentisering (OLE DB).

Nyckelord för providerinitieringssträng

Följande nyckelord för providerinitieringssträng stöder SPN i OLE DB-program. I följande tabell används värdena i nyckelordskolumnen för providersträngen IDBInitialize::Initialize. Värdena i beskrivningskolumnen används i initieringssträngar vid anslutning med hjälp av ADO eller IDataInitialize::GetDataSource.

Nyckelord Beskrivning Värde
ServerSPN Server-SPN SPN för servern. Standardvärdet är en tom sträng, vilket gör att SQL Server Native Client använder standard, providergenererat SPN.
FailoverPartnerSPN SPN för redundanspartner SPN för redundanspartnern. Standardvärdet är en tom sträng, vilket gör att SQL Server Native Client använder standard, providergenererat SPN.

Initieringsegenskaper för datakälla

Följande egenskaper i egenskapsuppsättningen DBPROPSET_SQLSERVERDBINIT tillåter att program anger SPN.

Namn Typ Användning
SSPROP_INIT_SERVERSPN VT_BSTR, läsa/skriva Anger SPN för servern. Standardvärdet är en tom sträng, vilket gör att SQL Server Native Client använder standard, providergenererat SPN.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, läsa/skriva Anger SPN för redundanspartnern. Standardvärdet är en tom sträng, vilket gör att SQL Server Native Client använder standard, providergenererat SPN.

Egenskaper för datakälla

Följande egenskaper i egenskapsuppsättningen DBPROPSET_SQLSERVERDATASOURCEINFO gör det möjligt för program att identifiera autentiseringsmetoden.

Namn Typ Användning
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, skrivskyddat Returnerar den autentiseringsmetod som används för anslutningen. Värdet som returneras till programmet är det värde som Windows returnerar till den interna SQL Server-klienten. Följande är möjliga värden:
"NTLM", som returneras när en anslutning öppnas med NTLM-autentisering.
"Kerberos", som returneras när en anslutning öppnas med Kerberos-autentisering.

Om en anslutning har öppnats och autentiseringsmetoden inte kan fastställas returneras VT_EMPTY.

Den här egenskapen kan bara läsas när en datakälla har initierats. Om du försöker läsa egenskapen innan en datakälla har initierats returnerar IDBProperties::GetProperties DB_S_ERRORSOCCURRED eller DB_E_ERRORSOCCURRED, efter behov, och DBPROPSTATUS_NOTSUPPORTED anges i DBPROPSET_PROPERTIESINERROR för den här egenskapen. Det här beteendet är i enlighet med OLE DB-kärnspecifikationen.
SSPROP_MUTUALLYAUTHENTICATED VT_BOOL, skrivskyddat Returnerar VARIANT_TRUE om servrarna på anslutningen autentiserades ömsesidigt. annars returnerar VARIANT_FALSE.

Den här egenskapen kan bara läsas när en datakälla har initierats. Om det görs ett försök att läsa egenskapen innan en datakälla har initierats returnerar IDBProperties::GetProperties DB_S_ERRORSOCCURRED eller DB_E_ERRORSOCCURRED, efter behov, och DBPROPSTATUS_NOTSUPPORTED anges i DBPROPSET_PROPERTIESINERROR för den här egenskapen. Det här beteendet är i enlighet med OLE DB-kärnspecifikationen

Om det här attributet efterfrågas för en anslutning som inte använde Windows-autentisering returneras VARIANT_FALSE.

STÖD FÖR OLE DB API för SPN

I följande tabell beskrivs de OLE DB-medlemsfunktioner som stöder SPN i klientanslutningar:

Medlemsfunktion Beskrivning
IDataInitialize::GetDataSource pwszInitializationString kan innehålla de nya nyckelorden ServerSPN och FailoverPartnerSPN.
IDataInitialize::GetInitializationString Om SSPROP_INIT_SERVERSPN och SSPROP_INIT_FAILOVERPARTNERSPN inte har standardvärden inkluderas de i initieringssträngen via ppwszInitString som nyckelordsvärden för ServerSPN och FailoverPartnerSPN. Annars inkluderas inte dessa nyckelord i initieringssträngen.
IDBInitialize::Initiera Om frågan är aktiverad genom att ange DBPROP_INIT_PROMPT i initieringsegenskaperna för datakällan visas dialogrutan OLE DB-inloggning. Detta gör att SPN kan anges för både huvudservern och dess redundanspartner.

Providersträngen i DBPROP_INIT_PROVIDERSTRING, om den anges, identifierar de nya nyckelorden ServerSPN och FailoverPartnerSPN och använder sina värden, om sådana finns, för att initiera SSPROP_INIT_SERVER_SPN och SSPROP_INIT_FAILOVER_PARTNER_SPN.

IDBProperties::SetProperties kan anropas för att ange egenskaperna SSPROP_INIT_SERVER_SPN och SSPROP_INIT_FAILOVER_PARTNER_SPN innan IDBInitialize::Initiera anropas. Det här är ett alternativ till att använda en providersträng.

Om en egenskap anges på mer än en plats har en värdeuppsättning programmatiskt företräde framför ett värde som anges i providersträngen. Ett värde som anges i en initieringssträng har företräde framför ett värde som anges i en inloggningsdialogruta.

Om samma nyckelord visas mer än en gång i providersträngen har värdet från den första förekomsten företräde.
IDBProperties::GetProperties IDBProperties::GetProperties kan anropas för att hämta värdena för de nya initieringsegenskaperna för datakällan SSPROP_INIT_SERVERSPN och SSPROP_INIT_FAILOVERPARTNERSPN samt för de nya egenskaperna för datakällan SSPROP_AUTHENTICATIONMETHOD och SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo innehåller de nya initieringsegenskaperna för datakällor SSPROP_INIT_SERVERSPN och SSPROP_INIT_FAILOVERPARTNERSPN, eller de nya egenskaperna för datakällan SSPROP_AUTHENTICATION_METHOD och SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::SetProperties IDBProperties::SetProperties kan anropas för att ange värdena för de nya initieringsegenskaperna för datakällan SSPROP_INITSERVERSPN och SSPROP_INIT_FAILOVERPARTNERSPN.

Dessa egenskaper kan ställas in när som helst, men om datakällan redan är öppen returneras följande fel: DB_E_ERRORSOCCURRED, "Ole DB-åtgärden med flera steg genererade fel. Kontrollera varje OLE DB-statusvärde om det är tillgängligt. Inget arbete har utförts."

Se även

SQL Server Native Client (OLE DB)