可以在窗口上运行Java应用程序';s服务器通过Windows身份验证连接到SQL Server
在我提问之前,让我先介绍一下背景。我在一家主要经营Windows的商店。我们有几个批处理应用程序在Windows服务器上运行(主要是2003年)。这些批处理应用程序大多是用C语言和C++编写的;然而,我们有一些应用程序是用Java编写的 批处理Java应用程序正在使用JDBC连接到SQLServer2005数据库。请注意,我们没有使用应用服务器 目前,我们在Windows注册表中存储数据库连接信息(数据库、用户名和密码) 不幸的是,这些非常不友好的审计员(拙劣的幽默)对我们在Windows注册表中存储数据库连接信息的决定不满意。 我们现在正在更新批处理应用程序,以便使用Windows身份验证连接到SQL Server可以在窗口上运行Java应用程序';s服务器通过Windows身份验证连接到SQL Server,java,sql-server,windows,jdbc,windows-authentication,Java,Sql Server,Windows,Jdbc,Windows Authentication,在我提问之前,让我先介绍一下背景。我在一家主要经营Windows的商店。我们有几个批处理应用程序在Windows服务器上运行(主要是2003年)。这些批处理应用程序大多是用C语言和C++编写的;然而,我们有一些应用程序是用Java编写的 批处理Java应用程序正在使用JDBC连接到SQLServer2005数据库。请注意,我们没有使用应用服务器 目前,我们在Windows注册表中存储数据库连接信息(数据库、用户名和密码) 不幸的是,这些非常不友好的审计员(拙劣的幽默)对我们在Windows注册表
使用Windows编写C语言和C++应用程序不是问题;然而,我仍然停留在Java应用程序的方向上
是否可以使用Windows身份验证从Windows服务器上运行的Java批处理应用程序连接到SQL Server 2005数据库?同样,我们没有使用应用服务器 如果可能的话,您推荐的方法是什么我有一个简单的加密密码的策略,这将使审计员感到高兴,但是我更喜欢让我的所有批处理应用程序通过Windows身份验证连接到SQL Server 您可以使用windows身份验证从Java程序连接到SQL Server,如下所示:
jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
jdbc:sqlserver://;数据库名=;integratedSecurity=true
-Djava.library.path="<jdbc driver dll location>"
-Djava.library.path=“”
其中位置是安装或提取先前下载的JDBC驱动程序的目录。在我的例子中,它是C:\ProgramFiles\sqljdbc\u 4.0.2206.100\u enu\sqljdbc\u 4.0\enu\auth\x64
。正如卢克·伍德沃德(Luke Woodward)在评论中提到的,应该根据运行这些程序所使用的JVM选择dll使用上述配置,与SQL Server建立的连接将使用运行java程序/进程的域用户的Windows身份验证凭据。第一步是设置ODBC,您可以转到控制面板->管理工具->ODBC。在向导安装后,添加新DSN以使用windows身份验证帐户连接MS SQL Server。
第二步与使用SQL Server身份验证帐户相同。但唯一的更改是连接字符串更改为:jdbc:odbc:dsn name。不再需要使用用户名/密码,因为它已经连接到服务器。必须强调的是,使用的
sqljdbc_auth.dll
版本必须与用于运行应用程序的JVM的体系结构(x86/x64)相匹配,而不必与服务器的体系结构相匹配。如果JVM是32位的,64位DLL将无法在64位系统上工作。手册中对其进行了详细说明: