接続 URL の構築

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

Caution note注意 :

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

接続の例

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

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

Noteメモ:

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

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

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

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

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 ドライバでは、エスケープする文字を中かっこで囲みます。 たとえば、{;} とするとセミコロンがエスケープされます。

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

Noteメモ:

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

統合認証を使用した接続

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

sqljdbc_auth.dll ファイルは次の場所にインストールされています。

<インストール ディレクトリ>\sqljdbc_<バージョン>\<言語>\auth\

Noteメモ:

32 ビットの Java 仮想マシン (JVM) を実行している場合は、オペレーティング システムのバージョンが x64 であっても、x86 フォルダの sqljdbc_auth.dll ファイルを使用してください。 64 ビットの JVM を x64 プロセッサ上で実行している場合は、x64 フォルダの sqljdbc_auth.dll ファイルを使用してください。 64 ビットの JVM を IA-64 プロセッサ上で実行している場合は、IA64 フォルダの sqljdbc_auth.dll ファイルを使用してください。

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

-Djava.library.path=C:\Microsoft SQL Server 2005 JDBC Driver\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);

参照

表示: