Frage

Ich habe eine ASP.NET 3.5 Anwendung mit einer SQL 2005 Express MDF- Datenbank-Datei in ihrem Ordner App_Data. Lässt Anruf, dass Foo.mdf. Auf seinem eigenen kann die ASP.NET app auf die Datenbank ohne Probleme verbinden. So weit so gut.

Dann, wenn ich installieren Sql Server Management Studio Express auf dem Server und starten sie es, findet es die lokale SQLEXPRESS-Instanz und eine Verbindung herstellt, um es, zeigt aber nicht Foo.mdf in der Liste der Datenbanken.

So versuche ich, und Anfügen Foo.mdf mit der rechten Maustaste auf Datenbanken und Auswählen anhängen .. und die MDF- finden. Dies scheitert mit einem vagen Fehler:

CREATE FILE encountered operating system error 32(error not found)  
while attempting to open or create the physical file
'C:\inetpub\wwwroot\FooApp\App_Data\Foo.mdf'. (Microsoft SQL Server, Error: 5123)

Wenn ich meine ASP.NET-Website in IIS stoppen, dann das Anhängen nicht Arbeit, aber dann, wenn ich meine ASP.NET app neu starten, kann es nicht zu Foo.mdf verbinden.

So ist es wie SQL Express 2005 sieht nur lassen entweder meine app oder Management Studio verbinden. Das scheint wirklich Mist - sicherlich sollte Sql Express erlaubt mehr als eine Verbindung? Ich habe erwartet, es wie normaler SQL Server zu verhalten.

Hoffentlich bin ich es falsch zu machen. Bitte beraten.

War es hilfreich?

Lösung

Können Sie Ihre Anwendung Verbindungszeichenfolge überprüfen und sehen, ob es hat User Instance = true

Beispiel:

Data Source=.\SQLEXPRESS;Integrated Security=true; AttachDbFilename=|DataDirectory|\mydb.mdf;User Instance=true;

Von MSDN : Die anderen Haupt Problem mit Benutzerinstanzen tritt auf, da SQL Server-Datenbankdateien mit exklusivem Zugriff öffnet. Dies ist notwendig, da SQL Server die Verriegelung der Datenbank Daten in seinem Speicher verwaltet. Wenn also mehr als eine SQL Server-Instanz die gleiche Datei geöffnet, es hat das Potential für Datenkorruption. Wenn zwei unterschiedliche Benutzerinstanzen die gleiche Datenbankdatei verwenden, eine Instanz muss die Datei vor der anderen Instanz schließen kann es öffnen.

Wenn das das Problem ist, dann können Sie die Datenbank in SQL Server Management Studio anhängen und die Verbindungszeichenfolgen wie folgt ändern, so dass mehrere Clients auf die gleiche Datenbank verbinden kann.

Server=.\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;

Wenn dies nicht das Problem in Ihrem Fall, Sie können auch die „Allgemeine Probleme“ am Link oben. Es könnte wie unter Punkt 02.01 im „Häufige Probleme“ Abschnitt

, um Berechtigungen in Beziehung gesetzt werden

Andere Tipps

Ich habe keine Erfahrung der ASP.NET-Standard Datenbank verwenden, aber haben Sie versucht, die MDF zu Ihrem SQL Express DATA-Ordner zu verschieben? (Standard: C: \ Programme \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL \ DATA) Einmal im Ordner, den Sie das Managements Studio verwenden, können Sie die Datei auf SQL Express-Instanz zu befestigen. Sie wollen Ihre Verbindungszeichenfolge in der web.config-Datei ändern wie folgt aussehen:

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=aspnetdb"
     providerName="System.Data.SqlClient" />
</connectionStrings>

Fügen Sie das folgende Benutzerkonto zu dem Ordner * App_Data * Ihre Website: SQLServerMSSQLUser $ . Suchen Sie es in den erweiterten Sicherheitsberechtigungen, so dass Sie eine Suche dort tun und dann die volle Kontrolle zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top