La connessione SQLexpress non è riuscita in IIS 7 W/ Errore di istanza utente - "Impossibile generare un'istanza utente

StackOverflow https://stackoverflow.com/questions/7366295

Domanda

Principalmente cercando di rispondere alla mia domanda n. 1 di seguito, ma più conoscenze sarebbero apprezzate.

Ho provato a utilizzare queste risorse durante la mia indagine, ma non ho avuto successo:

http://social.msdn.microsoft.com/forums/en/sqldatabaseengine/thread/f5eb164d-9774-4864-ae05-cac99740949b (Per questo errore: Impossibile generare un'istanza utente di SQL Server a causa di un errore nel recupero del percorso dati locale dell'applicazione dell'utente. Assicurati che l'utente abbia un profilo utente locale sul computer. La connessione sarà chiusa.)

http://social.msdn.microsoft.com/forums/en-us/sqlexpress/thread/6dfdcc22-7a81-4e8f-a947-c1ce6982d4b3/ (Per questo errore: Creare l'autorizzazione del database negato nel master del database. Un tentativo di allegare un database automatico per file? fallito. Esiste un database con lo stesso nome o non è possibile aprire un file specificato o si trova sulla condivisione UNC.)

Domande

1.) Perché questo errore si verifica durante l'esecuzione dei controlli RAD Telerik per ASP.NET AJAX "Live Demos" con IIS 7 (eseguire Telerik Live Demos funziona bene usando ASP.NET Server di sviluppo con questa stringa di connessione)

Impossibile generare un'istanza utente di SQL Server a causa di un errore nel recupero del percorso dati locale dell'applicazione dell'utente. Assicurati che l'utente abbia un profilo utente locale sul computer. La connessione sarà chiusa.

2.) Come è la creazione di un SQL Server Express istanze diverse in IIS 7, da ASP.NET Development Server & SSMSE

3.) Esistono alcuni attributi di una stringa di connessione SQL non consentita quando si esegue un sito Web su contesti diversi (in base a #2).

Ambiente:

Non sto eseguendo l'applicazione Web "Live Demo" .NET 3.5 ASP.NET tramite il server di sviluppo ASP.NET (funzionalità che si presenta nel vassoio di sistema e sceglie una porta dopo aver fatto clic su Play in Visual Studio). Funziona bene! Sto eseguendo il sito Web su IIS 7. SQL Server Express utilizza l'utente del servizio di rete nel pannello di controllo> Strumenti amministrativi> Servizi> SQL Server (SQLexpress).

Utilizzando questa stringa di connessione fornita con il progetto demo Web Application "Live Demo" installato:

<add name="NorthwindConnectionString"
             connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Northwind.mdf;Integrated Security=True;User Instance=True"
             providerName="System.Data.SqlClient" />

Ho provato a impostare "User Instance = False", ma questo lancia un altro errore:

Creare l'autorizzazione del database negato nel master del database. Un tentativo di allegare un database automatico per file? fallito. Esiste un database con lo stesso nome o non è possibile aprire un file specificato o si trova sulla condivisione UNC.

(dove "?" È il percorso del file *.mdf - C: Users myDocuments Visual Studio 2008 Projects TelerikDemos Telerik RadControls per ASP.NET AJAX Q2 2011 Live Demos app_data Northwind.mdf .. Stack Overflow Coilics è rotto con alcuni di quei personaggi, quindi ho dovuto rimuovere quel percorso)

Qualcuno mi ha risposto su una domanda precedente per impostare questa "Instanza dell'utente = false", ma sembra che le istanze dell'utente non abbiano nulla a che fare con se usi o meno SQL Express. Le istanze dell'utente sono semplicemente una funzionalità di SQL Express che consente a un utente molto non privilegiato di ospitare un'istanza di database nel proprio contesto utente.

Nota, questo database Northwind è archiviato in un file *.mdf nella cartella App_Data (sotto la directory delle applicazioni root "Live Demo") insieme al *.LDF (file di registro). In precedenza ho provato a collegare i file *.mdf come database effettivi nella cartella "database" (nell'albero degli oggetti SSMSE), ma in seguito li ho rimossi.

Cartella root "Live Demo" Web "Live Demo" (cartelle/file nidificati) hanno i seguenti utenti assegnati con tutti i privilegi:
- IIS AppPool Telerik ("Telerik" è il nome del mio pool di applicazioni in IIS 7 per questo sito)
- iusr
- SERVIZIO DI RETE

Prendendo una nota per me stesso su questa query di database master SQlexpress:

Seleziona * da sys.dm_os_child_instances

Ho anche provato diverse combinazioni delle autorizzazioni *.mdf & *.ldf modificando anche l'utente sul servizio SQL Server (SQLexpress) Windows 7 (Pannello di controllo> Strumenti amministrativi> Servizi) .. e anche riavviato il servizio dopo aver apportato tali modifiche.

enter image description here

Per riprodurre:

Scarica i controlli RAD Telerik per ASP.NET AJAX. Imposta le permimsions che ho menzionato nella cartella "Live Demos" nei file del programma Telerik, modifica la versione .NET dell'applicazione Web in .NET 3.5, spegnere il file Web.config 3.5 con il normale file Web.config in quella cartella . Devi usare Visual Studio 2010, ma sto gestendo questo in Visual Studio 2008 (con un po 'di lavoro grugnito che ho fatto perché la nostra azienda non è ancora su VS2010). Anche il passaggio dei gruppi bin35 corretti nella cartella "Live Demo". Compilare la soluzione. Crea un sito web IIS 7. Aggiungi autenticazione Windows. Autenticazione anonima e Windows abilitata. Tutti gli altri sono disabilitati. Imposta il pool di applicazioni per utilizzare il classico e 32 bit.

Quindi navigare su questo URL e fare clic sull'immagine "prima look".

http: //localhost/combobox/examples/overview/defaultcs.aspx

====================

Ulteriori prove saranno fornite se richieste.

È stato utile?

Soluzione

Stai usando una stringa di connessione con autenticazione attendibile = true. Ciò significa che la connessione utilizza il contesto di sicurezza del processo di chiamata.

Quando si esegue con il server di sviluppo, si esegue nel contesto di sicurezza dell'utente registrato, quindi ogni cosa funziona bene.

Quando si esegue in IIS, si trova nel contesto di sicurezza del processo del pool di applicazioni, che è il servizio di rete, che non ha un profilo utente, quindi si blocca.

Puoi risolverlo con entrambi:

  • Modificare l'identità del pool di applicazioni in un utente normale con accesso al database
  • Utilizzare una stringa di connessione con nome utente e password

Altri suggerimenti

IIS non carica il profilo utente di Windows, ma alcune applicazioni potrebbero trarne vantaggio per archiviare dati temporanei. SQL Express è un esempio di un'applicazione che lo fa. Tuttavia, è necessario creare un profilo utente per archiviare dati temporanei nella directory del profilo o nell'alveare del registro. Il profilo utente per l'account di servizio di rete è stato creato dal sistema ed è sempre stato disponibile. Tuttavia, con il passaggio a identità univoci del pool di applicazioni, non viene creato alcun profilo utente. Solo i pool di applicazioni standard (DefaultApppool e Classic .Net AppPool) hanno profili utente sul disco. Nessun profilo utente viene creato se l'amministratore crea un nuovo pool di applicazioni.

Tuttavia, se lo si desidera, è possibile configurare i pool di applicazioni IIS per caricare il profilo utente impostando l'attributo LoadUserProfile su "True".

https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top