Freigeben über


Dienstprinzipalnamen (SPN) in Clientverbindungen (ODBC)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Wichtig

SQL Server Native Client (SNAC) wird nicht ausgeliefert mit:

  • SQL Server 2022 (16.x) und höhere Versionen
  • SQL Server Management Studio 19 und spätere Versionen

Der SQL Server Native Client (SQLNCLI oder SQLNCLI11) und der Microsoft OLE DB-Legacyanbieter für SQL Server (SQLOLEDB) werden für neue Anwendungsentwicklungen nicht empfohlen.

Für neue Projekte verwenden Sie einen der folgenden Treiber:

Informationen zu SQLNCLI, das als Komponente der SQL Server-Datenbank-Engine (Versionen 2012 bis 2019) verfügbar ist, finden Sie in dieser Ausnahme für den Supportlebenszyklus.

In diesem Thema werden ODBC-Attribute und Funktionen beschrieben, die Dienstprinzipalnamen (SPN) in Clientanwendungen unterstützen. Weitere Informationen zu SPNs in Clientanwendungen finden Sie unter Service Principal Name (SPN)-Unterstützung in Clientverbindungen und Abrufen der gegenseitigen Kerberos-Authentifizierung.

Schlüsselwörter für Verbindungszeichenfolgen

Die folgenden Schlüsselwörter für Verbindungszeichenfolgen ermöglichen Clientanwendungen, einen SPN anzugeben.

Schlüsselwort Wert
ServerSPN Der SPN für den Server. Der Standardwert ist eine leere Zeichenfolge, wodurch SQL Server Native Client den standardmäßigen, vom Treiber generierten SPN verwendet.
FailoverPartnerSPN Der SPN für den Failoverpartner. Der Standardwert ist eine leere Zeichenfolge, wodurch SQL Server Native Client den standardmäßigen, vom Treiber generierten SPN verwendet.

Verbindungsattribute

Die folgenden Verbindungsattribute ermöglichen es Clientanwendungen, einen SPN anzugeben und eine Authentifizierungsmethode abzufragen.

Name type Verbrauch
SQL_COPT_SS_SERVER_SPN

SQL_COPT_SS_FAILOVER_PARTNER_SPN
SQLTCHAR, read/write Gibt den SPN für den Server an. Der Standardwert ist eine leere Zeichenfolge, wodurch SQL Server Native Client den standardmäßigen, vom Treiber generierten SPN verwendet.

Dieses Attribut kann nur abgefragt werden, nachdem es programmgesteuert festgelegt wurde oder nachdem eine Verbindung geöffnet wurde. Wenn versucht wird, dieses Attribut für eine Verbindung abzufragen, die nicht geöffnet ist, und wenn dieses nicht programmgesteuert festgelegt wurde, dann wird SQL_ERROR zurückgegeben, und es wird ein Diagnosedatensatz mit SQLState 08003 und der Meldung "Verbindung nicht geöffnet" protokolliert.

Wenn versucht wird, dieses Attribut festzulegen, wenn eine Verbindung geöffnet ist, dann wird SQL_ERROR zurückgegeben, und es wird ein Diagnosedatensatz mit SQLState HY011 und der Meldung "Der Vorgang ist zu diesem Zeitpunkt nicht gültig" protokolliert.
SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD SQLTCHAR, read-only Gibt die für die aktuelle Verbindung verwendete Authentifizierungsmethode zurück. Der an die Anwendung zurückgegebene Wert ist der Wert, den Windows an SQL Server Native Client zurückgibt. Dabei sind folgende Werte möglich:

"NTLM" wird zurückgegeben, wenn eine Verbindung mit der NTLM-Authentifizierung geöffnet wird.

"Kerberos" wird zurückgegeben, wenn eine Verbindung mit der Kerberos-Authentifizierung geöffnet wird.



Dieses Attribut kann nur für eine geöffnete Verbindung gelesen werden, die die Windows-Authentifizierung verwendet hat. Wenn versucht wird, dieses Attribut zu lesen, bevor eine Verbindung geöffnet wurde, dann wird SQL_ERROR zurückgegeben, und es wird ein Fehler mit SQLState 08003 und der Meldung "Verbindung nicht geöffnet" protokolliert.

Wenn dieses Attribut für eine Verbindung abgefragt wird, für die nicht die Windows-Authentifizierung verwendet wurde, wird SQL_ERROR zurückgegeben, und es wird ein Fehler mit SQLState HY092 und der Meldung "Attribut/Optionsbezeichner ungültig (SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD ist nur für vertrauenswürdige Verbindungen verfügbar)" protokolliert.

Wenn die Authentifizierungsmethode nicht ermittelt werden kann,dann wird SQL_ERROR zurückgegeben, und es wird ein Fehler mit SQLState HY000 und der Meldung "Allgemeiner Fehler" protokolliert.
SQL_COPT_SS_MUTUALLY_AUTHENTICATED SQLSMALLINT, read-only Gibt SQL_TRUE zurück, wenn der Server in der Verbindung gegenseitig authentifiziert wurde; andernfalls wird SQL_FALSE zurückgegeben.

Dieses Attribut kann nur für eine geöffnete Verbindung gelesen werden. Wenn versucht wird, dieses Attribut zu lesen, bevor eine Verbindung geöffnet wurde, dann wird SQL_ERROR zurückgegeben, und es wird ein Fehler mit SQLState 08003 und der Meldung "Verbindung nicht geöffnet" protokolliert.

Wenn dieses Attribut für eine Verbindung abgefragt wird, für die keine Windows-Authentifizierung verwendet wurde, wird SQL_FALSE zurückgegeben.

ODBC-Funktionsunterstützung zum Angeben von SPN

Die folgenden ODBC-Funktionen unterstützen Clientanwendungen und SPN:

Weitere Informationen

SQL Server Native Client (ODBC)