Impossibile generare un'istanza utente di SQL Server


8

Sto usando Windows 7 Beta e sto provando a installare un'applicazione web localmente. Questo sito Web utilizza Microsoft SQL Server 2005 Express (SQLEXPRESS) e un file MDB nella cartella ~ / App_Data del sito Web. Mi è stato chiesto di configurare IIS7 per utilizzare AppPool .NET classico per questa applicazione Web.

Ogni volta che viene caricato il sito Web, viene visualizzato il seguente errore:

Si è verificato un errore durante il tentativo di connessione al server database: impossibile generare un'istanza utente di SQL Server a causa di un errore nel recupero del percorso dati dell'applicazione locale dell'utente. Assicurati che l'utente abbia un profilo utente locale sul computer. La connessione verrà chiusa.

Internet è pieno di articoli scritti su questo argomento. La saggezza prevalente sembra essere:

  1. Configurare il servizio SQL Express per utilizzare l' account di sistema locale .
  2. Eliminare la seguente directory: C: \ Users \ nomeutente \ AppData \ Microsoft \ Microsoft SQL Server Data \ SQLEXPRESS

Nessuna di queste correzioni ha avuto alcun impatto. Ho armeggiato con autorizzazioni e impostazioni per ore senza risultati. Qualcuno può suggerire una correzione o aiutarmi a capire come ottenere informazioni più dettagliate sul problema.


Con quale account di servizio è in esecuzione IIS? Hai provato a creare un account per questo?
Brent Ozar,

Risposte:


13

In IIS in Windows 7, seleziona il pool di applicazioni e quindi "impostazioni avanzate". Sotto "modello di processo" trova "Carica profilo utente" e impostalo su true.

SQL dovrebbe ora caricarsi con l'account del pool di app predefinito.



1

Brian,

Perché tutto ciò abbia un senso, in primo luogo dare un'occhiata all'elenco dei processi per tutti gli utenti su Task Manager.

w3wp.exe è il nuovo processo di lavoro WWW. Viene eseguito in una sandbox di sicurezza utilizzando le autorizzazioni di un utente chiamato DefaultAppPool.

Ai vecchi tempi, anziché l'utente DefaultAppPool, sarebbero stati gli utenti IUSR e IWAM (vedi Cosa sono gli account IUSR e IWAM in IIS? ).

Quando si utilizza un provider di appartenenze SQL, il processo w3wp.exe avvia un'istanza utente di SQL Server e si collega al database specificato nella stringa di connessione, comunemente App_Data / ASPNETdb.mdf. L'esecuzione dell'istanza utente di SQL Server richiede un profilo locale, in modo che i file temporanei abbiano un posto dove andare.

Passaggi per la risoluzione dei problemi:

  1. Assicurarsi che il processo w3wp.exe sia eseguito dall'utente DefaultAppPool.
  2. Assicurarsi che SQL Server abbia istanze utente abilitate (vedere config_value e run_value)
    exec sp_configure 'user instances enabled'
  3. In caso contrario, eseguire
    sp_configure 'user instances enabled', 1
    : Riconfigurare
  4. Riavviare SQL Server, nel caso in cui ASPNETdb.mdf sia collegato da un'istanza utente diversa di SQL Server.
  5. Assicurarsi che esista la directory del profilo utente locale C: \ Users \ DefaultAppPool. In caso contrario, attiva LocalProfile = True, questo creerà il profilo locale. Questo viene fatto in Gestione IIS, Pool di applicazioni, DefaultAppPool, Impostazioni avanzate ...
  6. In caso di ulteriori problemi con il database, utilizzare SQL Configuration Manager per connettersi all'istanza utente e vedere se il db è stato collegato. Devi connetterti al nome_istanza_istanza corretto .
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.