Ich habe ein verwendet, um eine .mdf
Verbindung zu einem database
und herzustellen entityClient
. Jetzt möchte ich die Verbindungszeichenfolge so ändern, dass keine .mdf
Datei mehr vorhanden ist.
Ist das folgende connectionString
richtig?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Weil ich immer den Fehler bekomme:
Der zugrunde liegende Anbieter ist beim Öffnen fehlgeschlagen
c#
sql-server
entity-framework
database-connection
senzacionale
quelle
quelle
Integrated Security
aus dem Verbindungsstring, erstellte einen Benutzer und stellte sicher, dass er übersysadmin
Berechtigungen verfügt, und fügte diesen Benutzer dem Verbindungsstring hinzu.Antworten:
Ich hatte diesen Fehler und fand einige Lösungen:
Wenn Sie sich Ihre Verbindungszeichenfolge ansehen, sieht sie gültig aus. Ich habe diesen Blog-Beitrag gefunden . Das Problem hier ist, dass sie Integrated Security verwenden . Wenn Sie mit IIS ausgeführt werden, benötigt Ihr IIS-Benutzer Zugriff auf die Datenbank.
Wenn Sie Entity Framework mit Transaktionen verwenden , öffnet und schließt Entity Framework bei jedem Datenbankaufruf automatisch eine Verbindung. Wenn Sie also Transaktionen verwenden, versuchen Sie, eine Transaktion auf mehrere Verbindungen zu verteilen. Dies erhöht sich zu MSDTC .
( Weitere Informationen finden Sie in dieser Referenz. )
Das Ändern meines Codes in das Folgende hat das Problem behoben:
quelle
context.Connection.Open()
hat nicht geholfen, mein Problem zu lösen, also habe ich versucht, "Remote-Clients zulassen" in der DTC-Konfiguration zu aktivieren, kein Fehler mehr.In Windows 7 können Sie die DTC-Konfiguration öffnen, indem Sie dcomcnfg, Komponentendienste -> Computer -> Arbeitsplatz -> Verteilter Transaktionskoordinator -> Rechtsklick auf Lokaler DTC -> Sicherheit ausführen.
quelle
Sie sollten innerException sehen, um zu sehen, was die innere Ursache für das Auslösen von Fehlern ist.
In meinem Fall war der ursprüngliche Fehler:
Dies wurde gelöst, indem dem aktuellen Benutzer die vollständige Berechtigung zum Zugriff auf verwandte Dateien
mdf
undldf
Dateien mithilfe der Dateieigenschaften erteilt wurde .quelle
Ich fand das Problem, dass ich den Serverpfad innerhalb der Verbindungszeichenfolge in einer dieser Varianten hatte:
Wann sollte ich wirklich haben:
Aus irgendeinem Grund wurde der Fehler immer dann angezeigt, wenn es schwierig war, die SQL-Instanz zu finden.
quelle
Dies ist nur ein häufiges Problem. Sogar ich habe mich diesem Problem gestellt. Auf dem mit Windows-Authentifizierung konfigurierten Entwicklungscomputer funktioniert dies einwandfrei:
Nach dem Hosting in IIS mit derselben Konfiguration wurde folgende Fehlermeldung angezeigt:
Es wurde eine Änderung
connectionString
in der Konfigurationsdatei behoben :Andere häufige Fehler könnten sein:
quelle
Integrated Security=True
und ersetzen Sie sie durchuser id=sa;password=notmyrealpassword
, um dieses Bereitstellungsproblem zu beheben.Wenn Sie diese Ausnahme erhalten, stellen Sie sicher, dass Sie die Details erweitern und die inneren Ausnahmedetails betrachten, da sie Details zum Warum enthalten die Anmeldung fehlgeschlagen ist. In meinem Fall enthielt die Verbindungszeichenfolge einen Benutzer, der keinen Zugriff auf meine Datenbank hatte.
Unabhängig davon, ob Sie Integrated Security (den Kontext des angemeldeten Windows-Benutzers) oder ein einzelnes SQL-Konto verwenden, stellen Sie sicher, dass der Benutzer unter "Sicherheit" für die Datenbank, auf die Sie zugreifen möchten, über den richtigen Zugriff verfügt, um dieses Problem zu vermeiden.
quelle
inner exception
Staat das Problem? Das war meine Antwort hier, dass es die versteckten zusätzlichen Details liefert, die erforderlich sind, um das wahre zugrunde liegende Problem zu verstehen. Dasinner exception
wird nicht überprüfen, ob Sie die richtige Anmeldung haben - es ist eine Ausnahme, keine Klarstellung.Login failed for user 'user'.
NT AUTHORITY\NETWORK SERVICE
, der SQL Server-Benutzerliste hinzuzufügen . Ich habe immer noch den gleichen abgelehnten Anmeldefehler.data source
zuhostname\SQLEXPRESS
. Ich hatte es versuchthostname
und.\SQLEXPRESS
vorher. Dann konnte ich mich mit integrierter Sicherheit verbinden. Seltsamerweise ist dies das Gegenteil von Dooburts Antwort. Seltsamerweise konnte der SQL Server-Benutzername nie eine Verbindung über Visual Studio herstellen.Ich hatte ein ähnliches Problem mit der SQL Server Express Edition unter Windows Server 2003 . Ich habe einfach den Netzwerkdienst als Benutzer in die Datenbanksicherheit aufgenommen.
quelle
Der SQL Server Express-Dienst wurde nicht so eingestellt, dass er automatisch gestartet wird.
1) Gehen Sie zur Systemsteuerung. 2) Verwaltung 3) Dienst. 4) Stellen Sie SQL Server Express so ein, dass es automatisch gestartet wird, indem Sie darauf klicken. 5) Klicken Sie mit der rechten Maustaste und starten Sie den Dienst
Ich hoffe das wird helfen.
quelle
Dies kann auch passieren, wenn Sie eine Datenbank wiederherstellen und der Benutzer bereits mit einem anderen Schema existiert, sodass Sie nicht die richtigen Berechtigungen zuweisen können.
So korrigieren Sie diesen Lauf:
quelle
Ich habe hier ein ähnliches Problem gepostet und mit einer SQL 2012-Datenbank gearbeitet, die auf Amazon RDS gehostet wird. Das Problem lag in der Verbindungszeichenfolge - ich hatte dort die Eigenschaften "Anwendungsname" und "App" . Sobald ich diese entfernt habe, hat es funktioniert.
Entity Framework 5 und Amazon RDS - "Der zugrunde liegende Anbieter ist bei Open fehlgeschlagen."
quelle
Stellen Sie sicher, dass jeder Elementwert in der angegebenen Verbindungszeichenfolge korrekt ist. In meinem Fall wurde der gleiche Fehler angezeigt, weil der Name des in der Verbindungszeichenfolge angegebenen Katalogs (Datenbankname) falsch war.
quelle
Ich hatte ein ähnliches Problem mit Ausnahmen aufgrund des Verbindungsstatus. Dann wurde mir klar, dass meine Domain Service Class-Variable (aus Versehen) als statisch markiert war.
Ich vermute, dass nach dem Laden der Dienstbibliothek in den Speicher jeder neue Aufruf denselben statischen Variablenwert (Domänendienstinstanz) verwendet, was zu Konflikten über den Verbindungsstatus führt.
Ich denke auch, dass jeder Client-Aufruf zu einem neuen Thread führte, sodass mehrere Threads, die auf dieselbe Domain-Service-Instanz zugreifen, einem Zugunglück entsprechen.
quelle
Ich hatte das gleiche Problem, aber was für mich funktionierte, war das Entfernen dieses aus der Verbindungszeichenfolge:
persist security info=True
quelle
Ich hatte einen ähnlichen Fehler mit der inneren Ausnahme wie unten:
Ich könnte es beheben, indem ich die DTC-Sicherheitseinstellungen aktiviere.
Gehen Sie zu Eigenschaften von DTC auf der Registerkarte Sicherheit und überprüfen Sie Folgendes
quelle
Wenn dieser Fehler in einer ASP.NET-Webanwendung auftritt, überprüfen Sie zusätzlich zu den anderen genannten Punkten Folgendes:
quelle
Ich habe dies durch Zurücksetzen von IIS beseitigt , aber immer noch
Integrated Authentication
in der Verbindungszeichenfolge verwendet.quelle
Durch das Definieren einer neuen Windows-Firewall- Regel für SQL Server (und für Port 1433) auf dem Server wird dieser Fehler behoben (wenn Ihr Servername, Benutzeranmeldename oder Kennwort in Ihrer Verbindungszeichenfolge nicht falsch sind ...).
quelle
Ein häufiger Fehler, den ich gemacht habe, weil ich die Anwendung von einem PC auf einen anderen verschoben habe und keiner der oben genannten Schritte funktioniert hat, war, dass ich vergessen habe, die Verbindungszeichenfolge sowohl in App.Config als auch in Web.Config zu kopieren!
quelle
Ich hatte ein ähnliches Problem: In meinen Testfallausführungen bekam ich immer diesen Fehler. Ich habe festgestellt, dass mein "Distributed Transaction Service" nicht gestartet wurde (run: services.msc -> starte "Distributed Transaction Service" (am besten so einstellen, dass er automatisch startet)). Nachdem ich das getan hatte, funktionierte es wie ein Zauber ...
quelle
Ich habe die Datenbankdateien (.mdf / .ldf) in den Ordner App_Data kopiert, um diese Ausnahme zu beseitigen.
quelle
Ich stand auch vor dem gleichen Problem. Jetzt habe ich es getan, indem ich den Benutzernamen und das Passwort aus der Verbindungszeichenfolge entfernt habe.
quelle
Für mich war es nur ein einfacher Fehler:
Ich habe Amazon EC2 verwendet und meine elastische IP-Adresse in der Verbindungszeichenfolge verwendet, aber als ich die IP-Adressen geändert habe, habe ich vergessen, meine Verbindungszeichenfolge zu aktualisieren.
quelle
Ich hatte diesen Fehler plötzlich aus heiterem Himmel auf einer unserer Websites. In meinem Fall stellte sich heraus, dass das Passwort des SQL-Benutzers abgelaufen war! Das Deaktivieren des Kennwortablauffelds in SQL Server Management Studio hat den Trick getan!
quelle
Ich hatte vor einigen Tagen das gleiche Problem mit "Integrated Security = True". In der Verbindungszeichenfolge müssen Sie die Anwendungspoolidentität unter "localsystem" ausführen. Sicher, dies wird nicht empfohlen, aber zum Testen erledigt es den Job.
Auf diese Weise können Sie die Identität in IIS 7 ändern: http://www.iis.net/learn/manage/configuring-security/application-pool-identities
quelle
Legen Sie in IIS die App-Pool-Identität als Dienstkonto-Benutzer oder Administratorkonto oder Ant-Konto fest, das die Berechtigung zum Ausführen des Vorgangs in dieser Datenbank hat.
quelle
In meinem Fall hatte ich eine Nichtübereinstimmung zwischen dem Namen der Verbindungszeichenfolge, die ich im Konstruktor des Kontexts registriert habe, und dem Namen in meiner web.config. Einfacher Fehler durch Kopieren und Einfügen: D.
quelle
Ich habe den gleichen Fehler, den ich gefunden habe. Wenn ich meinen connectionString in eine neue Datenquelle ändere, vergesse ich, den Benutzernamen und das Passwort für die neue Datenbank zu ändern
quelle
Dieser Fehler ist auch aufgetreten, wenn der Name der SQL Server-Instanz nicht angegeben ist und auf dem SQL-Host mehrere SQL-Instanzen installiert sind. Hier einige Beispiele zur Verdeutlichung:
Die folgende Verbindungszeichenfolge führt zu der Ausnahme "Der zugrunde liegende Anbieter ist beim Öffnen fehlgeschlagen" ohne innere Ausnahme in einer .NET WebForms-App:
Die folgende Verbindungszeichenfolge wird wie erwartet in einer .net WebForms-App ausgeführt, in der die SQL-Umgebung mehrere Instanzen enthält. Selten weiß ich, aber ich habe ein paar verschiedene SQL-Instanzen auf meiner Entwicklungsbox, um verschiedene Projekte aufzunehmen:
quelle
In meinem Fall wurde die Serveradresse vom Serveradministrator geändert, sodass ich die Verbindungszeichenfolge in eine neue Serveradresse ändern musste
quelle
Ich hatte dieses Problem, weil sich das Anwendungspool-Login, unter dem diese App ausgeführt wurde, geändert hatte.
In IIS:
Suchen Sie den Anwendungspool, indem Sie auf Ihre Site klicken und zu Grundeinstellungen wechseln.
Gehen Sie zu Anwendungspools.
Klicken Sie auf den Anwendungspool Ihrer Site.
Klicken Sie auf Erweiterte Einstellungen.
Geben Sie unter Identität Konto-Login und Passwort ein.
Starten Sie Ihre Site neu und versuchen Sie es erneut.
quelle