2012-12-07 23 views
5

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.

Odpowiedz

6

Jest to wada korzystania z LocalDB w IIS - instancja jest własnością interaktywnego logowania, a proces instancji może zostać uruchomiony tylko przez ten login. Ponieważ usługi IIS działają jako niektóre konta usługi, nie można uruchomić instancji LocalDB, która należy do interaktywnego konta logowania.

Możesz użyć instancji LocalDB posiadanej przez konto usługi IIS, ale pamiętaj, że możesz napotkać problemy z profilem użytkownika - LocalDB wymaga utworzenia i załadowania profilu użytkownika, podczas gdy IIS używa lekkich profili użytkowników, które czasami mogą nie być w pełni utworzone i załadowane.

Zobacz te dwa blogi, aby uzyskać bardziej szczegółową dyskusję na temat uruchamiania LocalDB w pełnym IIS. Mogę go tylko polecić dla środowiska programistycznego i korzystać z usług SQL Express do produkcji.

  1. Part 1: User Profile
  2. Part 2: Instance Ownership
+2

Jak niefortunne. –

+0

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 :-) –

+0

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

Powiązane problemy