WebサイトにSQLServerLocalDBを使用しています。
SQL Server LocalDBがインストールされ、セットアップ中にデータベースが作成されます。共有インスタンスは、 LocalDBCreateInstance、StartLocalDBInstance、およびLocalDBShareInstanceを介して作成されます。
インスタンスが開始されている場合、Webサイトはデータベースに正常に接続できます。
ただし、インスタンスが停止した場合、インスタンスは自動的に開始されません。コンソールアプリケーションからデータベースにアクセスすると(インスタンスが停止している場合)、インスタンスが起動します。
したがって、これはある種の許可の問題のようです。
アプリケーションプールは、AppPoolIDで実行されます。ただし、ネットワークサービスまたはローカルシステムに切り替えても問題は解決しません。
アプリケーションプールは、そのユーザープロファイルをロードするように構成されており、「setProfileEnvironment」属性もtrueに設定されています。(こことここで説明されているように、両方の設定が必要です)。
Sysinternal Process Monitorを使用してデータベースアクセスを監視しましたが、「アクセスが拒否されました」エントリが見つかりませんでした。
また、Webサイト自体(Global.asax内)からStartLocalDBInstanceを呼び出そうとしました。呼び出しは正常に戻りますが(戻り値はS_OK)、インスタンスは引き続き停止します。