web-dev-qa-db-de.com

Fehler beim kontinuierlichen Verbinden der Datenbank

Wenn ich von der Datenbank in einer Endlosschleife abfrage, erhalte ich nach einiger Zeit eine Fehlermeldung.

Es wurde eine Ausnahme ausgelöst, die wahrscheinlich auf eine vorübergehende .__ zurückzuführen ist. Fehler. Wenn Sie eine Verbindung zu einer SQL Azure-Datenbank herstellen, sollten Sie SqlAzureExecutionStrategy verwenden.

Normalerweise funktioniert es gut.

29
user3928324

Bei der Verbindung zur SQL-Datenbank müssen Sie vorübergehende Verbindungsfehler berücksichtigen. Diese Verbindungsfehler können zum Beispiel auftreten, wenn Updates ausgerollt werden, Hardware ausfällt usw. Der Fehler, der angezeigt wird, weist darauf hin, dass eines dieser Ereignisse aufgetreten ist. Durch Aktivieren einer von Anbuj vorgeschlagenen Ausführungsstrategie sollte das Problem gelöst werden.

15
Jan Engelsberg

Wenn Sie EF Core verwenden, konfigurieren Sie den Fehler erneut für ausfallsichere Verbindungen: 

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer("your_connection_string", builder =>
        {
            builder.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null);
        });
    base.OnConfiguring(optionsBuilder);
}
9
Shekhar

Aktivieren Sie eine Ausführungsstrategie wie hier erwähnt: https://msdn.Microsoft.com/en-us/data/dn456835.aspx . Beim Entwerfen für Azure SQL DB müssen Sie für vorübergehende Verbindungsfehler ausgelegt sein, da Back-End-Aktualisierungen, Hardwarefehler und Lastausgleich gelegentlich zu Ausfällen führen können.

8
Shantanu

Ich erhalte diese Fehlermeldung, wenn das Login, mit dem ich eine Verbindung zur Datenbank herstellen möchte, kein Benutzer in der Datenbank vorhanden ist.

2
Rush Frisby

Wenn Ihre Datenbank lokal ist, um eine WebAPI zu nennen, müssen Sie manchmal data source = localhost und keine IP-Adresse angeben .. Wir haben die Situation, dass wir einige VPS verwenden und ohne dass localhost als Datenquelle festgelegt wirdSo, wenn jemand anderes dies erlebt hat, könnte es ihm helfen.

0
MaGnumX

Ich poste diese Antwort, da ich bei der Untersuchung der Antwort viele Probleme habe. Unten ist die detaillierte Fehlermeldung, die ich bekommen habe:

Das Aufteilen der Fehler in den Teilen als Fehler war zu lang:

  1. System.Data.Entity.Core.EntityException: * Es wurde eine Ausnahme ausgelöst, die wahrscheinlich auf einen vorübergehenden Fehler zurückzuführen ist. Wenn du bist Wenn Sie eine Verbindung zu einer SQL Azure-Datenbank herstellen, verwenden Sie SqlAzureExecutionStrategy. * --->

  2. System.Data.Entity.Core.EntityCommandExecutionException: Beim Ausführen der Befehlsdefinition ist ein Fehler aufgetreten. Siehe das innere Ausnahme für Details. ---> System.Data.SqlClient.SqlException: Ressourcen-ID: 1. Das Anforderungslimit für die Datenbank ist 30 und wurde erreicht. Sehen ' http://go.Microsoft.com/fwlink/?LinkId=267637 ' Unterstützung. beim System.Data.SqlClient.SqlConnection.OnError (SqlException-Ausnahme, Boolean breakConnection, Action`1 wrapCloseInAction)

Nach Recherchen fand ich heraus, dass dies mit den maximalen Anmeldungen von Azure SQL Database zusammenhängt. Ich habe den 'Basic' - Servicereifen verwendet und max. Gleichzeitige Benutzer können sich mit 30 anmelden. 

Azure verfügt über Preisstufen, deren Leistung sich dramatisch unterscheidet. Um dies zu erreichen, drosseln sie viele Leistungskennzahlen, z. CPU-Leistung, Anfragen pro Minute usw.

Dies bedeutet, dass Ihre Anforderungen in eine Warteschlange gestellt werden, wenn Sie Ihre Stufe übersteigen, da die CPU-Leistung/das Volumen der Anforderungen zu groß ist, um verarbeitet zu werden. Dies führt zu Zeitüberschreitungen, und das Anforderungslimit wird größer, wenn Anforderungen auf die Verarbeitung warten. Schließlich kommt es zu dem Punkt, an dem die Datenbank im Wesentlichen ausfällt.

Ich habe die Erfahrung gemacht, dass die niedrigeren Datenbankebenen, wie S0 und S1, zu wenig Leistung bieten und nicht für andere Zwecke als für die Entwicklung oder für sehr einfache Websites verwendet werden sollten.

Im Azure-Portal gibt es einige großartige Tools, mit denen Sie das Problem mit Ihrer Datenbank debuggen können, z. B. CPU-Grafiken, Indexratgeber und Erkenntnisse zur Abfrageleistung.

Hier sind die verwandten Links:

Fazit:

Vielen Dank.

0
Developer

Die Lösung für dieses Problem besteht in der vorgeschlagenen Antwort. Verwenden Sie SetExecutionStrategy(), um eine Wiederholungsrichtlinie zu aktivieren. Stellen Sie außerdem sicher, dass Sie von der Klasse DbConfiguration abgeleitet werden, damit Entity Framework die Methode automatisch ausführen kann.

Sie möchten auch sicherstellen, dass Ihre Verbindungsstabilität wirklich funktioniert, indem Sie ein Befehlsabfangen einrichten, das Verbindungsfehler verursacht, sodass Sie feststellen können, dass es funktioniert. 

Weitere Informationen zum Umgang mit vorübergehenden Verbindungsfehlern

0
Joshua George

Dies kann auf die TLS-Einstellung zurückzuführen sein. Das .NET 4.5 Framework unterstützt TLS 1.2 nicht standardmäßig und die neue SQL-Datenbank ist nicht mit älteren TLS-Versionen ..__ kompatibel. Deaktivieren Sie also entweder tls 1.0.1.1 auf Ihrem Computer oder aktualisieren Sie auf .net 4.6.2 

0
Taran