4

在我问问题之前,让我先介绍一下背景。我在一家主要运行 Windows 的商店。我们有几个在 Windows Server 上运行的批处理应用程序(主要是 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。

4

2 回答 2

7

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

  1. 为将用于运行程序的应用程序创建一个 Windows 帐户。此帐户的凭据将用于连接到服务器。
  2. 从这里获取 Microsoft JDBC Driver for SQL Server 。
  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 身份验证凭据。

于 2012-09-20T19:22:03.327 回答
0

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

于 2012-09-22T08:12:52.373 回答