使用 Windows 身份验证将我的 Sql Server 2008 数据库连接到我的 Java 项目

Posted

技术标签:

【中文标题】使用 Windows 身份验证将我的 Sql Server 2008 数据库连接到我的 Java 项目【英文标题】:Connect my Sql Server 2008 database to my Java Project with Windows Authentication 【发布时间】:2013-06-28 09:40:34 【问题描述】:

我有以下问题:我无法将我的 Sql Server 数据库连接到我的 Java 项目。我的数据库是 SQL Server 2008 R2。并具有 Windows 身份验证模式。 我使用了以下代码行,但仍然是同样的问题。

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

如果数据库用户有密码,我必须与下面这行代码集成?

"jdbc: `sqlserver :/ / localhost; integratedSecurity = true; = user, password =;"

如果我不能使用 Windows 身份验证进行身份验证,我必须使用相同的数据创建第二个数据库,唯一的区别是使用 Sql Server 身份验证而不是 Windows 身份验证。

【问题讨论】:

您是否检查了documentation 中有关集成安全性的部分?您必须指出java.library.path 指向您拥有sqljdbc_auth.dll 的位置。 你能用sql认证连接吗?如果是这样,您是否检查了您的 windows id 是否已添加到 sqlserver 登录名中。你也可以在这里发布你遇到的错误吗 我可以使用 Sql 身份验证,使用用户名和密码进行连接,但是当我更改 Windows 身份验证时(以我在问题中插入的第一行代码为例)。 11:16:16,734 警告 [com.microsoft.sqlserver.jdbc.internals.AuthenticationJNI] (http--0.0.0.0-8999-6) 无法加载 sqljdbc_auth.dll 原因:- java.library.path 中没有 sqljdbc_auth 11:16:31,508 错误 [stderr] (http--0.0.0.0-8999-6) com.microsoft.sqlserver.jdbc.SQLServerException: 此驱动程序未配置为集成身份验证. 【参考方案1】:

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

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

对于 Microsoft JDBC Driver for SQL Server 支持的任何操作系统,请参阅使用 Kerberos 集成身份验证连接到 SQL Server,以了解 Microsoft JDBC Driver 4.0 for SQL Server 中添加的允许应用程序连接到使用 Type 4 Kerberos 的集成身份验证的数据库。

注意: 如果您运行的是 32 位 Java 虚拟机 (JVM),请使用 x86 文件夹中的 sqljdbc_auth.dll 文件,即使操作系统是 x64 版本。如果您在 x64 处理器上运行 64 位 JVM,请使用 x64 文件夹中的 sqljdbc_auth.dll 文件。 或者,您可以设置 java.libary.path 系统属性以指定 sqljdbc_auth.dll 的目录。

例如,如果 JDBC 驱动程序安装在默认目录中,则可以在启动 Java 应用程序时使用以下虚拟机 (VM) 参数指定 DLL 的位置: -Djava.library.path=C:\Microsoft JDBC Driver 4.0 for SQL

Server\sqljdbc_&lt;version&gt;\enu\auth\x86

http://msdn.microsoft.com/en-us/library/ms378428.aspx

【讨论】:

【参考方案2】:

您收到的错误表明问题出在 JDBC 驱动程序上,而不是数据库或应用程序代码上。

根据 Microsoft 论坛,该问题已在 1.2 版驱动程序中得到修复。请尝试下载此版本,因为它应该可以解决您的问题。

最新版本可以在http://www.microsoft.com/en-in/download/details.aspx?id=11774找到

参考:http://www.microsoft.com/en-in/download/details.aspx?id=11774

【讨论】:

如果将 sqljdbc4.jar 放入 Eclipse 的项目库中以解决我的问题,或者我必须将 sqljdbc4.exe 安装到 SQL Server 2008 年?

以上是关于使用 Windows 身份验证将我的 Sql Server 2008 数据库连接到我的 Java 项目的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server2005 windows身份验证无法登陆问题

可以使用“SQL Server 身份验证”登录另一个 Windows 帐户吗?

使用 Windows 身份验证远程访问的 Visual Basic Sql 连接字符串

Windows 身份验证不适用于 SQL Server

我如何在 SQL SERVER 2008 中使用 Active Directory 用户进行身份验证但没有 Windows 身份验证

SQL server2000 windows身份验证失败怎么办