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 属性或 datasource 属性 。 如果未指定实例名属性或端口号属性,则会创建与默认实例的连接。 请看以下示例:
若要指定端口号,请使用以下格式:
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”集成身份验证。 若要使用集成身份验证,请将 mssql-jdbc_auth-<version>-<arch>.dll 文件复制到计算机中 Windows 系统路径下的 JDBC 驱动程序安装目录中。
mssql-jdbc_auth-<version>-<arch>.dll 文件的安装位置如下:
<安装目录>\sqljdbc_<版本>\<语言>\auth\
有关 Microsoft JDBC Driver for SQL Server 支持的任何操作系统,请参阅使用 Kerberos 集成身份验证连接到 SQL Server 以了解 {1}Microsoft JDBC Driver 4.0 for SQL Server{2} 中新增的一个功能,该功能允许应用程序使用集成身份验证和类型 4 Kerberos 来连接数据库。
如果运行的是 32 位的 Java 虚拟机 (JVM),则使用 x86 文件夹中的 mssql-jdbc_auth-<version>-<arch>.dll 文件,即使操作系统是 x64 版本也不例外。 如果在 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 驱动程序支持结合使用 IPv6 地址以及连接属性集合和 serverName 连接字符串属性。 连接字符串不支持在 IPv6 地址中使用初始 serverName 值,如 jdbc:sqlserver://serverName 。 使用 serverName 的名称而不是原始 IPv6 地址将适用于连接中的所有情况 。 以下实例提供了详细信息。
使用 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);
通过 JDBC 驱动程序连接到 SQL Server