none
SQLServer2005でタイムアウト RRS feed

  • 質問

  • お世話になります。

    Windows Vista上、SQLServer2005 Express にて、.netアプリケーションから大量件数(20万件以上)の更新処理を
    実施した際、更新途中でエラーとなって処理が完了できません。

    「アプリケーションのログ」
    System.Data.OleDb.OleDbException: このログインで要求されたデータベース "DB" を開けません。ログインに失敗しました。

    また、SQLServerのERRORLOGには、以下の記述があります。
    エラー: 18456、重大度: 14、状態: 16。

    自分なりに調べたところ、長い処理のためにタイムアウトが発生しているようなので、
    コマンドタイムアウト、リモートクエリーのタイムアウト時間など調整してみましたが、
    解決しない状態です。

    どなたか対応方法ご存知の方、ご教示いただけないでしょうか。
    よろしくお願いいたします。
    2008年8月22日 6:46

回答

  •  

    > 自分なりに調べたところ、長い処理のためにタイムアウトが発生しているようなので、
    > コマンドタイムアウト、リモートクエリーのタイムアウト時間など調整してみましたが、
    > 解決しない状態です。

     

    具体的にはどのような設定を行ったのでしょうか?

     

    以前、自分も同様な現象が発生した場合にですが、

    ConnectionTimeoutと、CommandTimeoutを調整して対応した事があります。

     

    もしくは、Express Editionということで、データファイルのサイズの制限に引っかかっている可能性もありますので、

    そちらも確認することをお勧めします。

     

     

    2008年8月22日 9:05
  • 「SQL Server 2005 エラー: 18456 」をキーワードに web 検索すると、たくさんの記事がヒットします。また、Books Online でも、下記のような説明が出てきます。

     

    「無効なパスワードまたはユーザー名を含む認証の失敗によって接続試行が拒否された場合、クライアントには "ユーザー '<user_name>' はログインできませんでした。(Microsoft SQL Server、エラー: 18456)" のようなメッセージが返されます。」

     

    タイムアウトという考えがどこから来たのかちょっとわからなかったのですが、まずはアカウントを調べてみたらいかがでしょうか。

     

    下記の点を試してみてください。

    ・アプリケーションを実行するコンピューターより、sqlcmd -S<server name> -U<アプリケーションで使用するユーザー名> -P<アプリケーションで使用するユーザーのパスワード> を実行して SQL Server 2005 Express に接続できるかどうか。

     

    ・更新処理を 20万件 ではなく、1件だけ試した場合も同様のエラーになるかどうか。

    2008年8月25日 22:23

すべての返信

  •  

    > 自分なりに調べたところ、長い処理のためにタイムアウトが発生しているようなので、
    > コマンドタイムアウト、リモートクエリーのタイムアウト時間など調整してみましたが、
    > 解決しない状態です。

     

    具体的にはどのような設定を行ったのでしょうか?

     

    以前、自分も同様な現象が発生した場合にですが、

    ConnectionTimeoutと、CommandTimeoutを調整して対応した事があります。

     

    もしくは、Express Editionということで、データファイルのサイズの制限に引っかかっている可能性もありますので、

    そちらも確認することをお勧めします。

     

     

    2008年8月22日 9:05
  • 「SQL Server 2005 エラー: 18456 」をキーワードに web 検索すると、たくさんの記事がヒットします。また、Books Online でも、下記のような説明が出てきます。

     

    「無効なパスワードまたはユーザー名を含む認証の失敗によって接続試行が拒否された場合、クライアントには "ユーザー '<user_name>' はログインできませんでした。(Microsoft SQL Server、エラー: 18456)" のようなメッセージが返されます。」

     

    タイムアウトという考えがどこから来たのかちょっとわからなかったのですが、まずはアカウントを調べてみたらいかがでしょうか。

     

    下記の点を試してみてください。

    ・アプリケーションを実行するコンピューターより、sqlcmd -S<server name> -U<アプリケーションで使用するユーザー名> -P<アプリケーションで使用するユーザーのパスワード> を実行して SQL Server 2005 Express に接続できるかどうか。

     

    ・更新処理を 20万件 ではなく、1件だけ試した場合も同様のエラーになるかどうか。

    2008年8月25日 22:23
  • こんにちは。中川俊輔 です。

     

    CatTailさん、blink!さん、回答ありがとうございます。

     

    lagnaさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われたため、CatTailさん、blink!さんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    lagnaさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

    2008年9月9日 8:09