在提出问题之前,让我先介绍一些背景知识。我在一家主要运行 Windows 的商店。我们有几个批处理应用程序在 Windows 服务器上运行(主要是 2003 年)。大多数批处理应用程序都是用 C# 和 C++ 编写的;然而,我们有一些用 Java 编写的应用程序。
批处理 Java 应用程序使用 JDBC 连接到 SQL Server 2005 数据库。请注意,我们不使用应用程序服务器。
目前,我们将数据库连接信息(数据库、用户名和密码)存储在 Windows 注册表中。
不幸的是,这些非常不友好的审计员(幽默的糟糕尝试)对我们将数据库连接信息存储在 Windows 注册表中的决定不满意。
我们现在正在更新批处理应用程序以使用 Windows 身份验证连接到 SQL Server。
对 C# 和 C++ 应用程序使用 Windows 身份验证不是问题;然而,我一直坚持 Java 应用程序的发展方向。
谁能建议是否可以使用 Windows 身份验证从 Windows 服务器上运行的 Java 批处理应用程序连接到 SQL Server 2005 数据库?同样,我们没有使用应用程序服务器。
如果可能的话,您推荐的方法是什么?
我有一个简单地加密密码的策略,这将使审核员满意,但我更希望所有批处理应用程序通过 Windows 身份验证连接到 SQL Server。
您可以使用 Windows 身份验证从 Java 程序连接到 SQL Server,如下所示:
- 为将用于运行程序的应用程序创建一个 Windows 帐户。该帐户的凭据将用于连接到服务器。
- 从以下位置获取适用于 SQL Server 的 Microsoft JDBC 驱动程序.
-
配置 JDBC URL 如下:
jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
-
配置从命令行运行 Java 程序的启动器以包含以下 JVM 参数:
-Djava.library.path="<jdbc driver dll 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 身份验证凭据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)