SQL Serverエラーログファイルで、次の行を見つけました。
2018-02-22 14:10:58.95 spid17s Starting up database 'msdb'.
2018-02-22 14:10:58.95 spid16s Starting up database 'ReportServer'.
2018-02-22 14:10:58.95 spid18s Starting up database 'ReportServerTempDB'.
2018-02-22 14:10:58.95 spid19s Starting up database 'XYZ'.
この時間より前にデータベースXYZのステータスを確認するとONLINE
、次のステートメントが使用されています。
SELECT state_desc FROM sys.databases WHERE name='XYZ'
...しかし、C#アプリケーションを使用してこのデータベースに接続しようとすると、データベースに接続できません。
エラーは:
ユーザー「asd」のログインに失敗しました。
理由:明示的に指定されたデータベースを開くことができませんでした。
3つの異なるユーザー(Windowsユーザー、sa、アプリケーションに定義されたSQL Serverユーザー)を試しました。OSの起動時にアプリケーションを実行すると問題が発生しますが、起動後に手動で起動してもエラーは発生しないため、SQL Serverの設定とファイアウォールの設定はすべて正しいと思います。
この前に、サービスステータスが実行されていることも確認しました。
データベースが実際にオンラインでクエリの準備ができていることを確認するために、他に何をチェックする必要がありますか?
時間を遅らせるのではなく、データベースにクエリを実行しても問題ないことを示すキーを探しています(明確な理由に基づいていなくても)。
エラーログをスキャンして "Starting up database 'XYZ'"というテキストを検索することを考えましたが、これは、SQL Serverエラーログのパスのアプリケーションの設定を追加する必要があることを意味します。これは、このフレーズが見つかるまで何度もファイルを読み取ることを意味します。