Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在窗口上运行Java应用程序';s服务器通过Windows身份验证连接到SQL Server_Java_Sql Server_Windows_Jdbc_Windows Authentication - Fatal编程技术网

可以在窗口上运行Java应用程序';s服务器通过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的商店。我们有几个批处理应用程序在Windows服务器上运行(主要是2003年)。这些批处理应用程序大多是用C语言和C++编写的;然而,我们有一些应用程序是用Java编写的

批处理Java应用程序正在使用JDBC连接到SQLServer2005数据库。请注意,我们没有使用应用服务器

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

不幸的是,这些非常不友好的审计员(拙劣的幽默)对我们在Windows注册表中存储数据库连接信息的决定不满意。 我们现在正在更新批处理应用程序,以便使用Windows身份验证连接到SQL Server

使用Windows编写C语言和C++应用程序不是问题;然而,我仍然停留在Java应用程序的方向上

是否可以使用Windows身份验证从Windows服务器上运行的Java批处理应用程序连接到SQL Server 2005数据库?同样,我们没有使用应用服务器

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


我有一个简单的加密密码的策略,这将使审计员感到高兴,但是我更喜欢让我的所有批处理应用程序通过Windows身份验证连接到SQL Server

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

jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
  • 为将用于运行程序的应用程序创建windows帐户。此帐户的凭据将用于连接到服务器
  • 从获取用于SQL Server的Microsoft JDBC驱动程序
  • 按如下方式配置JDBC URL:

    jdbc:sqlserver://<hostname>;databaseName=<DBName>;integratedSecurity=true
    
    jdbc:sqlserver://;数据库名=;integratedSecurity=true
    
  • 将从命令行运行Java程序的启动器配置为包含以下JVM参数:

    -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位系统上工作。手册中对其进行了详细说明: