接続プロパティの設定

ダウンロードJDBC Driver のダウンロード

接続文字列のプロパティは、さまざまな方法で指定できます。

  • DriverManager クラスを使用して接続するときは、接続 URL における "名前=値" 形式のプロパティとして指定できます。 接続文字列の構文については、「接続 URL の構築」を参照してください。

  • DriverManager クラスの Connect メソッドProperties パラメーター の中で "名前=値" 形式のプロパティとして指定できます。

  • ドライバーのデータ ソースの適切な setter メソッドの値として指定できます。 次に例を示します。

    datasource.setServerName(value)
    datasource.setDatabaseName(value)
    

解説

プロパティ名の大文字と小文字は区別されず、重複したプロパティ名は次の順序で解決されます。

  1. API 引数 (user、password など)
  2. プロパティ コレクション
  3. 接続文字列の最後のインスタンス。プロパティ名には不明な値を使用することもできます。JDBC ドライバーではこのような値の大文字と小文字の区別について検証されません。

シノニムを使用できます。これは、重複したプロパティ名と同じ順序で解決されます。

プロパティ

次の表は、JDBC ドライバーで現在使用できるすべての接続文字列プロパティを示しています。

プロパティ
Type
Default
説明
aadSecurePrincipalId

String

null
(バージョン 9.2 以降) authentication=ActiveDirectoryServicePrincipal の場合は、aadSecurePrincipalId プロパティによって、Azure Active Directory のセキュリティ保護された有効なクライアント ID が指定されます。
aadSecurePrincipalSecret

String

null
(バージョン 9.2 以降) authentication=ActiveDirectoryServicePrincipal の場合は、aadSecurePrincipalSecret プロパティによって、Active Directory プリンシパルに使用するパスワードが示されます。
accessToken

String

null
(バージョン 6.0 以降) このプロパティを使用し、アクセス トークンを使ってデータベースに接続します。 accessToken は、接続 URL を使用して設定することはできません。
applicationIntent

String

ReadWrite
(バージョン 6.0 以降) アプリケーションがサーバーに接続するときのワークロードのタイプを宣言します。

有効値は、ReadOnlyReadWrite です。

ディザスター リカバリーの詳細については、「高可用性、ディザスター リカバリーのための JDBC Driver のサポート」を参照してください。
applicationName

String
[<=128 文字]

null
アプリケーション名、または名前が指定されていない場合は " Microsoft JDBC Driver for SQL Server" です。

個別のアプリケーションを識別するために、さまざまな SQL Server プロファイリング ツールおよびロギング ツールで使用されます。
認証

String

NotSpecified
(バージョン 6.0 以降) この省略可能なプロパティは、接続に使用する認証方法を示します。 指定できる値は、ActiveDirectoryIntegratedActiveDirectoryPasswordActiveDirectoryMSI (バージョン 7.2 以降)、ActiveDirectoryInteractive (バージョン 9.2 以降)、ActiveDirectoryServicePrincipal (バージョン 9.2 以降)、SqlPasswordNotSpecified (既定値) です。

ActiveDirectoryIntegrated (バージョン 6.0 以降) を使用して、統合 Windows 認証を使用している SQL データベースに接続します。

ActiveDirectoryPassword (バージョン 6.0 以降) を使用して、Azure AD のプリンシパル名とパスワードを使用している SQL データベースに接続します。

ActiveDirectoryMSI (バージョン 7.2 以降) を使用して、Azure リソース内から SQL データベースに接続します。 たとえば、マネージド ID (MSI) 認証を使用する Azure Virtual Machine、App Service、Function App などです。

ActiveDirectoryMSI 認証モードを使用するときに、ドライバーでサポートされるマネージド ID は、次の 2 種類です。
1.システム割り当てマネージド ID:accessToken を取得するために既定で使用されます。
2.ユーザー割り当てマネージド ID:マネージド ID (MSI) のクライアント ID が msiClientId 接続プロパティで指定されている場合に、accessToken を取得するために使用されます。

対話型認証フローを使用して SQL データベースに接続するには、ActiveDirectoryInteractive を使用します。

サービス プリンシパル ID のクライアント ID とシークレットを使用して SQL データベースに接続するには、ActiveDirectoryServicePrincipal (バージョン 9.2 以降) を使用します。

userName/user プロパティと password プロパティを使って SQL データベースに接続するには、SqlPassword を使用します。

これらの認証方法がいずれも必要ない場合は、NotSpecified を使用します。

重要: 認証が ActiveDirectoryIntegrated に設定されている場合、mssql-jdbc_auth-<version>-<arch>.dll (JDBC ドライバー パッケージで入手可能) と SQL Server 用の Azure Active Directory 認証ライブラリ (ADAL.DLL) の 2 つのライブラリをインストールする必要があります。 ADAL は、Microsoft ODBC Driver for SQL Server または Microsoft OLE DB Driver for SQL Server からインストールできます。 JDBC ドライバーでは、ADAL.DLL のバージョン 1.0.2028.318 以降 のみがサポートされます。

注: 認証プロパティが NotSpecified 以外の値に設定されている場合、ドライバーでは既定で TLS (トランスポート層セキュリティ) (以前の SSL (Secure Sockets Layer)) 暗号化が使用されます。

Azure Active Directory 認証を構成する方法については、Azure Active Directory 認証を使用した SQL Database への接続に関するページを参照してください。
authenticationScheme

String

NativeAuthentication
アプリケーションで使用する統合セキュリティの種類を示します。 指定できる値は JavaKerberosNTLM (バージョン 7.4 以降)、および NativeAuthentication (既定値) です。

NativeAuthentication を指定すると、ドライバーによって Windows に mssql-jdbc_auth-<version>-<arch>.dll (mssql-jdbc_auth-8.2.2.x64.dll など) が読み込まれます。これは統合認証情報の取得に使用されます。

(読み込まれたネイティブ認証ライブラリは、ドライバー バージョン 6.0 - 7.4 を使用している場合は sqljdbc_auth.dll という名前になります。)

authenticationScheme=JavaKerberos を使用する場合は、serverName プロパティまたは serverSpn プロパティで完全修飾ドメイン名 (FQDN) を指定する必要があります。 それ以外の場合は、エラーが発生します (Kerberos データベースにサーバーが見つからない)。

authenticationScheme=JavaKerberos の使用の詳細については、「Kerberos 統合認証による SQL Server への接続」を参照してください。

authenticationScheme=NTLM を使用する場合は、domain または domainName プロパティを使用して Windows ドメインを指定し、user または userName プロパティと password プロパティで Windows 資格情報を指定する必要があります。 これを行わないと、エラーが発生します (接続プロパティを指定する必要があります)。
cancelQueryTimeout

INT

-1
(バージョン 6.4 以降) このプロパティは、接続で設定されている queryTimeout を取り消す場合に使用できます。 サーバーへの TCP 接続が暗黙的に削除されると、クエリの実行はハングし、例外はスローされません。 このプロパティは、接続でも 'queryTimeout' が設定されている場合にのみ適用されます。

ドライバーは cancelQueryTimeout + queryTimeout を合計した秒数を待機してから、接続を中断し、チャネルを閉じます。

このプロパティの既定値は -1 で、動作は無期限の待機です。
clientCertificate

String

null
(バージョン 8.4 以降) クライアント証明書の認証に使用する証明書の場所を指定します。 JDBC ドライバーでは、PFX、PEM、DER、CER ファイル拡張子がサポートされます。

詳細については、「ループバック シナリオにおけるクライアント証明書の認証」を参照してください。
clientKey

String

null
(バージョン 8.4 以降) clientCertificate 属性によって指定された PEM、DER、CER 証明書の秘密キーのファイルの場所を指定します。

詳細については、「ループバック シナリオにおけるクライアント証明書の認証」を参照してください。
clientKeyPassword

String

null
(バージョン 8.4 以降) clientKey ファイルの秘密キーにアクセスするために指定された省略可能なパスワード文字列。

詳細については、「ループバック シナリオにおけるクライアント証明書の認証」を参照してください。
columnEncryptionSetting

String
["Enabled" | "Disabled"]

無効
(バージョン 6.0 以降) Always Encrypted (AE) 機能を使用するには、"Enabled" に設定します。 AE を有効にすると、JDBC ドライバーによって、サーバーの暗号化されたデータベースの列に格納されている機密データの透過的な暗号化と暗号化解除が行われます。

Always Encrypted の詳細については、「JDBC ドライバーでの Always Encrypted の使用」を参照してください。

注: Always Encrypted は、SQL Server 2016 以降および Azure SQL Database で利用できます。
connectRetryCount

INT
[0..255]

1
(バージョン 9.4+) 接続に障害が発生した場合の再接続試行回数。
connectRetryInterval

INT
[1..60]

10
(バージョン 9.4+) 接続再試行間の秒数。
databaseName,
database

String
[<=128 文字]

null
接続するデータベース名です。

指定しない場合は、既定のデータベースへの接続が確立されます。
delayLoadingLobs

boolean
["true" | "false"]

true
ResultSet から取得されるすべての LOB オブジェクトをストリームするかどうかを示すフラグ。 このプロパティを "false" に設定すると、LOB オブジェクト全体がストリーミングなしでメモリに読み込まれます。
domainName
domain

String
null
(バージョン 7.4 以降) NTLM 認証を使用する場合に認証を行う Windows ドメイン。
disableStatementPooling

boolean
["true" | "false"]

true
ステートメント プーリングを使用する必要があるかどうかを示すフラグ。
enablePrepareOnFirst...
PreparedStatementCall

boolean
["true" | "false"]

false
準備されたステートメントの最初の実行で sp_prepexec を呼び出すことによって、準備されたステートメントのハンドルの作成を有効にするには、"true" に設定します。

準備されたステートメントの最初の実行で sp_executesql を呼び出し、ステートメントを準備しないように変更するには、"false" に設定します。 2 回目の実行が行われると、sp_prepexec が呼び出され、準備されたステートメントのハンドルが設定されます。
enclaveAttestationUrl

String

null
(バージョン 8.2 以降) この省略可能なプロパティは、セキュリティで保護されたエンクレーブでの Always Encrypted に使用する構成証明サービスのエンドポイント URL を示します。

セキュリティで保護されたエンクレーブが設定された Always Encrypted の詳細については、「セキュア エンクレーブを使用する Always Encrypted」を参照してください。
enclaveAttestationProtocol

String

null
(バージョン 8.2 以降) この省略可能なプロパティは、セキュア エンクレーブを使用する Always Encrypted に使用する構成証明プロトコルを示します。 現時点では、このフィールドでサポートされている値は HGS のみです。

セキュリティで保護されたエンクレーブが設定された Always Encrypted の詳細については、「セキュア エンクレーブを使用する Always Encrypted」を参照してください。
encrypt

boolean
["true" | "false"]

false
サーバーに証明書がインストールされている場合に、クライアントとサーバー間で送信されるすべてのデータに対して SQL Server で TLS 暗号化が使用されるようにするには、"true" に設定します。 既定値は "false" です。

バージョン 6.0 以降では、既定で TLS 暗号化を使用する新しい接続設定 "authentication" があります。

このプロパティの詳細については、「authentication」プロパティを参照してください。
failoverPartner

String

null
データベース ミラーリング構成で使用されるフェールオーバー サーバーの名前です。 このプロパティは、プリンシパル サーバーへの初期接続に失敗した場合に使用されます。初期接続が行われた後は、このプロパティは無視されます。 databaseName プロパティと一緒に使用する必要があります。

注: 接続文字列の中で failoverPartner プロパティを指定するときに、フェールオーバー パートナー インスタンスのサーバー インスタンスのポート番号を指定することはできません。 ただし、プリンシパル サーバー インスタンスの serverName、instanceName、portNumber の各プロパティ、およびフェールオーバー パートナー インスタンスの failoverPartner プロパティを同じ接続文字列の中で指定することはできます。

Server 接続プロパティの仮想ネットワーク名を指定した場合は、データベース ミラーリングを使用できません。 ディザスター リカバリーの詳細については、「高可用性、ディザスター リカバリーのための JDBC Driver のサポート」を参照してください
fips

boolean
["true" | "false"]

"false"
FIPS 対応 Java 仮想マシン (JVM) の場合、このプロパティを true にする必要があります。
fipsProvider

String

null
JVM で構成される FIPS プロバイダー。 たとえば、BCFIPS、SunPKCS11-NSS など。 バージョン 6.4.0 で削除されました。詳細はこちらをご覧ください。
gsscredential

org.ietf.jgss.GSSCredential

null
(バージョン 6.2 以降) Kerberos の制約付き委任に使用されるユーザー資格情報を、このプロパティに渡すことができます。

これは integratedSecuritytrue として、JavaKerberosauthenticationScheme として使用します。
hostNameInCertificate

String

null
SQL Server の TLS/SSL 証明書の検証に使用されるホスト名です。

hostNameInCertificate プロパティが指定されていないか null に設定されている場合、SQL Server 用 Microsoft JDBC ドライバー は、接続 URL の serverName プロパティ値をホスト名として使用して SQL Server の TLS/SSL 証明書を検証します。

注: このプロパティは、encrypt/authentication プロパティおよび trustServerCertificate プロパティと組み合わせて使用されます。 このプロパティが証明書の検証に影響するのは、接続で TLS 暗号化が使用されていて、trustServerCertificate が "false" に設定されている場合です。 TLS 接続が成功するには、hostNameInCertificate に渡される値が、サーバー証明書に含まれるサブジェクトの別名 (SAN) の共通名 (CN) または DNS 名と一致している必要があります。 暗号化のサポートの詳細については、「暗号化のサポートについて」を参照してください。
INSTANCENAME

String
[<=128 文字]

null
接続するデータベース インスタンスの名前。 指定しない場合は、既定のインスタンスへの接続が確立されます。 instanceName と port の両方を指定する場合については、port の注を参照してください。

Server 接続プロパティの仮想ネットワーク名を指定した場合は、instanceName 接続プロパティを使用できません。 ディザスター リカバリーの詳細については、「高可用性、ディザスター リカバリーのための JDBC ドライバーのサポート」を参照してください。
integratedSecurity

boolean
["true"|"false"]

false
Windows オペレーティング システムの SQL Server によって Windows 資格情報が使用されていることを示すには、"true" に設定します。 "true" の場合、ユーザーがコンピューターまたはネットワークにサインインするときに指定した資格情報が、JDBC ドライバーによって、ローカル コンピューターの資格情報のキャッシュで検索されます。

Kerberos 資格情報が SQL Server によって使用されていることを示すには、(authenticationscheme=JavaKerberos で) "true" に設定します。 Kerberos 認証の詳細については、「Kerberos 統合認証による SQL Server への接続」を参照してください。

NTLM 資格情報が SQL Server によって使用されていることを示すには、(authenticationscheme=NTLM で) "true" に設定します。

"false" の場合は、ユーザー名とパスワードを指定する必要があります。
jaasConfigurationName

String

SQLJDBCDriver
(バージョン 6.2 以降) SQL Server への各接続で、Kerberos 接続を確立するための独自の JAAS ログイン構成ファイルを持つことができます。 このプロパティを使用して、ログイン構成ファイルの名前を渡すことができます。
既定では、ドライバーによって、IBM JVM の場合は useDefaultCcache = true に、他の JVM の場合は useTicketCache = true に設定されます。
keyStoreAuthentication

String

null
(バージョン 6.0 以降) このプロパティによって、Always Encrypted で使用するキー ストアが示され、キー ストアに対する認証に使用される認証メカニズムが決定されます。 "keyStoreAuthentication=JavaKeyStorePassword" を設定すると、ドライバーによって Java キー ストアのシームレスな設定がサポートされます。 このプロパティを使用するには、Java キー ストアに対して keyStoreLocation および keyStoreSecret プロパティも設定する必要があります。

Always Encrypted の詳細については、「JDBC ドライバーでの Always Encrypted の使用」を参照してください。

Microsoft JDBC Driver 8.4 以降では、"keyStoreAuthentication=KeyVaultManagedIdentity" または "keyStoreAuthentication=KeyVaultClientSecret" を設定することにより、マネージド ID を使用して Azure Key Vault に対する認証を行うこともできます。

Always Encrypted の詳細については、「JDBC ドライバーでの Always Encrypted の使用」を参照してください。
keyStoreLocation

String

null
(バージョン 6.0 以降) keyStoreAuthentication=JavaKeyStorePassword の場合、keyStoreLocation プロパティによって、Always Encrypted データで使用される列マスター キーを格納する Java キーストア ファイルへのパスが識別されます。 パスにはキーストア ファイル名を含める必要があります。

Always Encrypted の詳細については、「JDBC ドライバーでの Always Encrypted の使用」を参照してください。
keyStorePrincipalId

String

null
(バージョン 8.4 以降) keyStoreAuthentication=KeyVaultManagedIdentity の場合、keyStorePrincipalId プロパティによって有効な Azure Active Directory アプリケーション クライアント ID を指定します。

Always Encrypted の詳細については、「JDBC ドライバーでの Always Encrypted の使用」を参照してください。
keyStoreSecret

String

null
(バージョン 6.0 以降) keyStoreAuthentication=JavaKeyStorePassword の場合、keyStoreSecret プロパティによって、キーストアとキーに使用するパスワードが識別されます。 Java キー ストアを使用する場合、キーストアとキー パスワードは同じである必要があります。

Always Encrypted の詳細については、「JDBC ドライバーでの Always Encrypted の使用」を参照してください。
lastUpdateCount

boolean
["true" | "false"]

true
値が "true" の場合、サーバーに渡された SQL ステートメントからは、最終的な更新数のみが返されます。また、1 つの SELECT、INSERT、または DELETE ステートメントで使用して、サーバーのトリガーによる他の更新数を無視することができます。 このプロパティを "false" に設定すると、サーバーのトリガーにより返される更新数を含む、すべての更新数が返されます。

注: このプロパティが適用されるのは、executeUpdate メソッドと一緒に使用された場合だけです。 その他のすべての execute メソッドは、すべての結果および更新数を返します。 このプロパティは、サーバーのトリガーにより返される更新数にのみ影響します。 トリガーの実行の一部として得られる結果セットまたはエラーには影響しません。
lockTimeout

INT

-1
データベースがロック タイムアウトを通知するまでに待機する時間 (ミリ秒) です。既定では、無期限に待機します。 指定されている場合、この値は接続上のすべてのステートメントに対する既定値になります。 特定のステートメントに対するタイムアウトは、Statement.setQueryTimeout() を使用して設定できます。 この値は、待機しないことを示す 0 に設定できます。
loginTimeout

INT
[0..65535]

15
ドライバーがタイムアウトを通知して接続を失敗させるまでに待機する時間 (秒) です。 0 の値は、タイムアウトが既定のシステム タイムアウトであることを示します。既定のシステム タイムアウトは、既定では 15 秒に指定されています。 0 以外の値は、ドライバーがタイムアウトを通知して接続を失敗させるまでに待機する時間 (秒) を示します。

Server 接続プロパティの仮想ネットワーク名を指定する場合は、フェールオーバー接続が成功するまで十分な時間がとれるように、3 分以上のタイムアウト値を指定する必要があります。 ディザスター リカバリーの詳細については、「高可用性、ディザスター リカバリーのための JDBC Driver のサポート」を参照してください。
maxResultBuffer

String

null
(バージョン 9.2 以降) maxResultBuffer を使用して、結果セットを読み取るときの最大バイト数を設定できます。 指定しない場合、結果セット全体が読み取られます。 サイズは、次の 2 つのスタイルで指定できます。
1. バイトのサイズ (例: 100、150M、300K、400G)
2. 最大ヒープ メモリの割合 (例: 10p、15pct、20percent)。
msiClientId

String

null
(バージョン 7.2 以降) ActiveDirectoryMSI 認証モードで接続を確立するときに、accessToken を取得するために使用されるマネージド ID (MSI) のクライアント ID。
multiSubnetFailover

Boolean

false
SQL Server 可用性グループまたは SQL Server フェールオーバー クラスター インスタンスの可用性グループ リスナーに接続する際には、必ず multiSubnetFailover=true を指定してください。 multiSubnetFailover=true を指定すると、(現在) アクティブなサーバーを迅速に検出して接続するように、ドライバーが構成されます。 可能な値は、true と false です。 ディザスター リカバリーの詳細については、「高可用性、ディザスター リカバリーのための JDBC ドライバーのサポート」を参照してください。

getPropertyInfogetMultiSubnetFailoversetMultiSubnetFailover がある multiSubnetFailover 接続プロパティには、プログラムからアクセスできます。

注: Microsoft JDBC Driver 6.0 for SQL Server 以降では、可用性グループ リスナーに接続するときに、multiSubnetFailover を "true" に設定する必要がなくなりました。 既定で有効になっている新しいプロパティ transparentNetworkIPResolution により、(現在) アクティブなサーバーの検出と接続が提供されます。
packetSize

INT
[-1 | 0 | 512..32767]

8000
サーバーとの通信に使用されるネットワーク パケット サイズ (バイト単位)。 値が -1 の場合は、サーバーの既定のパケット サイズが使用されます。 値が 0 の場合は、最大値 (32767) が使用されます。 このプロパティが許容範囲外の値に設定されている場合は、例外が発生します。

重要: 暗号化を有効 (encrypt=true) にしている場合に packetSize プロパティを使用することはお勧めしません。 使用すると、接続エラーが発生する可能性があります。 このプロパティの詳細については、SQLServerDataSource クラスの setPacketSize メソッドを参照してください。
password

String
[<=128 文字]

null
SQL ユーザーとパスワードで接続する場合のデータベース パスワード。
プリンシパル名とパスワードを使用した Kerberos 接続の場合、このプロパティは Kerberos プリンシパル パスワードに設定されます。
portNumber,
port

INT
[0..65535]

1433
サーバーがリッスンしているポート。 ポート番号が接続文字列に指定されている場合は、SQLbrowser に対する要求は作成されません。 port と instanceName の両方が指定されている場合は、指定されたポートへの接続が確立されます。 ただし、instanceName の検証が行われ、ポートと一致しない場合はエラーがスローされます。

重要: SQLbrowser を使用するよりセキュリティが向上するため、常にポート番号を指定することをお勧めします。
queryTimeout

INT

-1
クエリでタイムアウトが発生するまでに待機する秒数。 既定値は -1 です。これはタイムアウトが無期限であることを意味します。 この値を 0 に設定した場合も、無期限の待機を意味します。
realm

String

null
(バージョン 9.4+) Kerberos 認証の領域。 この値を設定すると、サーバーの領域からドライバーによって自動検出される Kerberos 認証領域がオーバーライドされます。
レプリケーション

boolean
["true" | "false"]

false
(バージョン 9.4+) 接続をレプリケーションに使用するかどうかがこの設定によりサーバーに通知されます。 有効にすると、NOT FOR REPLICATION オプションを使用したトリガーは、接続で起動されません。
responseBuffering

String
["full" | "adaptive"]

adaptive
このプロパティを "adaptive" に設定すると、必要に応じて最小限のデータがバッファリングされます。 既定のモードは "adaptive" です。

このプロパティが "full" に設定されている場合、ステートメントの実行時に結果セット全体がサーバーから読み取られます。

注: JDBC ドライバーをバージョン 1.2 からアップグレードすると、既定のバッファリング動作が "adaptive" になります。 アプリケーションでバージョン 1.2 の既定の動作を維持したい場合は、接続プロパティで、または SQLServerStatement オブジェクトの setResponseBuffering メソッドを使用して、responseBufferring プロパティを "full" に設定する必要があります。
selectMethod

String
["direct" | "cursor"]

直接
このプロパティが "cursor" に設定されている場合、TYPE_FORWARD_ONLY および CONCUR_READ_ONLY のカーソルに対して接続上で作成されるクエリごとに、データベース カーソルが作成されます。 このプロパティは、通常、クライアントのメモリ内に収まらない大きな結果セットをアプリケーションが生成する場合にのみ必要です。 このプロパティが "cursor" に設定されると、結果セットの行が限定された数だけクライアントのメモリに保持されます。

既定の動作では、すべての結果セットの行がクライアントのメモリに保持されます。 この動作により、アプリケーションがすべての行を処理する場合は、パフォーマンスが最も高くなります。
sendStringParameters...
AsUnicode

boolean
["true" | "false"]

true
sendStringParametersAsUnicode プロパティが "true" に設定されている場合、文字列パラメーターは Unicode 形式でサーバーに送信されます。

sendStringParametersAsUnicode プロパティが "false" に設定されている場合、文字列パラメーターは、Unicode ではなく ASCII/MBCS などの Unicode 以外の形式でサーバーに送信されます。

sendStringParametersAsUnicode プロパティの既定値は "true" です。

注: CHARVARCHAR、または LONGVARCHAR の各 JDBC 型のパラメーター値を送信するときにのみ、sendStringParametersAsUnicode プロパティがチェックされます。 SQLServerPreparedStatement クラスと SQLServerCallableStatement クラスの setNString、setNCharacterStream、setNClob メソッドのような、JDBC 4.0 の新しい National Character メソッドでは、このプロパティを設定するかどうかに関係なく、常にパラメーター値が Unicode 形式でサーバーに送信されます。

CHARVARCHARLONGVARCHAR などの JDBC データ型の使用に伴うパフォーマンスを最適に保つためには、アプリケーションで、sendStringParametersAsUnicode プロパティを "false" に設定し、National Character メソッド以外のメソッドである、SQLServerPreparedStatement クラスおよび SQLServerCallableStatement クラスの setString、setCharacterStream、および setClob を使用する必要があります。

アプリケーションで sendStringParametersAsUnicode プロパティが "false" に設定されていて、National Character メソッド以外のメソッドを使用してサーバー側の Unicode データ型 (ncharnvarcharntext など) にアクセスする場合に、National Character メソッド以外のメソッドで渡される文字列パラメーターの文字がデータベース照合順序でサポートされていないときには、一部のデータが失われる可能性があります。

アプリケーションでは、NCHARNVARCHARLONGNVARCHAR の各 JDBC データ型に対して、SQLServerPreparedStatement クラスおよび SQLServerCallableStatement クラスの National Character メソッドである setNString、setNCharacterStream、および setNClob を使用する必要があります。
sendTemporalDataTypesAsStringForBulkCopy

boolean
["true" | "false"]

true
(バージョン 8.4 以降) この接続プロパティを "false" に設定すると、DATEDATETIMEDATIMETIME2DATETIMEOFFSETSMALLDATETIME、および TIME データ型が文字列として送信されず、それぞれの型として送信されます。

この接続プロパティが "false" に設定されている場合、次の例のように、ドライバーによって各テンポラル データ型の既定の文字列リテラル形式のみが受け入れられます。

DATE: YYYY-MM-DD
DATETIME: YYYY-MM-DD hh:mm:ss[.nnn]
DATETIME2: YYYY-MM-DD hh:mm:ss[.nnnnnnn]
DATETIMEOFFSET: YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+/-}hh:mm]
SMALLDATETIME: YYYY-MM-DD hh:mm:ss
TIME: hh:mm:ss[.nnnnnnn]
sendTimeAsDatetime

boolean
["true" | "false"]

true
このプロパティは SQL Server JDBC Driver 3.0 で追加されました。

"true" に設定すると、java.sql.Time 値は SQL Server の datetime 値としてサーバーに送信されます。
"false" に設定すると、java.sql.Time 値は SQL Server の time 値としてサーバーに送信されます。

このプロパティの既定値は、現在は "true" ですが、将来のリリースで変更される可能性があります。

java.sql.Time 値をサーバーに送信する前に、SQL Server 用 Microsoft JDBC ドライバー でその値を構成する方法の詳細については、「java.sql.Time の値をサーバーに送信する方法の構成」を参照してください。
serverName,
server

String

null
SQL Server が実行されているコンピューターまたは Azure SQL データベース。

AlwaysOn 可用性グループ の可用性グループの仮想ネットワーク名を指定することもできます。 ディザスター リカバリーの詳細については、「高可用性、ディザスター リカバリーのための JDBC Driver のサポート」を参照してください。
serverNameAsACE

boolean
["true" | "false"]

false
(バージョン 6.0 以降) "true" に設定すると、ドライバーが Unicode のサーバー名を互換性のある ASCII エンコード (Punycode) に変換して接続する必要があることを示します。 この設定が false の場合、ドライバーは、ユーザーによって提供されたサーバー名を使用して接続します。

国際化機能の詳細については、「JDBC ドライバーの国際化機能」を参照してください。
serverPreparedStatement...
DiscardThreshold

Integer

10
(バージョン 6.2 以降) このプロパティを使用して、サーバー上の未処理のハンドルをクリーンアップするための呼び出しが実行される前に、1 つの接続に対して許される未処理の準備されたステートメント破棄アクション (sp_unprepare) の数を制御できます。

このプロパティを <= 1 に設定すると、準備解除アクションは、準備されたステートメントの終了時に直ちに実行されます。 1 より大きく設定した場合、これらの呼び出しは、sp_unprepare を頻繁に呼び出すことによるオーバーヘッドを回避するためにまとめてバッチ処理されます。
serverSpn

String

null
(バージョン 4.2 以降) このオプションのプロパティを使用して、Java Kerberos 接続のサービス プリンシパル名 (SPN) を指定できます。 これは、authenticationScheme と共に使用されます。

SPN を指定するには、"MSSQLSvc/fqdn:port@REALM" の形式を使用できます。ここで、fqdn は完全修飾ドメイン名、port はポート番号、REALM は大文字で表記された SQL Server の Kerberos 領域です。

注: クライアントの既定の領域 (Kerberos 構成で指定した領域) が SQL Server の Kerberos 領域と同じである場合は、@REALM は省略できます。

Java Kerberos での serverSpn の使用の詳細については、「Kerberos 統合認証による SQL Server への接続」を参照してください。
socketFactoryClass

String

null
(バージョン 8.4 以降) 既定のソケット ファクトリの代わりに使用するカスタム ソケット ファクトリのクラス名を指定します。
socketTimeout

INT

0
ソケットの読み取りまたは受け入れで、タイムアウトが発生する前に待機するミリ秒数。 既定値は 0 です。これはタイムアウトが無期限であることを意味します。
statementPooling...
CacheSize

INT

0
(バージョン 6.4 以降) このプロパティを使用して、ドライバーで準備されたステートメント ハンドルのキャッシュを有効にすることができます。

このプロパティにより、ステートメント プールのキャッシュのサイズが定義されます。

このプロパティは、disableStatementPooling 接続プロパティ ("false" に設定する必要があります) と併用することだけができます。 disableStatementPooling を "true" または statementPoolingCacheSize を 0 に設定すると、準備されたステートメント ハンドルのキャッシュが無効になります。
sslProtocol

String

TLS
(バージョン 6.4 以降) このプロパティを使用して、セキュリティで保護された接続時に考慮する TLS プロトコルを指定できます。
次のいずれかの値になります。TLSTLSv1TLSv1.1TLSv1.2

SSL プロトコルの詳細については、「SSLProtocol」を参照してください。
transparentNetwork...
IPResolution

boolean
["true" | "false"]

true
(バージョン 6.0 以降) このプロパティを指定すると、(現在) アクティブなサーバーを迅速に検出して接続できます。 指定できる値は "true" と "false" です。 "true" は既定値です。

Microsoft JDBC Driver 6.0 for SQL Server より前のバージョンでは、AlwaysOn 可用性グループに接続していることを示すために、アプリケーションで "multiSubnetFailover=true" を含めるように接続文字列を設定する必要がありました。 multiSubnetFailover 接続キーワードを "true" に設定しないと、アプリケーションで AlwaysOn 可用性グループに接続中にタイムアウトが発生する可能性がありました。 バージョン 6.0 以降では、アプリケーションで multiSubnetFailover を true に設定する必要がなくなりました。

注: transparentNetworkIPResolution=true の場合、最初の接続試行では、タイムアウトとして 500 ミリ秒が使用されます。 その後の試行では、multiSubnetFailover プロパティで使用されているのと同じタイムアウト ロジックが使用されます。
trustManagerClass

String

null
(バージョン 6.4 以降) カスタム javax.net.ssl.TrustManager 実装の完全修飾クラス名。
trustManager...
ConstructorArg

String

null
(バージョン 6.4 以降) TrustManager のコンストラクターに渡す省略可能な引数。 trustManagerClass が指定され、暗号化された接続が要求された場合、既定のシステム JVM キーストアベースの TrustManager の代わりに、カスタム TrustManager が使用されます。
trustServerCertificate

boolean
["true" | "false"]

false
ドライバーによってサーバーの TLS/SSL 証明書が検証されないようにするには、"true" に設定します。

"true" の場合、通信レイヤーが TLS で暗号化されていると、サーバーの TLS/SSL 証明書は自動的に信頼されます。

"false" の場合は、ドライバーによってサーバーの TLS/SSL 証明書が検証されます。 サーバー証明書の検証が失敗した場合は、ドライバーでエラーが発生して接続が終了します。 既定値は "false" です。 TLS/SSL 接続が成功するには、serverName に渡される値が、サーバー証明書に含まれるサブジェクトの別名の共通名 (CN) または DNS 名と厳密に一致している必要があります。 暗号化のサポートの詳細については、「暗号化のサポートについて」を参照してください。

注: このプロパティは、encrypt/authentication プロパティと組み合わせて使用されます。 このプロパティがサーバーの TLS/SSL 証明書の検証に影響するのは、接続で TLS 暗号化が使用される場合です。
trustStore

String

null
証明書の trustStore ファイルへのパス (ファイル名を含む) です。 trustStore ファイルには、クライアントが信頼する証明書の一覧が含まれています。

このプロパティが指定されていないか null に設定されている場合、ドライバーは、信頼マネージャー ファクトリの検索ルールに従って、使用する証明書ストアを決定します。

既定の SunX509 TrustManagerFactory では、次の順序で信頼済みマテリアルの検索が行われます。

JVM システム プロパティの "javax.net.ssl.trustStore" で指定されたファイル。

"<java-home>/lib/security/jssecacerts" ファイル

"<java-home>/lib/security/cacerts" ファイル



SUNX509 TrustManager Interface の詳細については、Sun Microsystems の Web サイトにある SUNX509 TrustManager Interface に関するドキュメントを参照してください。

注: このプロパティが証明書の trustStore の検索に影響するのは、接続で TLS 暗号化が使用され、trustServerCertificate プロパティが "false" に設定されている場合です。
trustStorePassword

String

null
trustStore データの整合性を確認するために使用するパスワードです。

trustStore プロパティは設定されているが trustStorePassword プロパティは設定されていない場合、trustStore の整合性は確認されません。

trustStore プロパティと trustStorePassword プロパティの両方が指定されていない場合、ドライバーでは、JVM システム プロパティの "javax.net.ssl.trustStore" と "javax.net.ssl.trustStorePassword" が使用されます。 "javax.net.ssl.trustStorePassword" システム プロパティが指定されていない場合、trustStore の整合性は確認されません。

trustStore プロパティは設定されていないが trustStorePassword プロパティは設定されている場合、JDBC ドライバーでは、"javax.net.ssl.trustStore" で指定されたファイルが信頼ストアとして使用され、指定された trustStorePassword を使用して信頼ストアの整合性が確認されます。 この設定は、クライアント アプリケーションでパスワードを JVM システム プロパティに格納しないようにする場合に必要です。

注: trustStorePassword プロパティが証明書の trustStore の検索に影響するのは、接続で TLS 接続が使用され、trustServerCertificate プロパティが "false" に設定されている場合です。
trustStoreType

String

JKS
FIPS モードで使用する信頼ストアの種類を指定するには、このプロパティを設定します。

指定できる値は、PKCS12 または FIPS プロバイダーによって定義された種類です。
useBulkCopyFor...
BatchInsert

boolean
["true" | "false"]

false
(バージョン 9.2 以降) この接続プロパティを有効にすると、java.sql.PreparedStatement を使用してバッチ挿入操作を行うときに、一括コピー API を透過的に使用できます。 この機能を有効にすると、パフォーマンスが大幅に向上する可能性があります。

この機能は、既定では無効化されています。 この機能を有効にするには、このプロパティを "true" に設定します。
重要な注意: この機能では、完全にパラメーター化された INSERT クエリのみがサポートされます。 INSERT クエリが他の SQL クエリによって結合された場合、または値にデータが含まれている場合、実行は基本的なバッチ挿入操作にフォールバックします。

このプロパティの使用方法の詳細については、「バッチ挿入操作に一括コピー API を使用する」を参照してください
useFmtOnly

boolean
["true" | "false"]

false
(バージョン 7.4 以降) サーバーからパラメーター メタデータのクエリを実行する別の方法が提供されます。 パラメーター メタデータのクエリを実行するときに、ドライバーで SET FMTONLY ロジックを使用する必要があることを指定するには、このプロパティを "true" に設定します。 この機能は既定ではオフになっています。SET FMTONLY は非推奨としてマークされているため、このプロパティを使用することは推奨されていません。 useFmtOnly は、sp_describe_undeclared_parameters の既知の問題と制限の回避策としてのみ使用できます。

現在、この機能では、単一の SELECT/INSERT/UPDATE/DELETE クエリのみがサポートされています。 サポートされていないクエリまたは複数のクエリでこの機能を使用しようとすると、ドライバーではクエリの解析が試行されますが、ほとんどの場合、例外が発生します。

このプロパティの詳細については、「UseFmtOnly を使用した ParameterMetaData の取得」を参照してください。
userName,
user

String
[<=128 文字]

null
SQL ユーザーとパスワードが接続されている場合のデータベース ユーザー。

プリンシパル名とパスワードを使用した Kerberos 接続の場合、このプロパティは Kerberos プリンシパル名に設定されます。
workstationID

String
[<=128 文字]

<空の文字列>
ワークステーション ID。 個別のワークステーションを識別するために、さまざまなプロファイリング ツールおよびロギング ツールで使用されます。

指定されていない場合は、<空の文字列> が使用されます。
xopenStates

boolean
["true" | "false"]

false
"true" に設定すると、ドライバーが XOPEN 互換の状態コードを例外で返します。

既定では、SQL 99 の状態コードを返します。
   

注意

SQL Server 用 Microsoft JDBC ドライバー は、ANSI_DEFAULTS および IMPLICIT_TRANSACTIONS 以外の接続プロパティのサーバー既定値を受け取ります。 SQL Server 用 Microsoft JDBC ドライバー によって、ANSI_DEFAULTS は ON に、IMPLICIT_TRANSACTIONS は OFF に自動的に設定されます。

重要

認証に ActiveDirectoryPassword が設定されている場合、次のライブラリがクラスパスに含められている必要があります: microsoft-authentication-library-for-javaMaven リポジトリ で見つけることができます。 ライブラリとその依存関係をダウンロードする最も簡単な方法は、Maven を使用することです。

  1. システムに Maven をインストールします
  2. ドライバーの GitHub ページ へ移動します。
  3. pom.xml ファイルをダウンロードします。
  4. 次の Maven コマンドを実行して、ライブラリとその依存関係をダウンロードします: mvn dependency:copy-dependencies

関連項目

JDBC ドライバーによる SQL Server への接続
FIPS モード