接続 URL の構築

DownloadJDBC ドライバーのダウンロード

接続 URL の一般的な書式は次のとおりです。

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

各値の説明:

  • jdbc:sqlserver:// (必須) は、サブプロトコルであり定数です。

  • serverName (省略可能) は、接続先のサーバーのアドレスです。 このアドレスは DNS または IP アドレスとすることができます。または、ローカル コンピューターを表す localhost あるいは 127.0.0.1 とすることもできます。 接続 URL で指定されていない場合、プロパティのコレクションでサーバー名を指定する必要があります。

  • instanceName (省略可能) は、serverName 上にある接続先のインスタンスです。 指定されていない場合は、既定のインスタンスに接続されます。

  • portNumber (省略可能) は、serverName 上にある接続先のポートです。 既定では 1433 です。 既定のポートを使用する場合は、URL でポートおよびその前の ':' を指定する必要はありません。

    Note

    最適な接続パフォーマンスのために、名前付きインスタンスに接続するときは portNumber を設定します。 こうすることにより、ポート番号を決定するためのサーバーへのラウンド トリップが回避されます。 portNumber および instanceName の両方が使用されている場合、portNumber が優先され、instanceName は無視されます。

  • property (省略可能) は、1 つ以上の接続プロパティ オプションです。 詳細については、「接続プロパティの設定」を参照してください。 リストに含まれる任意のプロパティを指定できます。 プロパティを区切るには必ずセミコロン (';') を使用します。またプロパティを重複して指定することはできません。

注意事項

セキュリティ上の理由から、ユーザー入力に基づく接続 URL の作成は避ける必要があります。 URL では、サーバー名とドライバーだけを指定するようにします。 ユーザー名とパスワードの値には、接続プロパティのコレクションを使用します。 JDBC アプリケーションにおけるセキュリティの詳細については、「JDBC ドライバー アプリケーションのセキュリティ保護」を参照してください。

接続のプロパティ

接続文字列で設定できるプロパティの詳細な一覧については、「接続プロパティの設定」を参照してください。

接続の例

ユーザー名とパスワードを使用して、ローカル コンピューター上の既定のデータベースに接続します。

jdbc:sqlserver://localhost;user=MyUserName;password=*****;

Note

前の例では接続文字列でユーザー名とパスワードを使用していますが、より安全な統合セキュリティを使用する必要があります。 詳細については、後の「Windows 上で統合認証を使用する接続」セクションを参照してください。

次の接続文字列は、Microsoft JDBC Driver for SQL Server でサポートされている任意のオペレーティング システムで実行されているアプリケーションから統合認証と Kerberos を使用して SQL Server データベースに接続する方法の例を示しています。

jdbc:sqlserver://;servername=server_name;integratedSecurity=true;authenticationScheme=JavaKerberos

統合認証を使用して、ローカル コンピューター上の既定のデータベースに接続します。

jdbc:sqlserver://localhost;integratedSecurity=true;

リモート サーバー上の名前付きデータベースに接続します。

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;

既定のポートでリモート サーバーに接続します。

jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;integratedSecurity=true;

カスタマイズされたアプリケーション名を指定して接続します。

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;applicationName=MyApp;

名前付きおよび複数の SQL Server インスタンス

SQL Serverでは、サーバーごとに複数のデータベース インスタンスをインストールできます。 各インスタンスは個別の名前によって識別されます。 SQL Server の名前付きインスタンスに接続するには、名前付きインスタンスのポート番号 (推奨) を指定するか、JDBC URL プロパティまたはデータソース プロパティとしてインスタンス名を指定します。 インスタンス名またはポート番号のプロパティを指定しない場合は、既定のインスタンスへの接続が作成されます。 次の例を参照してください。

ポート番号を指定するには、次の形式を使用します。

jdbc:sqlserver://localhost:1433;integratedSecurity=true;<more properties as required>;

JDBC URL プロパティを使用するには、次の形式を使用します。

jdbc:sqlserver://localhost;instanceName=instance1;integratedSecurity=true;<more properties as required>;

接続 URL での値のエスケープ

スペース、セミコロン、引用符などの特殊文字が値に含まれている場合は、接続 URL の値の特定部分をエスケープすることが必要になる場合があります。 JDBC ドライバーでは、これらの文字を中かっこで囲むことでエスケープすることがサポートされています。 たとえば、{;} とするとセミコロンがエスケープされます。

バージョン 8.4 より前までは、エスケープする値に、特殊文字 (特に '='、';'、'[]'、およびスペース) を含めることができますが、中かっこはエスケープできません。 エスケープが必要な値に中かっこが含まれる場合は、プロパティのコレクションに加える必要があります。

バージョン 8.4 以降では、エスケープする値に、中かっこを含む特殊文字を含めることができます。 ただし、右中かっこはエスケープする必要があります。 たとえば、パスワードが pass";{}word の場合、接続文字列により、次のようにパスワードをエスケープする必要があります。

jdbc:sqlserver://localhost;username=MyUsername;password={pass";{}}word};

Note

中かっこ内の空白はリテラルでありトリミングされません。

Windows 上で統合認証を使用する接続

JDBC ドライバーでは、integratedSecurity 接続文字列プロパティを使用して、Windows オペレーティング システム上でのタイプ 2 の統合認証の使用がサポートされます。 統合認証を使用するには、JDBC ドライバーがインストールされているコンピューター上の Windows システム パス上のディレクトリに mssql-jdbc_auth-version-arch<><>.dll ファイルをコピーします。

mssql-jdbc_auth-version-arch<>.dll<ファイル>は、次の場所にインストールされます。

<<>\sqljdbc_<>>\<<>\auth\

Microsoft JDBC Driver for SQL Server でサポートされているオペレーティング システムについては、「Kerberos 統合認証を Connect から SQL Server に使用する」を参照してください。Microsoft JDBC Driver 4.0 for SQL Server で追加された機能の説明を参照してください。これは、アプリケーションが Type 4 Kerberos との統合認証を使用してデータベースに接続できる機能です。

Note

32 ビット Java 仮想マシン (JVM) を実行している場合は、オペレーティング システムが x64 バージョンである場合でも、x86 フォルダー内の mssql-jdbc_auth-version-arch<><>.dll ファイルを使用します。 x64 プロセッサで 64 ビット JVM を実行している場合は、x64 フォルダー内の mssql-jdbc_auth-version-arch<><>.dll ファイルを使用します。

または、java.library.path システム プロパティを設定して、mssql-jdbc_auth-version-arch<<> ファイルのディレクトリを指定>.dll。 たとえば、JDBC ドライバーが既定のディレクトリにインストールされている場合、Java アプリケーションの起動時に次の仮想マシン (VM) 引数を使用することで、DLL の場所を指定できます。

-Djava.library.path=C:\Microsoft JDBC Driver 6.4 for SQL Server\sqljdbc_<version>\enu\auth\x86

IPv6 アドレスによる接続

JDBC ドライバーでは、接続プロパティのコレクション、および serverName 接続文字列プロパティと合わせて IPv6 アドレスを使用できます。 jdbc:sqlserver://serverName など、serverName の初期値は、接続文字列内の IPv6 アドレスをサポートしていません。 あらゆる接続で、そのままの IPv6 アドレスの代わりに serverName の名前を使用できます。 詳細を次の例に示します。

serverName プロパティを使用するには:

jdbc:sqlserver://;serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1;integratedSecurity=true;

プロパティのコレクションを使用するには:

Properties pro = new Properties();

pro.setProperty("serverName", "serverName=3ffe:8311:eeee:f70f:0:5eae:10.203.31.9\\instance1");

Connection con = DriverManager.getConnection("jdbc:sqlserver://;integratedSecurity=true;", pro);

関連項目

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