sql-server - 通过 JDBC 连接到不同域上的 SQL Server

标签 sql-server jdbc network-programming

在使用 SQL Server Management Studio (SSMS) 的 Windows 中,我只能连接到不同域上的 SQL Server,如下所示:

C:\> runas/netonly/user:differentDomainName\aUserName "C:\Program Files (x86 )\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe -S anIpAddress"

如何通过 JDBC 完成此连接?我尝试将以下连接字符串与 Microsoft 的 sqljdbc 4.2 驱动程序一起使用:

jdbc:sqlserver://anIpAddress:1433;database=MAIN;user=differentDomainName\\aUserName;password=pass

我收到以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'differentDomainName\aUserName' 登录失败

这与我在未使用 runas 的情况下启动 SSMS 并在 SSMS 2012 的“连接到服务器”对话框中键入 differentDomainName\aUserName 作为登录名时收到的错误相同。

附加信息:JDBC 连接将在 Linux 上运行的应用程序中建立。因此,不幸的是,使用 runas 运行应用程序不是一种选择。

另一个尝试: 我还尝试将 jTDS 1.3.1 与以下连接字符串一起使用:

jdbc:jtds:sqlserver://anIpAddress:1433;databaseName=MAIN;domain=differentDomainName;user=aUserName;password=pass

因为 aUserName 仅用于 Windows 身份验证。不幸的是,这会产生以下异常:

o.a.tomcat.jdbc.pool.ConnectionPool:无法创建池的初始连接。 其次是 java.sql.SQLException:I/O 错误:数据库服务器关闭连接。

权限信息:我无法修改 SQL Server 计算机上的任何内容,包括 SQL Server 中的任何配置。 “aUserName”帐户映射到 SQL Server 只读 Windows 身份验证用户。

最佳答案

当您使用 MS JDBC 驱动程序连接时,您没有为用户指定密码(至少没有在您提供的连接字符串中指定)。如果您打算使用集成安全性,您应该在连接字符串中指出这一点,但是您的进程必须已经针对不同的 DomainName\aUserName 进行身份验证

集成安全性和 JDBC: https://msdn.microsoft.com/en-us/library/ms378428%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396#Connectingintegrated

由于您的计划是从 linux 访问 SQL 服务器,我怀疑您能否为该场景进行集成安全性工作,因此您应该计划在连接字符串中提供密码。我不确定您是否可以在连接字符串中为域用户提供用户名/密码(我认为可以),但是如果您切换到具有 SQL Server 身份验证的用户,它肯定会起作用。这应该是一个后备选项,因为 SQL Server 身份验证不太安全。

关于sql-server - 通过 JDBC 连接到不同域上的 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36317203/

相关文章:

windows - 什么是 SO_SNDBUF 和 SO_RCVBUF

sql-server - 为什么我的单字符全文搜索不起作用?

sql - 批量插入、SQL Server 2000、unix 换行符

java - 即使连接成功后,org.apache.derby.client.net.NetConnection40 也无法转换为 com.mysql.jdbc.Connection 错误?

java - 如何找到 Oracle 数据库的 URL?

java - 使用Java的PreparedStatement将数组传递给SQL查询

c++ - 我可以从不同的线程调用 socket send() 吗?

sql - SQL Server 中的 SQL 查询的长度是否有限制?

sql - 将查询转换为 View 或表值函数

java - 如何使用 SSLv2 初始化 ssl 连接