创建连接 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 中指定端口及其前面的“:”。

    备注

    若要获得最佳连接性能,应在连接到指定实例时设置 portNumber。这将避免为了确定端口号而与服务器进行往返通讯。如果同时使用 portNumber 和 instanceName,则会优先使用 portNumber,而忽略 instanceName。

  • property(可选)是一个或多个选项连接属性。有关详细信息,请参阅设置连接属性。可指定该列表中的任何属性。属性只能用分号(“;”)分隔,且不允许重复。

警告

出于安全考虑,应避免根据用户输入的内容创建连接 URL。只应在 URL 中指定服务器名称和驱动程序。对于用户名和密码值,请使用连接属性集。有关 JDBC 应用程序中安全性的详细信息,请参阅保护 JDBC Driver 应用程序

连接实例

使用用户名和密码连接到本地计算机上的默认数据库:

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

备注

尽管以上实例在连接字符串中使用了用户名和密码,但如果在 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 驱动程序将支持对其进行转义。例如,{;} 将转义分号。

转义的值可以包含特殊字符(特别是“=”、“;”、“[]”和空格),但不能包含大括号。应将必须进行转义且包含大括号的值添加到属性集中。

备注

大括号内的空白为原义字符,不能删除。

通过集成身份验证进行连接

JDBC 驱动程序支持通过 integratedSecurity 连接字符串属性在 Windows 操作系统上使用“类型 2”集成身份验证。若要使用集成身份验证,请将 sqljdbc_auth.dll 文件复制计算机中 Windows 系统路径下的 JDBC 驱动程序安装目录中。

sqljdbc_auth.dll 文件的安装位置如下:

<安装目录>\sqljdbc_<版本>\<语言>\auth\

备注

如果您运行 32 位的 Java 虚拟机 (JVM),则使用 x86 文件夹中的 sqljdbc_auth.dll 文件,即使操作系统是 x64 版本也不例外。如果您在 x64 处理器上运行 64 位 JVM,则使用 x64 文件夹中的 sqljdbc_auth.dll 文件。如果您在 IA-64 处理器上运行 64 位 JVM,则使用 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 地址。连接字符串不支持在 IPv6 地址中使用初始 serverName 值,如 jdbc:sqlserver://serverName。使用 serverName 的名称而不是原始 IPv6 地址将适用于连接中的所有情况。以下实例提供了详细信息。

使用 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