在我提出问题之前,让我先介绍一下背景。我在一家主要经营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。
您可以使用Windows身份验证从Java程序连接到SQL Server,如下所示:
jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
-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身份验证凭据。
第一步是设置ODBC,你可以转到控制面板 - >管理工具 - > ODBC。在向导设置后使用Windows身份验证帐户添加新的DSN以连接MS SQL Server。第二步与使用SQL Server身份验证帐户相同。但唯一的变化是连接字符串更改为:jdbc:odbc:dsn-name。不再需要使用用户名/密码,因为它已经连接到服务器。