接続 URL の構築

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

接続 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 でポートおよびその前の : を指定する必要はありません。

    注意

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

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

注意

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

接続のプロパティ

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

接続の例

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

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

注意

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

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

jdbc:sqlserver://;servername=server_name;encrypt=true;integratedSecurity=true;authenticationScheme=JavaKerberos
  • 統合認証を使用して、ローカル コンピューター上の既定のデータベースに接続します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

注意

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

Windows 上で統合認証を使用して接続

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

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

<installation directory>\sqljdbc_<version>\<language>\auth\

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

注意

32 ビットの Java 仮想マシン (JVM) を実行している場合は、オペレーティング システムのバージョンが x64 であっても、x86 フォルダーの mssql-jdbc_auth-<version>-<arch>.dll ファイルを使用してください。 64 ビットの JVM を x64 プロセッサ上で実行している場合は、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;encrypt=true;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://;encrypt=true;integratedSecurity=true;", pro);

関連項目