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

问题描述 投票:4回答:2

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

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

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

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

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

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

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

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

java sql-server windows jdbc windows-authentication
2个回答
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。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.