Comment démarrer un SQL Server LocalDB via IIS

J'utilise SQL Server LocalDB pour un site Web.

SQL Server LocalDB est installé et une database est créée au cours de l'installation. Une instance partagée est créée via LocalDBCreateInstance , StartLocalDBInstance et LocalDBShareInstance .

Le site Web peut se connecter avec succès à la database si l'instance est démarrée.

Toutefois, si l'instance est arrêtée, elle n'est pas automatiquement démarrée. L'access à la database (lorsque l'instance est arrêtée) à partir d'une application de console provoque le démarrage de l'instance.

Donc, cela semble être une sorte de problème d'autorisation.

Le pool d'applications s'exécute sous l'identité AppPool. Le passage au service réseau ou au système local ne résout cependant pas le problème.

Le pool d'applications est configuré pour charger son profil user et l'atsortingbut "setProfileEnvironment" est également défini sur true. (Les deux parameters sont requirejs comme décrit ici et ici ).

J'ai surveillé l'access à la database avec le Sysinternal Process Monitor, mais je n'ai trouvé aucune input "Accès refusé".

J'ai également essayé d'appeler StartLocalDBInstance à partir du site Web lui-même (dans Global.asax). L'appel returnne avec succès (la valeur de return est S_OK), mais l'instance est toujours arrêtée.

C'est l'inconvénient d'utiliser LocalDB sous IIS – l'instance est la propriété de votre login interactif, et le process d'instance ne peut être démarré que par ce login. Comme IIS s'exécute en tant que count de service, il ne peut pas démarrer l'instance LocalDB appartenant à votre count de connection interactive.

Vous pouvez utiliser une instance LocalDB appartenant au count de service IIS, mais sachez que vous risquez de rencontrer des problèmes de profil user. LocalDB requirejs la création et le chargement du profil user, tandis que IIS utilise des profils user légers qui peuvent parfois ne pas être entièrement créés et chargés .

Consultez ces deux articles de blog pour une discussion plus détaillée sur l'exécution de LocalDB dans IIS complet. Je le recommand uniquement pour l'environnement de développement et utilise SQL Express basé sur le service pour la production.

  1. Partie 1: Profil de l'user
  2. Partie 2: Propriété de l'instance