Używam SQL Server LocalDB dla strony internetowej.Jak uruchomić SQL Server LocalDB przez IIS
SQL Server LocalDB jest zainstalowany, a baza danych jest tworzona podczas instalacji. Współużytkowane wystąpienie jest tworzone za pomocą LocalDBCreateInstance, StartLocalDBInstance i LocalDBShareInstance.
Witryna może pomyślnie połączyć się z bazą danych, jeśli wystąpienie jest uruchomione.
Jeśli jednak instancja zostanie zatrzymana, nie zostanie uruchomiona automatycznie. Dostęp do bazy danych (gdy instancja jest zatrzymana) z aplikacji konsoli powoduje uruchomienie instancji.
Wygląda na to, że to jakiś problem z pozwoleniem.
Pula aplikacji działa pod tożsamością AppPool. Przełączenie go na usługę sieciową lub system lokalny nie rozwiązuje jednak problemu.
Pula aplikacji jest skonfigurowana do ładowania jej profilu użytkownika, a atrybut "setProfileEnvironment" ma również wartość true. (Oba ustawienia są wymagane zgodnie z opisem here i here).
Monitorowałem dostęp do bazy danych za pomocą Sysinternal Process Monitor, ale nie znaleziono żadnych wpisów "Odmowa dostępu".
Próbowałem również zadzwonić pod numer StartLocalDBInstance z samej witryny (w pliku Global.asax). Połączenie powraca pomyślnie (wartość zwracana to S_OK), ale instancja jest nadal zatrzymana.
Jak niefortunne. –
Uruchomiłem [małe narzędzie w CodePlex] (http://localdbcompanion.codeplex.com/), aby uprościć udostępnianie i uruchamianie automatycznej instancji (zwanej "v11.0") z domyślną pulą aplikacji. Konieczne będzie rozszerzenie na niestandardowe nazwy instancji i inne pule aplikacji. Polecam go tylko w środowisku programistycznym :-) –
Dziwne. Jeśli możesz ustawić "Załaduj profil użytkownika" w IIS na true, to powinno działać. Ponadto, myślałem, że Express był dość przestarzały na rzecz LocalDB ... – dudeNumber4