この記事では、接続文字列やDSNのキーワード、SQLSetConnectAttrおよびSQLGetConnectAttrの接続属性をSQL ServerのODBCドライバーで一覧にしています。
サポートされたDSNおよび接続文字列キーワードおよび接続属性
以下の表は、各プラットフォームで使用可能なキーワードと属性の一覧を示しています(L: Linux、M: macOS、W: Windows)。 キーワードまたは属性を選択すると、詳細が表示されます。
以下に、SQL Server Native Client で接続文字列キーワードを使用する、SQLSetConnectAttr、および SQLSetConnectAttr 関数 に記載されていない接続文字列キーワードと接続属性をいくつか示します。
説明
データソースの説明。
SQL_COPT_SS_ANSI_OEM
データの ANSI から OEM への変換を制御します。
| 属性値 | 説明 |
|---|---|
SQL_AO_OFF (既定値) |
翻訳は終わっていません。 |
SQL_AO_ON |
変換が完了しました。 |
SQL_COPT_SS_AUTOBEGINTXN
バージョン17.6以降、オートコミットがオフの状態で、ROLLBACKまたはCOMMIT後の自動BEGIN TRANSACTIONをこのオプションで制御できます。
| 属性値 | 説明 |
|---|---|
SQL_AUTOBEGINTXN_ON (既定値) |
COMMIT または BEGIN TRANSACTION の後の自動 ROLLBACK。 |
SQL_AUTOBEGINTXN_OFF |
ROLLBACKやCOMMIT後に自動BEGIN TRANSACTIONはありません。 |
SQL_COPT_SS_FALLBACK_CONNECT
SQL Serverのフォールバック接続の使用を制御します。 このオプションは現在サポートされていません。
| 属性値 | 説明 |
|---|---|
SQL_FB_OFF (既定値) |
フォールバック接続を無効にします。 |
SQL_FB_ON |
フォールバック接続を可能にします。 |
新しい接続文字列キーワードと接続属性
認証 - SQL_COPT_SS_AUTHENTICATION
SQL Server に接続するときに使用する認証モードを設定します。 詳細情報については、「ODBC ドライバーでの Microsoft Entra ID の使用」をご覧ください。
| キーワード値 | 属性値 | 説明 |
|---|---|---|
SQL_AU_NONE (既定値) |
未設定。 認証モードは、他の属性の組み合わせによって決まります。 | |
SqlPassword |
SQL_AU_PASSWORD |
ユーザー名とパスワードを使用する SQL Server 認証。 |
ActiveDirectoryIntegrated |
SQL_AU_AD_INTEGRATED |
Microsoft Entra 統合認証。 |
ActiveDirectoryInteractive |
SQL_AU_AD_INTERACTIVE |
Microsoft Entra インタラクティブ認証。 |
ActiveDirectoryMsi |
SQL_AU_AD_MSI |
Microsoft Entra マネージド ID 認証。 ユーザー割り当てのアイデンティティの場合、 UID はユーザーアイデンティティのオブジェクトIDに設定されます。 |
ActiveDirectoryServicePrincipal |
SQL_AU_AD_SPA |
Microsoft Entra サービス プリンシパル認証。
UID はサービスプリンシパルのクライアントIDに設定されています。
PWD はクライアントの秘密に設定されています。 |
ActiveDirectoryPassword |
SQL_AU_AD_PASSWORD |
[非推奨]Microsoft Entra パスワード認証。ActiveDirectoryPassword は非推奨とされます。 詳細については、ActiveDirectoryPassword は非推奨ですを参照してください。 |
SQL_AU_RESET |
未設定。 すべての DSN または接続文字列の設定をオーバーライドします。 |
注
Authentication キーワードまたは属性を使用する場合は、接続文字列、DSN、または接続属性で Encrypt 設定を明示的に目的の値に指定してください。 詳しくは、「Using Connection String Keywords with SQL Server Native Client (SQL Server Native Client での接続文字列キーワードの使用)」をご覧ください。
ColumnEncryption - SQL_COPT_SS_COLUMN_ENCRYPTION
透過的な列の暗号化を制御します (Always Encrypted)。 詳しくは、「SQL Server 用 ODBC ドライバーと共に Always Encrypted を使用する」をご覧ください。
| キーワード値 | 属性値 | 説明 |
|---|---|---|
Enabled |
SQL_CE_ENABLED |
Always Encrypted を有効にします。 |
Disabled (既定値) |
SQL_CE_DISABLED |
Always Encrypted を無効にします。 |
SQL_CE_RESULTSETONLY |
解読のみを有効にします (結果と戻り値)。 |
ConcatNullYieldsNull(NULL を連結する場合の動作設定) - SQL_COPT_SS_CONCAT_NULL
文字列を連結する際の NULL の ISO 処理の使用を制御します。 詳細については、SET CONCAT_NULL_YIELDS_NULLを参照してください。
| キーワード値 | 属性値 | 説明 |
|---|---|---|
Yes (既定値) |
SQL_CN_ON |
NULL 連結は NULLをもたらします。 |
No |
SQL_CN_OFF |
NULL 連結すると文字列が得られます。 |
Encrypt
接続時にネットワーク上で TLS 暗号化が使用されるかどうかを指定します。 指定できる値は、yes/mandatory (18.0+)、no/optional (18.0+)、および strict (18.0+) です。 既定値は、バージョン 18.0+ では yes、以前のバージョンでは no です。
Encrypt の設定に関係なく、サーバー ログイン資格情報 (ユーザー名およびパスワード) は、常に暗号化されます。
Encrypt、TrustServerCertificate、サーバー側のForce Encryption設定によって、ネットワーク上で接続が暗号化されているかどうかが決まります。 次の表は、これらの設定の効果を示しています。
ODBC Driver 18 以降
| 暗号化の設定 | [Trust Server Certificate] | サーバーの強制的な暗号化 | 結果 |
|---|---|---|---|
| いいえ | いいえ | いいえ | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されません。 |
| いいえ | はい | いいえ | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されません。 |
| はい | いいえ | いいえ | サーバー証明書は確認されます。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| はい | はい | いいえ | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| いいえ | いいえ | はい | サーバー証明書は確認されます。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| いいえ | はい | はい | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| はい | いいえ | はい | サーバー証明書は確認されます。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| はい | はい | はい | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| 厳格 | - | - |
TrustServerCertificate は無視されます。 サーバー証明書は確認されます。クライアントとサーバー間で送信されるデータは暗号化されます。 |
注
Strict値はTDS 8.0接続をサポートするサーバーに対してのみ利用可能です。
ODBC Driver 17 以前のバージョン
| 暗号化の設定 | [Trust Server Certificate] | サーバーの強制的な暗号化 | 結果 |
|---|---|---|---|
| いいえ | いいえ | いいえ | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されません。 |
| いいえ | はい | いいえ | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されません。 |
| はい | いいえ | いいえ | サーバー証明書は確認されます。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| はい | はい | いいえ | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| いいえ | いいえ | はい | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| いいえ | はい | はい | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| はい | いいえ | はい | サーバー証明書は確認されます。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
| はい | はい | はい | サーバー証明書は確認されません。 クライアントとサーバー間で送信されるデータは暗号化されます。 |
TransparentNetworkIPResolution - SQL_COPT_SS_TNIR
ODBCドライバーのレガシーマルチIPフォールバックであるTransparent Network IP Resolution機能を制御します。 この設定はMultiSubnetFailover=Yes時の接続順序に影響を与えません。これはAzure SQL Database、Azure SQL Managed Instance、Microsoft FabricのSQLデータベース、可用性グループのリスナー、フェイルオーバークラスターインスタンスで推奨される設定です。 詳細については、「 ODBCドライバーでの透過的なネットワークIP解決の使用 」または「 高可用性および災害復旧」をご覧ください。
| キーワード値 | 属性値 | 説明 |
|---|---|---|
Enabled (既定値) |
SQL_IS_ON |
透過的なネットワークIP解決を可能にします。 |
Disabled |
SQL_IS_OFF |
透過的なネットワーク IP の解決を無効にします。 |
UseFMTONLY
SQL Server 2012 以降に接続するときのメタデータのSET FMTONLYの使用を制御します。
| キーワード値 | 説明 |
|---|---|
No (既定値) |
メタデータには、可能であれば sp_describe_first_result_set を使用してください。 |
Yes |
メタデータには SET FMTONLY を使用します。 |
レプリケーション
ODBC Driver バージョン 17.8 以降でのレプリケーション ログインの使用を指定します。
| キーワード値 | 説明 |
|---|---|
No (既定値) |
レプリケーションログインは使われていません。 |
Yes |
NOT FOR REPLICATION オプションを使用したトリガーは、接続で起動されません。 |
RetryExec
構成可能な再試行ロジックは、バージョン 18.1 以降で使用できます。 これにより、構成可能な条件に基づいて、特定の ODBC 関数の呼び出しが自動的に再実行されます。 接続文字列でRetryExecキーワードとリトライルールのリストを使えば、この機能を有効にしてください。 各リトライルールは、エラーマッチ、リトライポリシー、クエリマッチの3つのコロン分離コンポーネントで構成されています。
クエリマッチは、特定の実行で使用するリトライルールを決定します。 これは、入ってくるコマンドテキスト(SQLExecDirect)または文オブジェクト内の準備済みコマンドテキスト(SQLExecute)と一致します。 複数のルールが一致する場合は、リストの最初のマッチングルールが使用されます。 この動作により、規則を一般性が上がる順にリストアップできます。 ルールが一致しない場合は再挑戦は適用されません。
実行中にエラーが発生し、該当する再試行ルールがある場合、そのエラーマッチが実行の再試行の有無を決定します。
RetryExecキーワードの値は、セミコロンで区切られたリトライルールのリストです。
RetryExec={rule1;rule2}
再試行ルールは次のようになります: <errormatch>:<retrypolicy>:<querymatch>
エラーマッチ:カンマ区切られたエラーコードのリスト。 例えば、
1000,2000を指定すると再試行したいエラーコードが表示されます。再試行ポリシー:次の再試行までの遅延を指定します。 最初のパラメータはリトライ回数、2つ目のパラメータは遅延です。 例えば、
3,10+7は10秒から始まる3回の試行を意味し、以降の再試行のたびに7秒ずつ増えます。+7を指定しなければ、その後の再試行は指数関数的に倍増します。クエリマッチ:マッチングしたいクエリを指定します。 何も指定しなければ、そのルールはすべてのクエリに適用されます。
SELECTを指定すると、SELECTで始まるすべてのクエリを指す。
接続文字列として使うために3つの成分を組み合わせる方法:
RetryExec={1000,2000:3,10+7:SELECT}
このルールは、SELECTで始まるクエリで誤りが1000・2000した場合、最初の遅延10秒で2回再試行し、その後の1回の試みごとに7秒を加えることを意味します。
使用例
40501,40540:4,5
誤り 40501 および 40540の場合は、最大4回まで再試行し、初期遅延は5秒、再試行の間は指数関数的に倍増します。 このルールはすべてのクエリに適用されます。
49919:2,10+:CREATE
CREATEで始まるクエリでエラー49919が発生した場合、最大でも2回だけやり直してください。最初は10秒後、次に20秒後です。
49918,40501,10928:5,10+5:SELECT c1
SELECT c1で始まるクエリでエラー49918、40501、10928がある場合は、最大5回まで再試行し、最初の再試行で10秒待ち、その後5秒待ち時間が増やされます。
以下の3つのルールを接続文字列でまとめて指定します。
RetryExec={49918,40501,10928:5,10+5:SELECT c1;49919:2,10+:CREATE;40501,40540:4,5}
最も一般的な(マッチオール)ルールを最後に置き、その前の2つのより具体的なルールがそれぞれのクエリにマッチできるようにします。
クライアント証明書
ループバック接続による認証証明書を指定します。 このオプションはLinuxのSQL Server on Linuxでのみ利用可能です。 オプションは次のとおりです。
| オプション値 | 説明 |
|---|---|
sha1:<hash_value> |
ODBCドライバーはSHA1ハッシュを使ってWindows証明書ストア内の証明書を特定します。 |
subject:<subject> |
ODBCドライバーは、主題を用いてWindows証明書ストア内の証明書を探します。 |
file:<file_location>[,password:<password>] |
ODBC ドライバーでは、証明書ファイルが使用されます。 |
証明書が PFX 形式で、 PFX 証明書内の秘密鍵がパスワード保護されている場合は、 password キーワードを含めてください。
PEMおよびDER形式の証明書については、ClientKey属性を含めてください。
ClientKey
ClientCertificate属性で指定されたPEMまたはDER証明書の秘密鍵のファイル位置を指定します。 形式:
| オプション値 | 説明 |
|---|---|
file:<file_location>[,password:<password>] |
秘密鍵ファイルの場所を指定します。 |
秘密鍵ファイルがパスワード保護されている場合は、 password キーワードを含めてください。 パスワードに , 文字が含まれている場合は、各文字の直後に1文字追加 , 字を加えます。 例えば、パスワードがa,b,cされている場合、接続文字列内の逃げ出したパスワードはa,,b,,cされます。
証明書内のホスト名
暗号化交渉時にサーバーの証明書に期待されるホスト名を指定します。Addr、Address、Serverから派生したデフォルト値と異なる場合。
ServerCertificateオプションを使うとHostnameInCertificateオプションは無視されます。
IP アドレスの優先設定
バージョン18.1以降は、このオプションを使って接続の優先順位をつけるIPアドレスの種類を指定します。
選択肢は IPv4First、 IPv6First、 UsePlatformDefaultです。
UsePlatformDefault サーバー名を解決するためのシステムコールで提供されたアドレスの順番で接続します。 デフォルト値は IPv4Firstで、これは以前のバージョンの挙動に対応しています。
サーバー証明書
バージョン18.1からは、厳密暗号化モードでこのオプションを使います。
ServerCertificateキーワードを使って、SQL Server TLS/SSL証明書と照合する証明書ファイルへのパスを指定します。 マッチングは標準的な証明書検証(有効期限、ホスト名、信頼チェーンなど)の代わりに行われます。 受け入れられる証明書の形式は PEM、DER、CER です。 このオプションを指定すると、SQL Server証明書が提供されたServerCertificateが完全に一致しているかどうかを確認します。
SQL_COPT_SS_ACCESS_TOKEN
認証にはMicrosoft Entraのアクセストークンを使いましょう。 詳細情報については、「ODBC ドライバーでの Microsoft Entra ID の使用」をご覧ください。
| 属性値 | 説明 |
|---|---|
NULL (既定値) |
アクセストークンは提供されません。 |
ACCESSTOKEN* |
アクセス トークンへのポインター。 |
SQL_COPT_SS_CEKEYSTOREDATA
読み込まれたキーストア プロバイダー ライブラリと通信します。 透過的な列の暗号化を制御します (Always Encrypted)。 この属性には既定値はありません。 詳しくは、「カスタム キーストア プロバイダー」をご覧ください。
| 属性値 | 説明 |
|---|---|
CEKEYSTOREDATA * |
キーストア プロバイダー ライブラリ用の通信データ構造 |
SQL_COPT_SS_CEKEYSTOREPROVIDER
Always Encrypted 用のキーストア プロバイダー ライブラリを読み込むか、または読み込まれたキーストア プロバイダー ライブラリの名前を取得します。 詳しくは、「カスタム キーストア プロバイダー」をご覧ください。 この属性には既定値はありません。
| 属性値 | 説明 |
|---|---|
char * |
キーストア プロバイダー ライブラリへのパス |
SQL_COPT_SS_ENLIST_IN_XA
XA準拠のトランザクションプロセッサ(TP)でXAトランザクションを有効にするには、アプリケーションはSQL_COPT_SS_ENLIST_IN_XAとXACALLPARAMオブジェクトへのポインタを使ってSQLSetConnectAttrを呼び出す必要があります。 このオプションは、Windows (17.3 以降)、Linux、macOS でサポートされています。
SQLSetConnectAttr(hdbc, SQL_COPT_SS_ENLIST_IN_XA, param, SQL_IS_POINTER); // XACALLPARAM *param
XAトランザクションをODBC接続のみに関連付けたい場合は、SQLSetConnectAttrを呼び出す際にポインタの代わりにSQL_COPT_SS_ENLIST_IN_XAで、TRUEまたはFALSEを付けてください。 この設定は、Windows でのみ有効であり、クライアント アプリケーションで XA 操作を指定するために使用することはできません。
SQLSetConnectAttr(hdbc, SQL_COPT_SS_ENLIST_IN_XA, (SQLPOINTER)TRUE, 0);
| 値 | 説明 | プラットフォーム |
|---|---|---|
XACALLPARAM 対象* |
XACALLPARAM オブジェクトを指すポインター。 |
Windows、Linux、macOS |
TRUE |
XA トランザクションを ODBC 接続に関連付けます。 関連するすべてのデータベース アクティビティは、XA トランザクションの保護下で実行されます。 | Windows |
FALSE |
トランザクションと ODBC 接続の関連付けを解除します。 | Windows |
XA トランザクションについて詳しくは、「XA トランザクションの使用」をご覧ください。
SQL_COPT_SS_LONGASMAX
長いデータ型を最大データ型としてサーバーに送信します。
| 属性値 | 説明 |
|---|---|
No (既定値) |
送信時に長いタイプを最大タイプに変換しないでください。 |
Yes |
送信時に、データを long 型から max 型に変換してください。 |
SQL_COPT_SS_SPID
接続のセッション ID を取得します。 このプロパティは、サーバーへの追加のラウンド トリップが発生しない点を除き、T-SQL @@SPID 変数と同じです。
| 属性値 | 説明 |
|---|---|
DWORD |
SPID |