- - PR -
SQL Server 2000に接続失敗
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-03-05 13:53
こんにちは
症状: SQL Server2000に接続エラー 稼働環境: SQL Server 2000 の Development Edition(Japanese January 2001) OS: Win 2000 5.00.2159 Service Pack1 (Win 2000 サーバーではありません) WEBサーバー:TOMCAT4.0 SQL Server 2000 とTOMCAT4.0は 同一PC(IKAWABE)上インストールして利用しています。 CODE(Javabeans): <************************************ url = "jdbc:microsoft:sqlserver://IKAWABE:1433/Northwind"; user = "cat"; password = "tom"; connection = DriverManager.getConnection(url, user, password); *************************************> ERORR: <************************************ HTTP Status 500 - Internal Server Error type Exception report message Internal Server Error description The server encountered an internal error (Internal Server Error) that prevented it from fulfilling this request. exception javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver]Unable to connect.Invalid URL. at org.apache.jasper.runtime.PageContextImpl.handlePageException(Unknown Source) at org.apache.jsp.input$jsp._jspService(input$jsp.java:137) *************************************> ご存知の方助けていただけませんか。 宜しくお願いします | ||||
|
投稿日時: 2002-03-05 14:54
追伸:
JDBCはMicrosoftのType4です(↓)。 mssqlserver.jar msbase.jar msutil.jar 宜しくお願いします | ||||
|
投稿日時: 2002-03-05 15:00
> url = "jdbc:microsoft:sqlserver://IKAWABE:1433/Northwind";
ではいかがでしょう。 | ||||
|
投稿日時: 2002-03-05 15:34
NothingBut.NETFXさん すごーい! > url = "jdbc:microsoft:sqlserver://IKAWABE:1433;DatabaseName=Northwind"; >ではいかがでしょう。 効いてます! ありがとうございます。 今のCODE: <******************************* url = "jdbc:microsoft:sqlserver://IKAWABE:1433;DatabaseName=Northwind"; user = "cat"; password = "tom"; // catの所属のloginアカウンタのpasswordを継承使用 connection = DriverManager.getConnection(url, user, password); ********************************> 後一歩のところに来ています。 今度の ERORR: <************************************* javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver][SQLServer]ユーザー 'JobAdminApp' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。 **************************************> TCP/IPで同じPC上のMS SQL Server 2000に接続(MS SQL Server 2000 Driver For JDBC Type4 )しようとしているので、 そもそも"信頼関係接続"(Windows 認証)なんて選択していない(SQL Server認証にした)のに 何でこなエラーが出るのでしょうか。 またよろしくお願いします。 | ||||
|
投稿日時: 2002-03-05 16:31
訂正:
ERORR: <************************************* javax.servlet.ServletException: [Microsoft][SQLServer JDBC Driver][SQLServer]ユーザー 'cat' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。 **************************************> | ||||
|
投稿日時: 2002-03-05 18:59
SQL Serverのセキュリティ設定(認証モード)は、混合モードになっていますか?デフォルトではWindows認証が選択されますが?
| ||||
|
投稿日時: 2002-03-06 16:58
お疲れ様です。
私も疲れました。 皆さんのお陰で"一応" MS JDBC(Type4)でMS SQL Server 2000への接続は 成功しました! 特にサンプルコードまで作って下さった方に厚くお礼を申し上げたいです。 ********************************** 1.認証の選択操作が不十分だった。 ********************************** Windows認証か、SQLServer認証かの選択は まず一番目の認証設定 「SQL Server Enterprise Manager」にて、 DBMSレベルのセキュリティフォルダ下の「ログイン」を開いて その中に自分が追加したログイン・アカウンタのインスタンス名を右クリックして、 プロパティの[全般]タブで 認証の選択のところに"SQL Server認証"にチェックを付けること。 ここでログイン・アカウンタインスタンスのpasswordの設定も行う。 (これは私はやりました) 続いて二番目の認証選択の設定も必要! 今度は「SQL Server Enterprise Manager」の「ツール」メニューを開いて、 「SQL Server環境プロパティー」に行き、[セキュリティ]タグで 「認証:」の所に ”混合モード認証”にチェックを入れる(デフォルトは”Windows 認証”に要注意) これがヤラナカッタ! ロジックからすれば、二番の設定は一番名の設定の前提条件となるような感じですね。 即ちよりハイレベル(MS SQL Server 2000 全般)”混合モード認証”でなければ、 特定のログイン・アカウンタのインスタンスに対して "SQL Server認証"をチェックを付けても効かないはず。 (だとすれば、デフォルトでSQL Server 2000 全般において ”Windows 認証”となっている以上、何で一番目の設定のところに "SQL Server認証"を選択できるのだろう?!) ここで私は罠にかかった。 ********************************** 2.もう一つの罠----URLの形式問題 ********************************** 接続メソッドに関して MS SQL Server 2000 Driver for JDBC の中に二つ形式の文が有りました: 1) DriverManager.getConnection("jdbc:microsoft:sqlserver://server1:1433","username","secret"); 2) Connection conn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://server1:1433;User=test;Password=secret"); どっちでもいいかなと思い込んだが、1)は使えなかった。 ************************************************** 3.もっと巧みな罠------URL引数中のUserとは何か? ************************************************** getConnectionの中のDBName引数と並んでいるのだから、 「SQL Server Enterprise Manager」において、 設定しているDBのユーザーであるのは当然だと思い込んでいた。 これも間違った! これはDBレベルの”ユーザー”ではなくて ”SQL Server グループ”レベルの[セキュリティ]の”ログイン”のインスタンス名だ!! ======================= ということで 皆さんに報告いたします。 (これからは本格な戦いだ。このSQL Server と! 味方にしてください) | ||||
1
