このトピックでは、クライアント アプリケーションでサービス プリンシパル名 (SPN) をサポートする ODBC 属性と関数について説明します。 クライアント アプリケーションの SPN の詳細については、「クライアント接続での サービス プリンシパル名 (SPN) のサポート 」および「 相互 Kerberos 認証の取得」を参照してください。
接続文字列キーワード
次の接続文字列キーワードを使用すると、クライアント アプリケーションで SPN を指定できます。
| キーワード | 価値 |
|---|---|
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が返され、エラーが SQLState HY092 と"Invalid attribute/option identifier (SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD is only available for Trusted Connections)" というメッセージでログに記録されます。 認証方法を特定できない場合は、SQL_ERRORが返され、SQLState HY000 と "一般エラー" というメッセージでエラーがログに記録されます。 |
| SQL_COPT_SS_MUTUALLY_AUTHENTICATED | SQLSMALLINT、読み取り専用 | 接続内のサーバーが相互に認証された場合にSQL_TRUEを返します。それ以外の場合は、SQL_FALSEを返します。 この属性は、開いている接続に対してのみ読み取ることができます。 接続が開かれる前に読み取ろうとすると、SQL_ERRORが返され、SQLState 08003 と "接続が開いていません" というメッセージでエラーがログに記録されます。 この属性が、Windows 認証を使用していない接続に対してクエリを実行すると、SQL_FALSEが返されます。 |
SPN の指定に対する ODBC 関数のサポート
次の ODBC 関数は、クライアント アプリケーションと SPN をサポートしています。
SQLGetConnectAttr の
SQLSetConnectAttr の