クライアント接続におけるサービス プリンシパル名 (SPN) (ODBC)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC) は同梱されていません。

  • SQL Server 2022 (16.x) 以降のバージョン
  • SQL Server Management Studio 19 以降のバージョン

SQL Server Native Client (SQLNCLI または SQLNCLI11) と従来の Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は、新しいアプリケーション開発には推奨されません。

新しいプロジェクトの場合は、次のいずれかのドライバーを使用します。

SQL Server データベース エンジン (バージョン 2012 から 2019) のコンポーネントとして付属する SQLNCLI については、この「サポート ライフサイクルの例外」を参照してください。

ここでは、クライアント アプリケーションのサービス プリンシパル名 (SPN) をサポートする ODBC 属性および関数について説明します。 クライアント アプリケーションの SPN の詳細については、「 クライアント接続でのサービス プリンシパル名 (SPN) のサポート および Get 相互 Kerberos 認証を参照してください。

接続文字列キーワード

次の接続文字列キーワードを使用すると、クライアント アプリケーションは SPN を指定できます。

Keyword Value
ServerSPN サーバーの SPN。 既定値は空の文字列です。これにより、SQL Server Native Client はドライバーによって生成された既定の SPN を使用します。
FailoverPartnerSPN フェールオーバー パートナーの SPN。 既定値は空の文字列です。これにより、SQL Server Native Client はドライバーによって生成された既定の SPN を使用します。

接続属性

次の接続属性を使用すると、クライアント アプリケーションは、SPN を指定して認証方法を照会できます。

名前 種類 使用方法
SQL_COPT_SS_SERVER_SPN

SQL_COPT_SS_FAILOVER_PARTNER_SPN
SQLTCHAR、読み取り/書き込み サーバーの SPN を指定します。 既定値は空の文字列です。これにより、SQL Server Native Client はドライバーによって生成された既定の SPN を使用します。

この属性を照会できるのは、属性がプログラムによって設定された後、または接続が開かれた後だけです。 接続が開いていない場合にこの属性を照会し、属性がプログラムによって設定されていない場合、SQL_ERROR が返され、"接続は開いていません" というメッセージで SQLState 08003 の診断レコードが記録されます。

接続が開いている場合にこの属性を設定すると、SQL_ERROR が返され、"この操作は、ここでは実行できません" というメッセージで SQLState HY011 の診断レコードが記録されます。
SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD SQLTCHAR、読み取り専用 接続に使用された認証方法を返します。 アプリケーションに返される値は、Windows が SQL Server Native Client に返す値です。 次のいずれかの値になります。

"NTLM"。これは NTLM 認証を使用して接続を開いたときに返されます。

"Kerberos"。これは Kerberos 認証を使用して接続を開いたときに返されます。



この属性は、Windows 認証を使用する、開いている接続でのみ読み取りが可能です。 接続が開かれる前にこの属性を読み取ると、SQL_ERROR が返され、"接続は開いていません" というメッセージで SQLState 08003 がエラーとして記録されます。

この属性が Windows 認証を使用していない接続で照会されると、SQL_ERROR が返され、"属性またはオプション識別子が無効です (SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD は信頼関係接続でのみ使用できます)" というメッセージで SQLState HY092 がエラーとして記録されます。

認証方法を特定できない場合は、SQL_ERROR が返され、"一般的なエラー" というメッセージで SQLState HY000 がエラーとして記録されます。
SQL_COPT_SS_MUTUALLY_AUTHENTICATED SQLSMALLINT、読み取り専用 接続されているサーバーが相互に認証された場合は SQL_TRUE を返します。それ以外の場合は SQL_FALSE を返します。

この属性は、開いている接続のみで読み取ることができます。 接続が開かれる前にこの属性を読み取ると、SQL_ERROR が返され、"接続は開いていません" というメッセージで SQLState 08003 がエラーとして記録されます。

Windows 認証を使用していない接続に対してこの属性が照会されると、SQL_FALSE が返されます。

ODBC 関数による SPN 指定のサポート

次の ODBC 関数では、クライアント アプリケーションと SPN をサポートしています。

参照

SQL Server Native Client (ODBC)