运行在Windows Server上的Java应用程序是否可以通过Windows身份验证连接到SQL Server

时间:2012-09-18 15:54:09

标签: java sql-server windows jdbc windows-authentication

在我提出问题之前,请先给我一些背景知识。我在一家主要经营Windows的商店。我们在Windows服务器上运行了几个批处理应用程序(主要是2003)。大多数批处理应用程序都是用C#和C ++编写的;但是我们有一些用Java编写的应用程序。

批处理Java应用程序使用JDBC连接到SQL Server 2005数据库。请注意我们没有使用应用程序服务器。

目前,我们在Windows注册表中存储数据库连接信息(数据库,用户名和密码)。

不幸的是,这些真正不友好的审核员(对幽默的不良尝试)对于我们对在Windows注册表中存储数据库连接信息的决定感到不满意。 我们现在正在使用Windows Authentatication更新我们的批处理应用程序以连接到SQL Server。

对C#和C ++应用程序使用Windows身份验证不是问题;但是我坚持要求Java应用程序。

有人可以建议是否可以使用Windows Authentatication从Windows服务器上运行的Java批处理应用程序连接到SQL Server 2005数据库?我们再次使用的是应用服务器。

如果可能,您推荐的方法是什么?

我有一个简单的加密密码的策略,这将使审核员满意,但我更希望让我的所有批处理应用程序通过Windows Authentatication连接到SQL Server。

2 个答案:

答案 0 :(得分:7)

您可以使用Windows身份验证从Java程序连接到SQL Server,如下所示:

  1. 为将用于运行程序的应用程序创建一个Windows帐户。此帐户的凭据将用于连接服务器。
  2. here获取SQL Server的Microsoft JDBC驱动程序。
  3. 按如下方式配置JDBC URL:

    jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
    
  4. 从命令行配置运行Java程序的启动程序,以包含以下JVM参数:

    -Djava.library.path="<jdbc driver dll location>"
    

    其中location是安装或提取先前下载的JDBC驱动程序的目录。我的情况是C:\Program Files\sqljdbc_4.0.2206.100_enu\sqljdbc_4.0\enu\auth\x64。正如Luke Woodward在评论中提到的那样,应该根据用于运行这些程序的JVM选择dll。

  5. 使用上述配置,建立到SQL Server的连接将使用运行java程序/进程的域用户的Windows身份验证凭据。

答案 1 :(得分:0)

第一步是设置ODBC,你可以去控制面板 - &gt;管理工具 - &gt; ODBC。在向导设置后使用Windows身份验证帐户添加新的DSN以连接MS SQL Server。 第二步与使用SQL Server身份验证帐户相同。但唯一的变化是连接字符串更改为:jdbc:odbc:dsn-name。不再需要使用用户名/密码,因为它已经连接到服务器。