DSN と接続文字列のキーワードおよび属性

この記事では、接続文字列やDSNのキーワード、SQLSetConnectAttrおよびSQLGetConnectAttrの接続属性をSQL ServerのODBCドライバーで一覧にしています。

サポートされたDSNおよび接続文字列キーワードおよび接続属性

以下の表は、各プラットフォームで使用可能なキーワードと属性の一覧を示しています(L: Linux、M: macOS、W: Windows)。 キーワードまたは属性を選択すると、詳細が表示されます。

DSN / 接続文字列のキーワード 接続属性 プラットフォーム
アドレス LMW
アドレス LMW
AnsiNPW SQL_COPT_SS_ANSI_NPW LMW
APP LMW
ApplicationIntent SQL_COPT_SS_APPLICATION_INTENT LMW
AttachDBFileName SQL_COPT_SS_ATTACHDBFILENAME LMW
認証 SQL_COPT_SS_AUTHENTICATION LMW
AutoTranslate SQL_COPT_SS_TRANSLATE LMW
ClientCertificate LMW
ClientKey LMW
ColumnEncryption SQL_COPT_SS_COLUMN_ENCRYPTION LMW
ConcatNullYieldsNull (v18.6 以降) SQL_COPT_SS_CONCAT_NULL LMW
ConnectRetryCount SQL_COPT_SS_CONNECT_RETRY_COUNT LMW
ConnectRetryInterval SQL_COPT_SS_CONNECT_RETRY_INTERVAL LMW
[データベース] SQL_ATTR_CURRENT_CATALOG LMW
説明 LMW
[ドライバー] LMW
DSN LMW
Encrypt SQL_COPT_SS_ENCRYPT LMW
Failover_Partner SQL_COPT_SS_FAILOVER_PARTNER W
FailoverPartnerSPN SQL_COPT_SS_FAILOVER_PARTNER_SPN W
FileDSN LMW
GetDataExtensions (v18.0 以降) SQL_COPT_SS_GETDATA_EXTENSIONS LMW
HostnameInCertificate (v18.0 以降) LMW
IpAddressPreference (v18.1 以降) LMW
KeepAlive (v17.4 以降。17.8 より前は DSN のみ) LMW
KeepAliveInterval (v17.4 以降。17.8 より前は DSN のみ) LMW
KeystoreAuthentication LMW
KeystorePrincipalId LMW
KeystoreSecret LMW
Language LMW
LongAsMax (v18.0 以降) SQL_COPT_SS_LONGASMAX LMW
MARS_Connection SQL_COPT_SS_MARS_ENABLED LMW
MultiSubnetFailover SQL_COPT_SS_MULTISUBNET_FAILOVER LMW
Net LMW
Network LMW
PWD LMW
QueryLog_On SQL_COPT_SS_PERF_QUERY W
QueryLogFile SQL_COPT_SS_PERF_QUERY_LOG W
QueryLogTIme SQL_COPT_SS_PERF_QUERY_INTERVAL W
QuotedId SQL_COPT_SS_QUOTED_IDENT LMW
Regional LMW
レプリケーション LMW
RetryExec (18.1 以降) LMW
SaveFile LMW
[サーバー] LMW
ServerCertificate (v18.1 以降) LMW
ServerSPN SQL_COPT_SS_SERVER_SPN LMW
StatsLog_On SQL_COPT_SS_PERF_DATA W
StatsLogFile SQL_COPT_SS_PERF_DATA_LOG W
TransparentNetworkIPResolution SQL_COPT_SS_TNIR LMW
Trusted_Connection SQL_COPT_SS_INTEGRATED_SECURITY LMW
TrustServerCertificate SQL_COPT_SS_TRUST_SERVER_CERTIFICATE LMW
UID LMW
UseFMTONLY LMW
WSID LMW
SQL_ATTR_ACCESS_MODE
(SQL_ACCESS_MODE)
LMW
SQL_ATTR_ASYNC_DBC_EVENT W
SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE W
SQL_ATTR_ASYNC_DBC_PCALLBACK W
SQL_ATTR_ASYNC_DBC_PCONTEXT W
SQL_ATTR_ASYNC_ENABLE W
SQL_ATTR_AUTO_IPD LMW
SQL_ATTR_AUTOCOMMIT
(SQL_AUTOCOMMIT)
LMW
SQL_ATTR_CONNECTION_DEAD LMW
SQL_ATTR_CONNECTION_TIMEOUT LMW
SQL_ATTR_DBC_INFO_TOKEN LMW
SQL_ATTR_LOGIN_TIMEOUT
(SQL_LOGIN_TIMEOUT)
LMW
SQL_ATTR_METADATA_ID LMW
SQL_ATTR_ODBC_CURSORS
(SQL_ODBC_CURSORS)
LMW
SQL_ATTR_PACKET_SIZE
(SQL_PACKET_SIZE)
LMW
SQL_ATTR_QUIET_MODE
(SQL_QUIET_MODE)
LMW
SQL_ATTR_RESET_CONNECTION
(SQL_COPT_SS_RESET_CONNECTION)
LMW
SQL_ATTR_TRACE
(SQL_OPT_TRACE)
LMW
SQL_ATTR_TRACEFILE
(SQL_OPT_TRACEFILE)
LMW
SQL_ATTR_TRANSLATE_LIB
(SQL_TRANSLATE_DLL)
LMW
SQL_ATTR_TRANSLATE_OPTION
(SQL_TRANSLATE_OPTION)
LMW
SQL_ATTR_TXN_ISOLATION
(SQL_TXN_ISOLATION)
LMW
SQL_COPT_SS_ACCESS_TOKEN LMW
SQL_COPT_SS_ANSI_OEM W
SQL_COPT_SS_AUTOBEGINTXN LMW
SQL_COPT_SS_BCP LMW
SQL_COPT_SS_BROWSE_CACHE_DATA LMW
SQL_COPT_SS_BROWSE_CONNECT LMW
SQL_COPT_SS_BROWSE_SERVER LMW
SQL_COPT_SS_CEKEYSTOREDATA LMW
SQL_COPT_SS_CEKEYSTOREPROVIDER LMW
SQL_COPT_SS_CLIENT_CONNECTION_ID LMW
SQL_COPT_SS_CONNECTION_DEAD LMW
SQL_COPT_SS_DATACLASSIFICATION_VERSION (v17.4.2 以降) LMW
SQL_COPT_SS_ENLIST_IN_DTC W
SQL_COPT_SS_ENLIST_IN_XA LMW
SQL_COPT_SS_FALLBACK_CONNECT LMW
SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD LMW
SQL_COPT_SS_MUTUALLY_AUTHENTICATED LMW
SQL_COPT_SS_OLDPWD LMW
SQL_COPT_SS_PERF_DATA_LOG_NOW W
SQL_COPT_SS_PRESERVE_CURSORS LMW
SQL_COPT_SS_SPID (v17.5 以降) LMW
SQL_COPT_SS_TXN_ISOLATION LMW
SQL_COPT_SS_USER_DATA LMW
SQL_COPT_SS_WARN_ON_CP_ERROR LMW

以下に、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 ROLLBACKCOMMIT後に自動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 の設定に関係なく、サーバー ログイン資格情報 (ユーザー名およびパスワード) は、常に暗号化されます。

EncryptTrustServerCertificate、サーバー側の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で始まるクエリで誤りが10002000した場合、最初の遅延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で始まるクエリでエラー499184050110928がある場合は、最大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されます。

証明書内のホスト名

暗号化交渉時にサーバーの証明書に期待されるホスト名を指定します。AddrAddressServerから派生したデフォルト値と異なる場合。 ServerCertificateオプションを使うとHostnameInCertificateオプションは無視されます。

IP アドレスの優先設定

バージョン18.1以降は、このオプションを使って接続の優先順位をつけるIPアドレスの種類を指定します。

選択肢は IPv4FirstIPv6FirstUsePlatformDefaultです。 UsePlatformDefault サーバー名を解決するためのシステムコールで提供されたアドレスの順番で接続します。 デフォルト値は IPv4Firstで、これは以前のバージョンの挙動に対応しています。

サーバー証明書

バージョン18.1からは、厳密暗号化モードでこのオプションを使います。 ServerCertificateキーワードを使って、SQL Server TLS/SSL証明書と照合する証明書ファイルへのパスを指定します。 マッチングは標準的な証明書検証(有効期限、ホスト名、信頼チェーンなど)の代わりに行われます。 受け入れられる証明書の形式は PEMDERCER です。 このオプションを指定すると、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_XAXACALLPARAMオブジェクトへのポインタを使って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