Delen via


SPN's (Service Principal Names) in CLIENTverbindingen (OLE DB)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Belangrijk

De SQL Server Native Client (vaak afgekort SNAC) is verwijderd uit SQL Server 2022 (16.x) en SQL Server Management Studio 19 (SSMS). Zowel de SQL Server Native Client OLE DB-provider (SQLNCLI of SQLNCLI11) als de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor nieuwe ontwikkeling. Schakel over naar het nieuwe Microsoft OLE DB-stuurprogramma (MSOLEDBSQL) voor SQL Server.

In dit onderwerp worden OLE DB-eigenschappen en lidfuncties beschreven die service-principalnamen (SPN's) ondersteunen in clienttoepassingen. Zie SPN-ondersteuning (Service Principal Name) in clientverbindingenvoor meer informatie over SPN's in clienttoepassingen. Zie OLE DB -(Integrated Kerberos Authentication) voor een voorbeeld.

Trefwoorden voor initialisatietekenreeks van provider

De volgende initialisatietekenreekstrefwoorden van de provider ondersteunen SPN's in OLE DB-toepassingen. In de volgende tabel worden de waarden in de kolom met trefwoorden gebruikt voor de providertekenreeks IDBInitialize::Initialize. De waarden in de beschrijvingskolom worden gebruikt in initialisatietekenreeksen bij het verbinden met behulp van ADO of IDataInitialize::GetDataSource.

Trefwoord Beschrijving Waarde
ServerSPN Server SPN De SPN voor de server. De standaardwaarde is een lege tekenreeks, waardoor SQL Server Native Client de door de provider gegenereerde SPN gebruikt.
FailoverPartnerSPN SPN van failoverpartner De SPN voor de failoverpartner. De standaardwaarde is een lege tekenreeks, waardoor SQL Server Native Client de door de provider gegenereerde SPN gebruikt.

Initialisatie-eigenschappen van gegevensbron

Met de volgende eigenschappen in de eigenschappenset DBPROPSET_SQLSERVERDBINIT kunnen toepassingen SPN's opgeven.

Naam Type Gebruik
SSPROP_INIT_SERVERSPN VT_BSTR, lezen/schrijven Hiermee geeft u de SPN voor de server. De standaardwaarde is een lege tekenreeks, waardoor SQL Server Native Client de door de provider gegenereerde SPN gebruikt.
SSPROP_INIT_FAILOVERPARTNERSPN VT_BSTR, lezen/schrijven Hiermee geeft u de SPN voor de failoverpartner. De standaardwaarde is een lege tekenreeks, waardoor SQL Server Native Client de door de provider gegenereerde SPN gebruikt.

Eigenschappen van gegevensbron

Met de volgende eigenschappen in de eigenschappenset DBPROPSET_SQLSERVERDATASOURCEINFO kunnen toepassingen de verificatiemethode detecteren.

Naam Type Gebruik
SSPROP_INTEGRATEDAUTHENTICATIONMETHOD VT_BSTR, alleen-lezen Retourneert de verificatiemethode die wordt gebruikt voor de verbinding. De waarde die naar de toepassing wordt geretourneerd, is de waarde die Windows retourneert naar SQL Server Native Client. Hier volgen mogelijke waarden:
'NTLM', dat wordt geretourneerd wanneer een verbinding wordt geopend met behulp van NTLM-verificatie.
'Kerberos', die wordt geretourneerd wanneer een verbinding wordt geopend met behulp van Kerberos-verificatie.

Als er een verbinding is geopend en de verificatiemethode niet kan worden bepaald, wordt VT_EMPTY geretourneerd.

Deze eigenschap kan alleen worden gelezen wanneer een gegevensbron is geïnitialiseerd. Als u de eigenschap probeert te lezen voordat een gegevensbron is geïnitialiseerd, retourneert IDBProperties::GetProperties DB_S_ERRORSOCCURRED of DB_E_ERRORSOCCURRED, indien van toepassing, en wordt DBPROPSTATUS_NOTSUPPORTED ingesteld in DBPROPSET_PROPERTIESINERROR voor deze eigenschap. Dit gedrag is in overeenstemming met de OLE DB-kernspecificatie.
SSPROP_MUTUALLYAUTHENTICATED VT_BOOL, alleen-lezen Retourneert VARIANT_TRUE als de servers op de verbinding wederzijds zijn geverifieerd; retourneert anders VARIANT_FALSE.

Deze eigenschap kan alleen worden gelezen wanneer een gegevensbron is geïnitialiseerd. Als er een poging is om de eigenschap te lezen voordat een gegevensbron is geïnitialiseerd, retourneert IDBProperties::GetProperties DB_S_ERRORSOCCURRED of DB_E_ERRORSOCCURRED, indien van toepassing, en wordt DBPROPSTATUS_NOTSUPPORTED ingesteld in DBPROPSET_PROPERTIESINERROR voor deze eigenschap. Dit gedrag is in overeenstemming met de OLE DB-kernspecificatie

Als dit kenmerk wordt opgevraagd voor een verbinding die geen gebruik heeftgemaakt van Windows-verificatie, wordt VARIANT_FALSE geretourneerd.

OLE DB API-ondersteuning voor SPN's

In de volgende tabel worden de OLE DB-lidfuncties beschreven die SPN's ondersteunen in clientverbindingen:

Lid, functie Beschrijving
IDataInitialize::GetDataSource pwszInitializationString kan de nieuwe trefwoorden ServerSPN- en FailoverPartnerSPN-bevatten.
IDataInitialize::GetInitializationString Als SSPROP_INIT_SERVERSPN en SSPROP_INIT_FAILOVERPARTNERSPN niet-standaardwaarden hebben, worden deze opgenomen in de initialisatietekenreeks via ppwszInitString- als trefwoordwaarden voor ServerSPN- en FailoverPartnerSPN-. Anders worden deze trefwoorden niet opgenomen in de initialisatietekenreeks.
IDBInitialize::Initialiseren Als u hierom wordt gevraagd door DBPROP_INIT_PROMPT in te stellen in de initialisatie-eigenschappen van de gegevensbron, wordt het dialoogvenster OLE DB-aanmelding weergegeven. Hierdoor kunnen SPN's worden ingevoerd voor zowel de principal-server als de failoverpartner.

De providertekenreeks in DBPROP_INIT_PROVIDERSTRING, indien ingesteld, herkent de nieuwe trefwoorden ServerSPN- en FailoverPartnerSPN- en gebruikt de bijbehorende waarden, indien aanwezig, om SSPROP_INIT_SERVER_SPN en SSPROP_INIT_FAILOVER_PARTNER_SPN te initialiseren.

IDBProperties::SetProperties kan worden aangeroepen om de eigenschappen in te stellen SSPROP_INIT_SERVER_SPN en SSPROP_INIT_FAILOVER_PARTNER_SPN voordat IDBInitialize::Initialize wordt aangeroepen. Dit is een alternatief voor het gebruik van een providertekenreeks.

Als een eigenschap op meer dan één plaats is ingesteld, heeft een waardeset programmatisch voorrang op een waarde die is ingesteld in de providertekenreeks. Een waarde die is ingesteld in een initialisatietekenreeks heeft voorrang op een waarde die is ingesteld in een aanmeldingsdialoogvenster.

Als hetzelfde trefwoord meerdere keren wordt weergegeven in de tekenreeks van de provider, heeft de waarde van het eerste exemplaar voorrang.
IDBProperties::GetProperties IDBProperties::GetProperties kunnen worden aangeroepen om de waarden op te halen van de nieuwe eigenschappen voor initialisatie van gegevensbronnen SSPROP_INIT_SERVERSPN en SSPROP_INIT_FAILOVERPARTNERSPN, en van de nieuwe eigenschappen van de gegevensbron SSPROP_AUTHENTICATIONMETHOD en SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::GetPropertyInfo IdbProperties::GetPropertyInfo bevat de nieuwe eigenschappen voor initialisatie van gegevensbronnen SSPROP_INIT_SERVERSPN en SSPROP_INIT_FAILOVERPARTNERSPN, of de nieuwe eigenschappen van de gegevensbron SSPROP_AUTHENTICATION_METHOD en SSPROP_MUTUALLYAUTHENTICATED.
IDBProperties::SetProperties IDBProperties::SetProperties kan worden aangeroepen om de waarden in te stellen van de nieuwe eigenschappen voor initialisatie van gegevensbronnen SSPROP_INITSERVERSPN en SSPROP_INIT_FAILOVERPARTNERSPN.

Deze eigenschappen kunnen op elk gewenst moment worden ingesteld, maar als de gegevensbron al is geopend, wordt de volgende fout geretourneerd: DB_E_ERRORSOCCURRED, 'Ole DB-bewerking met meerdere stappen gegenereerde fouten. Controleer indien beschikbaar elke OLE DB-statuswaarde. Er is geen werk gedaan."

Zie ook

OLE DB (SQL Server Native Client)