Frage

Ich zog eine ASPNETDB.MDF Datei von einem Server für eine ASP-Website off Formularauthentifizierung auf meinem lokalen Rechner verwenden. Ich hat einen neuen Benutzer auf die Datenbankdatei des ASP.NET-Website-Konfigurationstool verwenden. Ich lud die MDF-Datei an den Server zurück und jetzt bekomme ich die folgende Ausnahme, wenn ich versuche, wie jeder Benutzer anmelden:

Cannot open user default database. Login failed.
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'

Ich habe googeln und alle anderen Lösungen für dieses Problem hier auf SO, wie gut und haben nichts gefunden, das funktioniert zu lesen.

Der Server verfügt über SQL Server 2008 auf, und das ist, was ich auf meinem lokalen Rechner mit VS 2008 Professional verwenden.

Meine Verbindungszeichenfolge ist (Zeilenumbrüche hinzugefügt für Lesbarkeit):

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

Ich bin neu in SQL Server so bin ich ziemlich sicher, dass ich etwas vermasselte irgendwo.

Jede Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung

Alle Fragen zu, wer oder was oder warum in Bezug auf die Config beiseite ...

Ihr Problem kann aus der Verbindungszeichenfolge abgeleitet werden. Das wird vor Ort gegen SQL Express aber nicht gegen SQL richtigen auf dem Server arbeiten.

Der erste Hinweis ist, dass nur SqlExpress Benutzerinstanzen ermöglicht. Auf Sql werden richtigen Sie haben die MDF- zu befestigen.

Wenn die Verbindungszeichenfolge auf Ihrem Rechner arbeitet, während in VS 2008, SQL EXPRESS installiert. Wenn die Verbindungszeichenfolge auf dem Server arbeitet dann der Server installiert SQL EXPRESS.

Wenn der Server keine SQL Express installiert und konfiguriert Benutzerinstanzen zu ermöglichen, wie ich hoffe, wäre es nicht, dass Verbindungszeichenfolge in der Login-Ausfall Ausnahme führen Sie erleben.

Ich frage mich auch über Ihre Kopie von /. Typischerweise wird der Zugang eine aktive MDF- verweigert, auch für das Kopieren.

Bitte bestätigen Sie Sql Versionen sowohl Client als auch Server-Seite und versucht, eine vorherige Kopie beiden web.config-Dateien zu finden, Verbindungszeichenfolgen zu vergleichen.

Andere Tipps

Ich denke, dass Ihr Problem ist, dass Sie nicht den Überblick über die Differenz halten zwischen einer Datenbank login und eine Datenbank Benutzer. Ein Login ermöglicht den Zugriff auf SQL Server ( im Allgemeinen). Ein Datenbankbenutzer ist ein Login, den Zugriff auf eine bestimmte Datenbank gegeben wurde. Wenn Sie Dateien hin und her kopieren, wie Sie getan haben, können Sie die zugrunde liegende Kennung für ein Login-Konto ungültig macht (vor allem Windows-Konten).

Ich würde vorschlagen, dass Sie ein SQL-Konto verwenden, um Ihren SQL-Server anmelden (und nicht ein Windows-Konto) und die Anmeldeinformationen in der Datei web.config platzieren. Ich habe einfach festgestellt, dass dies viel einfacher zu konfigurieren ist, die Nutzung und Änderung als ein Windows-Konto anmelden. Sobald Ihre Anmeldung eingerichtet ist, nur sicherstellen, dass es auch den Benutzerzugriff auf die Datenbank auf dem Server, den Sie verwenden möchten, hat. Sie können noch in Transferprobleme laufen (obwohl sie weniger wahrscheinlich sind), aber sie ist durchaus ein bisschen leichter zu befestigen.

Wichtiger Hinweis: andere nicht einverstanden sind - dem Argument, dass Windows-Konten sicherer sind - so können Sie sich zu diesem Thema erziehen könnten wollen!

Ihre Beschreibung des Problems ist unvollständig oder nicht im Einklang mit dem Fehler. Sie müssen ein bisschen mehr Informationen für eine bessere Antwort geben, aber hier ist meine erste Antwort.

Der Fehler zeigt an, dass die Anwendung integrierte Authentifizierung auf SQL verwendet. So würde es helfen, die Verbindungszeichenfolge zu sehen. Er sagt, wahrscheinlich ‚SSPI‘ irgendwo. Das bedeutet, dass der Benutzer, der die App Container als (NETWORK SERVICE) ausgeführt wird versucht, auf die Datenbank zu verbinden, und es kann nicht, weil sie die Erlaubnis dazu nicht haben.

So können Sie entweder geändert, um die Verbindungszeichenfolge als Teil von dem, was Sie getan haben, oder NETWORK SERVICE war zuvor ein Datenbankbenutzer (keine gute Idee, glaube ich).

Es gibt mögliche andere sicherheitsrelevante Einstellungen im Spiel in Ihrem web.config. Ihre Anwendung erscheint die Formularauthentifizierung zu verwenden. Wenn IIS gesetzt anonymen Zugriff zu ermöglichen, und web.config gesetzt Identitätswechsel zu tun, dann auch das könnte das NETWORK SERVICE verursachen versuchen, SQL zu verbinden.

Wie soll die Anwendung verbinden? Haben Sie ein Dienstkonto haben (ein einzelnes Benutzerkonto), dass alle Benutzer, die über die Formularauthentifizierung authentifizieren für Datenbankoperationen durchlaufen sollte? Wenn ja, dann müssen Sie Ihre Datenbank-Verbindungszeichenfolge ändern, um einen Benutzer und ein Kennwort enthalten.

Um dies zu beheben, müssen Sie Ihre Verbindungszeichenfolge überprüfen, jegliche Form-Auth entsprechende Einstellungen in der web.config, und die Sicherheitseinstellungen in IIS. Nichts von alldem Ich denke hat mit der Tatsache zu tun, dass Sie einen Benutzer hinzugefügt.

Edit: So verwenden Sie die integrierte Sicherheit, wie ich vermutete. Dies wird nicht mit Forms Auth arbeiten, denn während ein Benutzer gegen die App mit ihrer Benutzer-ID authentifiziert wird, Ihre Anwendung authentifiziert gegen die Datenbank mit integrierten Auth, das heißt NETWORK SERVICE. Sie benötigen ein Datenbank-Dienstkonto, imo, und ich weiß nicht, wie dies zuvor gearbeitet haben kann, wenn Sie nicht die Verbindungszeichenfolge geändert haben.

Können Sie versuchen, dies zu ändern Anwendung Pools-> Erweiterte Einstellungen -> Prozessmodell -> Identity ?

Ich habe den gleichen Fehler und beheben, indem das Prozessmodell zu ändern.

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