2016-03-30 192 views
2

不同的域上的SQL Server在Windows中,我只能連接到SQL Server上的不同的域如下:連接到使用SQL Server Management Studio中(SSMS)通過JDBC

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

哪有我通過JDBC完成了這個連接?我一直在使用微軟的sqljdbc 4.2驅動程序下面的連接字符串嘗試:

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

我收到以下錯誤:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'differentDomainName\aUserName'

這是我收到如果我開始了同樣的錯誤SSMS不使用runas並在SSMS 2012的「連接到服務器」對話框中鍵入不同的DomainName \ aUserName作爲登錄名。

附加信息:J DBC連接將在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 : Unable to create initial connections of pool. 通過 java.sql.SQLException: I/O Error: DB server closed connection.

許可信息如下:我無法修改SQL Server計算機上的任何內容包括SQL Server中的任何配置。 「aUserName」帳戶映射到SQL Server只讀Windows身份驗證用戶。

+0

前段時間我做了類似於jTDS的[這個答案](http://stackoverflow.com/a/26465897/2144390)。也許它可能會給你一些想法來嘗試其他事情。 –

+0

謝謝。我無法修改SQL Server計算機上的任何內容,包括SQL Server中的任何配置。用戶被設置爲只讀用戶。我嘗試使用您提供的代碼片段(替換爲我的環境的IP地址,用戶名和密碼),仍然收到OP中記錄的相同SQL異常。 – James

+0

請參閱此[SO帖子](http:// stackoverflow。com/questions/14945075/receiving-sqlexception-login-failed-for-user-connecting-to-sql-server-2008)描述Windows身份驗證以及所需的.jar/.dll文件。另外,考慮傳遞用戶名和密碼作爲參數(不在連接字符串中):'DriverManager.getConnection(connectionStr,user,password)'。 – Parfait

回答

0

當您使用MS JDBC驅動程序連接時,不會爲用戶指定密碼(至少不在您提供的連接字符串中)。如果你的目的是使用集成的安全性,應在連接字符串中指出這一點,但你進程已經

集成安全& JDBC來已經被認證爲differentDomainName \ aUserName: https://msdn.microsoft.com/en-us/library/ms378428%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396#Connectingintegrated

因爲你的計劃要從Linux訪問SQL服務器,我懷疑你可以爲該場景進行集成安全性工作,所以你應該計劃在連接字符串中提供密碼。我不確定您是否可以在連接字符串中爲域用戶提供用戶名/密碼(我認爲您可以),但是如果您切換到具有SQL server auth的用戶,它肯定會起作用。這應該是一個回退選項,因爲SQL server auth的安全性較低。

+0

你是對的,我試圖從Linux進行身份驗證。因此,我不想使用集成安全性。我將需要按照您的建議提供密碼。我用jTDS和MS驅動程序做過,但是作爲參數。我已經更新了OP來表明這一點。我知道SQL服務器身份驗證會起作用,但我沒有這個選項。 – James

相關問題