2016-03-30 3 views
2

を経由して別のドメイン上のSQL Serverに接続し、私は別のドメイン上のSQL Serverに接続することができます次のようにSQL Server Management Studioを(SSMS)を使用してWindowsからJDBC

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: Login failed for user 'differentDomainName\aUserName'

これは私が開始する場合、私が受け取る同じエラーですSSMS 2012の「サーバーに接続」ダイアログボックスで、runasを使用せずに別のドメイン名\ aUserNameを入力します。

追加情報:The J Linux上で動作するアプリケーション内でDBC接続が確立されます。したがって、runasを使用してアプリケーションを実行することは、残念なことにオプションではありません。

別の試み: 私も次の接続文字列でのjTDS 1.3.1を使用しようとしました:aUserNameは、Windows認証のみのために設定されているので

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

。残念ながら、これは次の例外を生成します。

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

私は以前、[この回答](http://stackoverflow.com/a/26465897/2144390)のjTDSと同様のことをしました。おそらく、それはあなたに他のものを試すためのいくつかのアイデアを与えるかもしれません。 –

+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ドライバを使用して接続する場合は、ユーザーのパスワードを指定しないでください(少なくとも、指定した接続文字列には含まれません)。あなたの意図は、統合セキュリティを使用していた場合は、接続文字列でこれを示すべきであるが、その後、あなたが処理differentDomainName \ aUserNameのためにすでに認証される必要があり

統合セキュリティ& JDBC: https://msdn.microsoft.com/en-us/library/ms378428%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396#Connectingintegrated

あなたの計画があるので、 LinuxからSQLサーバーにアクセスするには、そのシナリオで統合セキュリティーを行うことはできないと思うので、接続文字列にパスワードを入力することを計画する必要があります。接続文字列でドメインユーザーのユーザー名とパスワードを提供できるかどうかはわかりませんが、SQLサーバーの認証情報を持つユーザーに切り替えると、確実に機能します。これは、SQLサーバーの認証があまり安全でないため、フォールバックオプションにする必要があります。

+0

私はLinuxから認証しようとしているという点で正しいです。したがって、私は統合セキュリティを使用したくありません。私はあなたが示唆したようにパスワードを提供する必要があります。私はjTDSを使って、またMSドライバを使って、しかしparamとしてそれをしました。私はそれを示すためにOPを更新しました。私はSQLサーバー認証が機能することを知っていますが、私はそのオプションを持っていません。 – James

関連する問題