Beheben von Konnektivitätsproblemen und anderen Fehlern mit Azure SQL-Datenbank und Azure SQL Managed Instance

Gilt für:Azure SQL-DatenbankAzure SQL Managed Instance

Wenn keine Verbindung mit Azure SQL-Datenbank oder Azure SQL Managed Instance hergestellt werden kann, erhalten Sie Fehlermeldungen. Diese Verbindungsprobleme können auf eine Neukonfiguration sowie auf Firewalleinstellungen, ein Verbindungstimeout, falsche Anmeldeinformationen oder auf die Missachtung bewährter Methoden und Entwurfsrichtlinien für den Anwendungsentwurf zurückzuführen sein. Außerdem können Sie keine Verbindung mehr herstellen, wenn für einige Ressourcen von Azure SQL-Datenbank oder der verwalteten SQL-Instanz der zulässige Höchstwert erreicht wird.

Hinweis

Sie können mit Azure SQL-Konnektivitätsprüfung eine Vielzahl von Konnektivitätsfehlern in Azure SQL Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics-Umgebungen erkennen und beheben.

Fehlermeldungen für vorübergehende Fehler (40197, 40613 u. a.)

Die Azure-Infrastruktur verfügt über die Möglichkeit, Server dynamisch neu zu konfigurieren, wenn hohe Workloads im SQL-Datenbankdienst auftreten. Dieses dynamische Verhalten führt aber u. U. dazu, dass die Verbindung zwischen Ihrem Clientprogramm und der Datenbank oder Instanz getrennt wird. Diese Art Fehlerbedingung wird als vorübergehender Fehler bezeichnet. Ereignisse bei der Neukonfiguration von Datenbanken werden durch geplante Ereignisse (z.B. Softwareupgrades) oder ungeplante Ereignisse (z.B. einen Prozessabsturz oder einen Lastenausgleich) hervorgerufen. Die meisten bei einer Neukonfiguration auftretenden Ereignisse sind normalerweise kurzlebig und sollten innerhalb von höchstens 60 Sekunden beendet werden. Trotzdem kann das Beenden dieser Ereignisse beizeiten länger dauern, so z.B., wenn eine große Transaktion eine lang andauernde Wiederherstellung auslöst. Die folgende Tabelle enthält eine Liste der verschiedenen vorübergehenden Fehler, die Anwendungen beim Herstellen einer Verbindung zur Azure SQL-Datenbank empfangen können.

Liste der Fehlercodes für vorübergehende Fehler

Fehlercode severity BESCHREIBUNG
926 14 Die Datenbank „replicatedmaster“ kann nicht geöffnet werden. Sie wurde bei der Wiederherstellung als SUSPECT gekennzeichnet. Weitere Informationen finden Sie im SQL Server-Fehlerprotokoll.

Dieser Fehler kann während der letzten Phase einer Neukonfiguration für kurze Zeit im SQL Managed Instance-Fehlerprotokoll protokolliert werden, während die alte Primärinstanz ihr Protokoll herunterfährt.
Andere, dauerhafte Szenarien, die diese Fehlermeldung einbeziehen, sind in der Dokumentation: MSSQL-Fehler beschrieben.
4060 16 Die von der Anmeldung angeforderte '%.*ls'-Datenbank kann nicht geöffnet werden. Fehler bei der Anmeldung. Weitere Informationen finden Sie unter Fehler 4000 bis 4999.
40197 17 Dienstfehler beim Verarbeiten Ihrer Anforderung. Wiederholen Sie den Vorgang. Fehlercode %d.

Sie erhalten diesen Fehler, wenn der Dienst aufgrund von Software- oder Hardwareupgrades, Hardwarefehlern oder sonstigen Failoverproblemen ausgefallen ist. Der Fehlercode (%d), der in der Meldung zum Fehler 40197 enthalten ist, liefert weitere Informationen zur Art des aufgetretenen Fehlers oder Failovers. Beispiele für Fehlercodes, die in die Meldung zum Fehler 40197 eingebettet sind, lauten 40020, 40143, 40166 und 40540.

Wenn die Verbindung wiederhergestellt wird, werden Sie automatisch mit einer fehlerfreien Kopie Ihrer Datenbank verbunden. Ihre Anwendung muss den Fehler 40197 abfangen, den für die Problembehandlung in der Meldung enthaltenen Fehlercode (%d) protokollieren und versuchen, eine neue Verbindung mit SQL-Datenbank herzustellen, bis die Ressourcen verfügbar sind, damit Ihre Verbindung wiederhergestellt wird. Weitere Informationen finden Sie unter Vorübergehende Fehler.
40501 20 Der Dienst ist derzeit ausgelastet. Wiederholen Sie die Anforderung in 10 Sekunden. Vorgangs-ID: %ls. Code: %d. Weitere Informationen finden Sie unter:
Logische SQL-Server-Ressourcengrenzen.
DTU-basierte Einschränkungen für einzelne Datenbanken.
DTU-basierte Einschränkungen für Pools für elastische Datenbanken.
V-Kern-basierte Einschränkungen für einzelne Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Übersicht über Ressourcenlimits für verwaltete Azure SQL-Instanzen.
40613 17 Die Datenbank "%.*ls" auf dem Server "%.*ls" ist zurzeit nicht verfügbar. Wiederholen Sie den Verbindungsversuch später. Falls das Problem weiterhin besteht, wenden Sie sich an den Kundensupport, und geben Sie dabei die Ablaufverfolgungs-ID der Sitzung (%.*ls) an.

Dieser Fehler kann auftreten, wenn bereits eine dedizierte Administratorverbindung (DAC) zur Datenbank besteht. Weitere Informationen finden Sie unter Vorübergehende Fehler.
49918 16 Anforderung kann nicht verarbeitet werden. Zum Verarbeiten der Anforderung sind nicht genügend Ressourcen vorhanden.

Der Dienst ist derzeit ausgelastet. Versuchen Sie die Anforderung später erneut. Weitere Informationen finden Sie unter:
Logische SQL-Server-Ressourcengrenzen.
DTU-basierte Einschränkungen für einzelne Datenbanken.
DTU-basierte Einschränkungen für Pools für elastische Datenbanken.
V-Kern-basierte Einschränkungen für einzelne Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Übersicht über Ressourcenlimits für verwaltete Azure SQL-Instanzen.
49919 16 Die Erstellung oder Aktualisierung der Anforderung kann nicht verarbeitet werden. Für das Abonnement „%ld“ werden derzeit zu viele Erstell- oder Aktualisierungsvorgänge ausgeführt.

Der Dienst ist mit der Verarbeitung mehrerer Erstell- oder Aktualisierungsvorgänge für Ihr Abonnement oder Ihren Server ausgelastet. Zur Ressourcenoptimierung werden Anforderungen derzeit blockiert. Fragen Sie sys.dm_operation_status auf ausstehende Vorgänge ab. Warten Sie, bis ausstehende Erstellungs- oder Aktualisierungsanforderungen abgeschlossen sind, oder löschen Sie eine Ihrer ausstehenden Anforderungen, und wiederholen Sie die Anforderung später. Wenn Ihre Vorgänge scheinbar hängen bleiben, warten Sie, bis andere ausgeführte Vorgänge abgeschlossen sind, oder brechen Sie sie nach Möglichkeit ab. Sie können z. B. eine Datenbankkopie oder eine Georeplikaterstellung abbrechen, indem Sie die Datenbank oder das Replikat löschen, das erstellt wird. Wenn ein scheinbar hängen gebliebener Vorgang nicht abgebrochen werden kann, öffnen Sie ein Supportticket in Microsoft.
49920 16 Anforderung kann nicht verarbeitet werden. Für das Abonnement „%ld“ werden derzeit zu viele Vorgänge ausgeführt.

Der Dienst ist mit der Verarbeitung mehrerer Vorgänge für dieses Abonnement ausgelastet. Zur Ressourcenoptimierung werden Anforderungen derzeit blockiert. Fragen Sie sys.dm_operation_status auf den Vorgangsstatus ab. Warten Sie, bis ausstehende Anforderungen abgeschlossen sind, oder löschen Sie eine Ihrer ausstehenden Anforderungen, und wiederholen Sie die Anforderung später. Wenn Ihre Vorgänge scheinbar hängen bleiben, warten Sie, bis andere ausgeführte Vorgänge abgeschlossen sind, oder brechen Sie sie nach Möglichkeit ab. Sie können z. B. eine Datenbankkopie oder eine Georeplikaterstellung abbrechen, indem Sie die Datenbank oder das Replikat löschen, das erstellt wird. Wenn ein scheinbar hängen gebliebener Vorgang nicht abgebrochen werden kann, öffnen Sie ein Supportticket in Microsoft.
4221 16 Fehler bei der Anmeldung bei lesbarem sekundärem Replikat aufgrund einer zu langen Wartezeit auf "HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING". Das Replikat steht zur Anmeldung nicht zur Verfügung, weil Zeilenversionen für Transaktionen fehlen, die beim Neustarten des Replikats in Verarbeitung waren. Dieses Problem kann durch einen Rollback oder durch einen Commit der aktiven Transaktionen auf dem primären Replikat gelöst werden. Vorkommen dieser Bedingung können durch Vermeiden langer Schreibtransaktionen auf dem primären Replikat minimiert werden.
615 21 Datenbank-ID %d, Name '%.*ls' konnte nicht gefunden werden. Fehlercode 615.
Dies bedeutet, dass der Zwischenspeicher-Cache nicht mit der SQL Server-Instanz synchronisiert ist und Suchvorgänge veraltete Datenbank-IDs abrufen.

SQL-Anmeldungen verwenden den Zwischenspeicher-Cache, um den Datenbanknamen der ID-Zuordnung zuzuordnen. Der Cache sollte mit der Back-End-Datenbank synchron sein und aktualisiert werden, wenn das Anhängen und Trennen der Datenbank an/von der SQL Server-Instanz erfolgt.
Sie erhalten diesen Fehler, wenn der Arbeitsablauf zum Trennen den Zwischenspeicher-Cache nicht rechtzeitig bereinigen kann und nachfolgende Suchen in der Datenbank auf eine veraltete Datenbank-ID verweisen.

Versuchen Sie, erneut eine Verbindung zu SQL-Datenbank herzustellen, bis die Ressourcen verfügbar sind und die Verbindung erneut hergestellt wird. Weitere Informationen finden Sie unter Vorübergehende Fehler.

Schritte zum Beheben vorübergehender Verbindungsprobleme

  1. Ziehen Sie das Microsoft Azure Service-Dashboard für alle bekannten Ausfälle zu Rat, die während der Fehlermeldung durch die Anwendung aufgetreten sind.
  2. Für Anwendungen, die Verbindungen mit einem Clouddienst wie Azure SQL-Datenbank herstellen, sollten Sie regelmäßige Neukonfigurationsereignisse erwarten. Daher sollten Sie eine Wiederholungslogik zur Fehlerbehandlung implementieren und so verhindern, dass Anwendungsfehler Benutzern gemeldet werden.
  3. Wenn sich eine Datenbank ihren Ressourcenbegrenzungen nähert, kann dies wie ein vorübergehendes Verbindungsproblem aussehen. Sie Ressourceneinschränkungen.
  4. Wenn Verbindungsprobleme weiterhin bestehen, die Fehlerdauer 60 Sekunden überschreitet oder der Fehler an einem Tag mehrfach auftritt, schicken Sie eine Azure-Supportanfrage, indem Sie auf der Azure-Support -Website Support erhalten auswählen.

Implementieren von Wiederholungslogik

Es wird dringend empfohlen, das Clientprogramm mit einer Wiederholungslogik zu versehen, sodass erneut eine Verbindung hergestellt werden kann, nachdem sich der vorübergehende Fehler selbst korrigiert hat. Es wird empfohlen, dass vor dem ersten Wiederholungsversuch eine Verzögerungszeit von fünf Sekunden verwendet wird. Wiederholungsversuche nach weniger als fünf Sekunden können den Clouddienst überfordern. Für jeden nachfolgenden Wiederholungsversuch sollte die Verzögerung exponentiell steigen, bis zu einem Maximum von 60 Sekunden.

Codebeispiele zur Wiederholungslogik finden Sie unter:

Zusätzliche Informationen zur Behandlung von vorübergehenden Fehlern in Ihrer Anwendung finden Sie unter Behandeln von Problemen bei vorübergehenden Verbindungsfehlern mit SQL-Datenbank.

Eine Beschreibung der Sperrfrist für Clients, die ADO.NET verwenden, finden Sie im Artikel zum Verbindungspooling (ADO.NET).

Das Problem tritt auf, wenn die Anwendung keine Verbindung mit dem Server herstellen kann.

Um dieses Problem zu beheben, führen Sie die unter Schritte zum Beheben häufiger Verbindungsprobleme genannten Schritte (in der angegebenen Reihenfolge) aus.

Der Server/die Instanz wurde nicht gefunden, oder auf ihn/sie kann nicht zugegriffen werden (Fehler 26, 40, 10053)

Fehler 26: Fehler beim Bestimmen des angegebenen Servers

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.(provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)

Fehler 40: Serververbindung konnte nicht geöffnet werden.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Fehler 10053: Beim Empfangen von Ergebnissen vom Server ist ein Fehler auf Übertragungsebene aufgetreten.

10053: A transport-level error has occurred when receiving results from the server. (Provider: TCP Provider, error: 0 - An established connection was aborted by the software in your host machine)

Diese Probleme treten auf, wenn die Anwendung keine Verbindung mit dem Server herstellen kann.

Um diese Probleme zu beheben, führen Sie die unter Schritte zum Beheben häufiger Verbindungsprobleme genannten Schritte (in der angegebenen Reihenfolge) aus.

Aufgrund von Firewallproblemen kann keine Verbindung mit dem Server hergestellt werden

Fehler 40615: Verbindung zu < Servername > nicht möglich

Konfigurieren Sie im Azure-Portal die Firewalleinstellungen für Azure SQL-Datenbank, um dieses Problem zu beheben.

Fehler 5: Verbindung zu < Servername > nicht möglich

Stellen Sie für alle Firewalls zwischen Client und Internet sicher, dass Port 1433 für ausgehende Verbindungen geöffnet ist, um dieses Problem zu beheben.

Die Anmeldung beim Server ist nicht möglich (Fehler 18456, 40531)

Anmeldung für Benutzer '< Benutzername >' fehlgeschlagen

Login failed for user '<User name>'.This session has been assigned a tracing ID of '<Tracing ID>'. Provide this tracing ID to customer support when you need assistance. (Microsoft SQL Server, Error: 18456)

Wenden Sie sich zum Beheben dieses Problems an Ihren Dienstadministrator, um einen gültigen Benutzernamen und das zugehörige Kennwort zu erhalten.

In der Regel kann der Dienstadministrator die Anmeldeinformationen mit den folgenden Schritten hinzufügen:

  1. Anmelden beim Server mit SQL Server Management Studio (SSMS).

  2. Mithilfe der folgenden SQL-Abfrage in der master-Datenbank überprüfen, ob der Anmeldename deaktiviert ist:

    SELECT name, is_disabled FROM sys.sql_logins;
    
  3. Wenn der entsprechende Name deaktiviert ist, kann er mithilfe der folgenden Anweisung aktiviert werden:

    ALTER LOGIN <User name> ENABLE;
    
  4. Wenn der Benutzername für die SQL-Anmeldung nicht vorhanden ist, bearbeiten Sie die folgende SQL-Abfrage, um eine neue SQL-Anmeldung zu erstellen, und führen Sie die Abfrage aus:

    CREATE LOGIN <SQL_login_name, sysname, login_name>
    WITH PASSWORD = '<password, sysname, Change_Password>';
    GO
    
  5. Erweitern Sie im SSMS-Objekt-Explorer den Eintrag Datenbanken.

  6. Wählen Sie die Datenbank aus, für die der Benutzer die Berechtigung erhalten soll.

  7. Klicken Sie mit der rechten Maustaste auf Sicherheit, und wählen Sie Neu und dann Benutzer aus.

  8. Ersetzen Sie im generierten Skript mit Platzhaltern (siehe Beispiel unten) die Vorlagenparameter, indem Sie die hier beschriebenen Schritte befolgen, und führen Sie dann das Skript aus:

    CREATE USER [<user_name, sysname, user_name>]
    FOR LOGIN [<login_name, sysname, login_name>]
    WITH DEFAULT_SCHEMA = [<default_schema, sysname, dbo>];
    GO
    
    -- Add user to the database owner role
    EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>';
    GO
    

    Sie können auch sp_addrolemember verwenden, um bestimmte Benutzer bestimmten Datenbankrollen zuzuordnen.

    Hinweis

    Zur Verwaltung von Mitgliedschaften in Datenbankrollen sollten Sie in Azure SQL-Datenbank die neuere ALTER ROLE-Syntax in Erwägung ziehen.

Weitere Informationen finden Sie unter Steuern und Gewähren des Datenbankzugriffs für SQL-Datenbank und SQL Data Warehouse.

Verbindungstimeoutfehler

System.Data.SqlClient.SqlException (0x80131904): Verbindungstimeout abgelaufen

System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=3; handshake=29995;

System.Data.SqlClient.SqlException (0x80131904): Timeout abgelaufen

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

System.Data.Entity.Core.EntityException: Fehler des zugrunde liegenden Anbieters beim Öffnen

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. -> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. -> System.ComponentModel.Win32Exception: The wait operation timed out

Verbindung zu < Servername > nicht möglich

Cannot connect to <server name>.ADDITIONAL INFORMATION:Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=231; handshake=983; [Login] initialization=0; authentication=0; [Post-Login] complete=13000; (Microsoft SQL Server, Error: -2) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476 The wait operation timed out

Diese Ausnahmen können aufgrund von Verbindungs- oder Abfrageproblemen auftreten. Um zu bestätigen, dass dieser Fehler nicht durch Konnektivitätsprobleme verursacht wird, siehe Bestätigen, dass ein Fehler von einem Konnektivitätsproblem verursacht wird.

Verbindungstimeouts treten auf, weil die Anwendung keine Verbindung mit dem Server herstellen kann. Um dieses Problem zu beheben, führen Sie die unter Schritte zum Beheben häufiger Verbindungsprobleme genannten Schritte (in der angegebenen Reihenfolge) aus.

Fehler aufgrund einer beendeten Netzwerkverbindung

SQL-Clientbibliotheken stellen mithilfe des TCP-Netzwerkprotokolls eine Verbindung mit Azure SQL-Datenbank und Azure SQL Managed Instance her. Eine Clientbibliothek verwendet eine Komponente auf niedrigerer Ebene namens TCP-Anbieter, um TCP-Verbindungen zu verwalten. Wenn der TCP-Anbieter erkennt, dass ein Remotehost eine vorhandene TCP-Verbindung unerwartet beendet hat, löst die Clientbibliothek einen Fehler aus. Da es sich bei dem Fehler um einen Clientfehler und nicht um einen SQL Server-Fehler handelt, ist keine SQL-Fehlernummer enthalten. Stattdessen ist die Fehlernummer 0, und die Fehlermeldung des TCP-Anbieters wird verwendet.

Beispiele für Fehler aufgrund einer beendeten Netzwerkverbindung:

A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.) An existing connection was forcibly closed by the remote host

A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

The client was unable to establish a connection because of an error during connection initialization process before login. Possible causes include the following: the client tried to connect to an unsupported version of SQL Server; the server was too busy to accept new connections; or there was a resource limitation (insufficient memory or maximum allowed connections) on the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

A connection was successfully established with the server, but then an error occurred during the login process. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)

Fehler aufgrund einer beendeten Verbindung können auftreten, weil die Datenbank oder der Pool für elastische Datenbanken vorübergehend nicht verfügbar ist. Sie können auch aufgrund verschiedener Probleme in der Netzwerkinfrastruktur (u. a. bei Firewalls, Netzwerkgeräten usw.) zwischen dem Datenbankserver und der Clientanwendung auftreten. Diese Probleme können vorübergehend oder dauerhaft sein. Als allgemeine Richtlinie sollten Anwendungen eine feste Anzahl von Wiederholungsversuchen für diese Fehler ausführen, bevor sie als dauerhafte Fehler betrachtet werden.

Fehler bei der Ressourcenkontrolle

Azure SQL-Datenbank verwendet eine Ressourcen-Governance-Implementierung, die auf Resource Governor basiert, um Ressourcengrenzwerte durchzusetzen. Erfahren Sie mehr über Ressourcenverwaltung in Azure SQL-Datenbank.

Die häufigsten Fehler der Ressourcen-Governance werden zuerst mit Details aufgeführt, gefolgt von einer Tabelle mit Fehlermeldungen zur Ressourcen-Governance.

Fehler 10928 und 10936: Ressourcen-ID: 1. Die Anforderungsgrenze für [die Datenbank oder den Pool für elastische Datenbanken] beträgt %d und wurde erreicht.

Wenn der Grenzwert auf Datenbankebene erreicht ist, lautet die ausführliche Fehlermeldung in diesem Fall Resource ID : 1. The request limit for the database is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance..

Wenn der Grenzwert für den Pool für elastische Datenbanken erreicht ist, lautet die ausführliche Fehlermeldung in diesem Fall: Resource ID : 1. The request limit for the elastic pool is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance.Grenzwerte für Pools für elastische Datenbanken sind höher als Datenbankgrenzwerte. Weitere Informationen finden Sie unter Ressourcengrenzen. Sie können erreicht werden, wenn mehrere Datenbanken im Pool eine Ressource (z. B. einen Worker) gleichzeitig verwenden.

Diese Fehlermeldung gibt an, dass der Workergrenzwert für die Datenbank oder den Pool für elastische Datenbanken erreicht wurde. Anstelle des Platzhalters %d wird der maximale Wert für gleichzeitige Worker für das Dienstziel der Datenbank oder des Pools für elastische Datenbanken angegeben.

Hinweis

Das anfängliche Angebot von Azure SQL-Datenbank nur Einzelthreadabfragen unterstützt. Zu diesem Zeitpunkt war die Anzahl der Anforderungen immer gleichbedeutend mit der Anzahl der Arbeitskräfte. Die Fehlermeldungen 10928 und 10936 in Azure SQL-Datenbank enthält aus Gründen der Abwärtskompatibilität die Formulierung „Das Anforderungslimit für [...] ist N und wurde erreicht.“. Der Grenzwert ist tatsächlich die Anzahl der Arbeitskräfte. Wenn Ihre Einstellung für den maximalen Grad von Parallelität (MAXDOP) gleich 0 oder größer als 1 ist, ist die Anzahl der Arbeitskräfte möglicherweise wesentlich höher als die Anzahl der Anforderungen, und der Grenzwert kann viel früher erreicht werden, als wenn MAXDOP gleich eins ist.

Erfahren Sie mehr über Sitzungen, Mitarbeitern und Anfragen.

Verbinden bei Bedarf mit dem Dedicated Admin Connection (DAC)

Wenn ein Livevorfall auftritt, bei dem das Limit für die Mitarbeiter näher rückt oder erreicht wurde, wird möglicherweise Fehler 10928 angezeigt, wenn Sie eine Verbindung über SQL Server Management Studio (SSMS) oder Azure Data Studio. Eine Sitzung kann mithilfe der Diagnoseverbindung für Datenbankadministratoren (DAC) eine Verbindung herstellen, auch wenn der maximale Schwellenwert für Mitarbeiter erreicht wurde.

So stellen Sie eine Verbindung mit dem DAC von SSMS:

  • Klicken Sie im Menü auf Datei> Neu>Datenbank-Engine-Abfrage.
  • Geben Sie im Dialogfeld Verbindung im Feld Servername die Eingabe ein admin:<fully_qualified_server_name>(in etwa admin:servername.database.windows.net).
  • Wählen Sie Optionen >> aus.
  • Wählen Sie die Verbindungseigenschaften-Registerkarte
  • Geben Sie Verbinden Datenbank speichern den Namen der Datenbank ein.
  • Wählen Sie Verbinden.

Wenn Fehler 40613, Database '%.&#x2a;ls' on server '%.&#x2a;ls' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of '%.&#x2a;ls', angezeigt wird, weist dies möglicherweise darauf hin, dass bereits eine andere Sitzung mit dem DAC verbunden ist. Es kann immer nur eine Sitzung gleichzeitig eine Verbindung mit dem DAC für eine einzelne Datenbank oder einen Pool für elastische Datenbanken herstellen.

Wenn nach der Auswahl von Verbindender Fehler "Fehler beim Herstellen einer Verbindung mit dem Server" auftritt, wurde die DAC-Sitzung möglicherweise trotzdem erfolgreich eingerichtet, wenn Sie eine Version von SSMS vor 18.9 verwenden. Frühe Versionen von SSMS versucht, IntelliSense für Verbindungen mit dem DAC zur Verfügung zu stellen. Dies ist fehlgeschlagen, da das DAC nur einen einzigen Worker unterstützt und IntelliSense einen separaten Worker erfordert.

Sie können keine DAC-Verbindung mit dem Objekt-Explorer verwenden.

Überprüfen Ihrer max_worker_percent Nutzung

Um Statistiken zum Ressourcenverbrauch für Ihre Datenbank für 14 Tage zu finden, fragen Sie die sys.resource_stats-Systemkatalogansicht ab. Die max_worker_percentSpalte zeigt den Prozentsatz der verwendeten Arbeitskräfte relativ zum Mitarbeiterlimit für Ihre Datenbank an. Stellen Sie eine Verbindung mit der master-Datenbank auf Ihrem logischen Server her, um sys.resource_stats abzufragen.

SELECT start_time, end_time, database_name, sku, avg_cpu_percent, max_worker_percent, max_session_percent 
FROM sys.resource_stats;

Sie können auch Ressourcenverbrauchsstatistiken der letzten Stunde aus der dynamischen Verwaltungsansicht sys.dm_db_resource_stats abfragen. Verbinden sie direkt an die Datenbank, um abfragen sys.dm_db_resource_stats zu können.

SELECT end_time, avg_cpu_percent, max_worker_percent, max_session_percent
FROM sys.dm_db_resource_stats;

Geringerer Arbeitseinsatz nach Möglichkeit

Blockierungsketten können zu einer plötzlichen Zunahme der Anzahl von Arbeitskräften in einer Datenbank führen. Ein großer Umfang paralleler Abfragen kann zu einer hohen Anzahl von Arbeitskräften führen. Wenn Sie den Grad an Parallelität (MAXDOP)erhöhen oder MAXDOP auf Null festlegen, kann die Anzahl der aktiven Arbeitskräfte erhöht werden.

Durch Ausführen der folgenden Schritte können Sie einen Vorfall mit nicht genügend Mitarbeitern aufarbeiten:

  1. Überprüfen Sie, ob Blockierung erfolgt oder ob Sie eine große Anzahl von gleichzeitig arbeitenden Mitarbeitern erkennen können. Führen Sie die folgende Abfrage aus, um aktuelle Anforderungen zu untersuchen und auf Blockierung zu prüfen, wenn ihre Datenbank Fehler 10928 zurück gibt. Möglicherweise müssen Sie eine Verbindung mit dem Dedicated Admin Connection (DAC) herstellen, um die Abfrage auszuführen.

    SELECT
        r.session_id, r.request_id, r.blocking_session_id, r.start_time, 
        r.status, r.command, DB_NAME(r.database_id) AS database_name,
        (SELECT COUNT(*) 
            FROM sys.dm_os_tasks AS t 
            WHERE t.session_id=r.session_id and t.request_id=r.request_id) AS worker_count,
        i.parameters, i.event_info AS input_buffer,
        r.last_wait_type, r.open_transaction_count, r.total_elapsed_time, r.cpu_time,
        r.logical_reads, r.writes, s.login_time, s.login_name, s.program_name, s.host_name
    FROM sys.dm_exec_requests as r
    JOIN sys.dm_exec_sessions as s on r.session_id=s.session_id
    OUTER APPLY sys.dm_exec_input_buffer (r.session_id,r.request_id) AS i
    WHERE s.is_user_process=1;
    GO
    
    1. Suchen Sie nach Zeilen mit einem blocking_session_id, um blockierte Sitzungen zu identifizieren. Suchen Sie in der Liste nach den einzelnen blocking_session_id Sitzungen, um festzustellen, ob diese Sitzung ebenfalls blockiert ist. Dies führt schließlich zur Kopfblocker. Optimieren Sie die Abfrage „Blockiert andere Prozesse“.

      Hinweis

      Ausführlichere Informationen zur Problembehandlung bei zeitintensiven oder blockierenden Abfragen finden Sie unter Verstehen und Beheben von Problemen durch Blockierungen in Azure SQL-Datenbank.

    2. Um eine große Anzahl von gleichzeitigen Mitarbeitern zu identifizieren, überprüfen Sie die Anzahl der Anforderungen insgesamt und die worker_countSpalte für jede Anforderung. Worker_count ist die Anzahl der Arbeitskräfte zum Zeitpunkt der Stichprobe und kann sich im Laufe der Ausführung der Anforderung ändern. Optimieren Sie Abfragen, um die Ressourcenverwendung zu verringern, wenn die Ursache für steigende Arbeitskräfte gleichzeitige Abfragen sind, die in ihrem optimalen Parallelitätsgrad ausgeführt werden. Weitere Informationen finden Sie unter Abfrageoptimierung/Abfragehinweise.

  2. Werten Sie den maximalen Grad der Parallelitätseinstellung (MAXDOP) für die Datenbank aus.

Erhöhen der Grenzwerte für Mitarbeiter

Wenn die Datenbank oder der Pool für elastische Datenbanken trotz Auflösung möglicher Blockierungen, der Optimierung von Abfragen und der Überprüfung Ihrer MAXDOP-Einstellung fortlaufend den Grenzwert für Worker erreicht, erwägen Sie das Hochskalieren der Datenbank oder des Pools für elastische Datenbanken, um den Workergrenzwert zu erhöhen.

Finden Sie Ressourcengrenzwerte für Azure SQL-Datenbank Dienstebene und Berechnungsgröße:

Erfahren Sie mehr über Azure SQL-Datenbank Ressourcen-Governance von Arbeitskräften.

Fehler 10929: Ressourcen-ID: 1

10929: Resource ID: 1. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. However, the server is currently too busy to support requests greater than %d for this database. See http://go.microsoft.com/fwlink/?LinkId=267637 for assistance. Otherwise, please try again later.

Fehler 40501: Der Dienst ist derzeit ausgelastet

40501: The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d.

Dies ist ein Engine-Einschränkungsfehler. Er weist darauf hin, dass Ressourcenlimits überschritten werden.

Weitere Informationen zu Ressourcenlimits finden Sie unter Ressourcenlimits für Azure SQL-Datenbank und Azure Synapse Analytics-Server.

Fehler 40544: Das Größenkontingent der Datenbank wurde erreicht

40544: The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions. Incident ID: <ID>. Code: <code>.

Dieser Fehler tritt auf, wenn die Datenbank ihr Größenkontingent erreicht hat.

Mithilfe der folgenden Schritte können Sie das Problem umgehen oder mehr Optionen nutzen:

  1. Überprüfen Sie die aktuelle Größe der Datenbank, indem Sie das Dashboard im Azure-Portal verwenden.

    Hinweis

    Um festzustellen, welche Tabellen den meisten Speicherplatz belegen und somit potenzielle Kandidaten für die Bereinigung sind, führen Sie die folgende SQL-Abfrage aus:

    SELECT o.name,
     SUM(p.row_count) AS 'Row Count',
     SUM(p.reserved_page_count) * 8.0 / 1024 AS 'Table Size (MB)'
    FROM sys.objects o
    JOIN sys.dm_db_partition_stats p on p.object_id = o.object_id
    GROUP BY o.name
    ORDER BY [Table Size (MB)] DESC;
    GO
    
  2. Wenn die aktuelle Größe die für Ihre Edition maximal unterstützte Größe nicht überschreitet, können Sie mit ALTER DATABASE die MAXSIZE-Einstellung erhöhen.

  3. Wenn die Datenbank bereits die maximal unterstützte Größe für Ihre Edition überschreitet, können Sie einen oder mehrere der folgenden Schritte probieren:

    • Führen Sie normale Aktivitäten zur Bereinigung der Datenbank aus. Bereinigen Sie beispielsweise die unerwünschten Daten mithilfe von TRUNCATE/DELETE, oder verschieben Sie Daten mithilfe von SQL Server Integration Services (SSIS) oder des Hilfsprogramms zum Massenkopieren (Bulk Copy Program, bcp).
    • Partitionieren oder löschen Sie Daten, löschen Sie Indizes, oder informieren Sie sich in der Dokumentation über mögliche Lösungen.
    • Informationen zur Datenbankskalierung finden Sie unter Skalieren der Ressourcen für einzelne Datenbanken und Skalieren der Ressourcen für Pools für elastische Datenbanken.

Fehler 40549: Sitzung wurde aufgrund einer zeitintensiven Transaktion beendet

40549: Session is terminated because you have a long-running transaction. Try shortening your transaction.

Wenn diese Fehlermeldung wiederholt auftritt, führen Sie die folgenden Schritte aus, um das Problem zu beheben:

  1. Führen Sie die folgende Abfrage aus, um eventuelle geöffnete Sitzungen zu sehen, die für die Spalte duration_ms einen hohen Wert aufweisen.

    SELECT
        r.start_time, DATEDIFF(ms,start_time, SYSDATETIME()) as duration_ms, 
        r.session_id, r.request_id, r.blocking_session_id,  
        r.status, r.command, DB_NAME(r.database_id) AS database_name,
        i.parameters, i.event_info AS input_buffer,
        r.last_wait_type, r.open_transaction_count, r.total_elapsed_time, r.cpu_time,
        r.logical_reads, r.writes, s.login_time, s.login_name, s.program_name, s.host_name
    FROM sys.dm_exec_requests as r
    JOIN sys.dm_exec_sessions as s on r.session_id=s.session_id
    OUTER APPLY sys.dm_exec_input_buffer (r.session_id,r.request_id) AS i
    WHERE s.is_user_process=1
    ORDER BY start_time ASC;
    GO
    

    Sie können Zeilen ignorieren, in denen in der input_bufferSpalte eine Abfrage angezeigt wird, die aus liestsys.fn_MSxe_read_event_stream: Diese Anforderungen sind mit erweiterten Ereignissitzungen verknüpft.

  2. Überprüfen Sie blocking_session_id die Spalte, um zu sehen, ob Blockierung zu langfristigen Transaktionen bei trägt.

    Hinweis

    Weitere Informationen zur Problembehandlung bei Blockierungen in Azure SQL-Datenbank finden Sie unter Verstehen und Beheben von Problemen durch Blockierungen in Azure SQL-Datenbank.

  3. Sie sollten Batchverarbeitung für Ihre Abfragen in Erwägung ziehen. Weitere Informationen finden Sie unter Gewusst wie: Verbessern der Leistung von SQL-Datenbankanwendungen mithilfe von Batchverarbeitung.

Fehler 40551: Die Sitzung wurde aufgrund einer übermäßigen tempdb-Auslastung beendet.

40551: The session has been terminated because of excessive TEMPDB usage. Try modifying your query to reduce the temporary table space usage.

Um dieses Problem zu umgehen, führen Sie die folgenden Schritte aus:

  1. Ändern Sie die Abfragen, um die Verwendung von temporärem Tabellenspeicherplatz zu verringern.
  2. Löschen Sie temporäre Objekte, wenn sie nicht mehr benötigt werden.
  3. Kürzen Sie Tabellen, oder entfernen Sie nicht verwendete Tabellen.

Fehler 40552: Die Sitzung wurde aufgrund übermäßiger Belegung des Speicherplatzes für das Transaktionsprotokoll beendet

40552: The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.

Probieren Sie die folgenden Methoden aus, um dieses Problem zu beheben:

  • Das Problem kann aufgrund von Einfüge-, Aktualisierungs- oder Löschvorgängen auftreten. Versuchen Sie, die Anzahl der Zeilen zu verringern, die sofort ausgeführt werden, indem Sie Batchverarbeitung oder eine Aufteilung in mehrere kleinere Transaktionen implementieren.
  • Das Problem kann aufgrund von Vorgängen zum Neuerstellen des Indexes auftreten. Um dieses Problem zu umgehen, stellen Sie sicher, dass die Anzahl der betroffenen Zeilen in der Tabelle multipliziert mit der durchschnittlichen Größe des aktualisierten Felds in Bytes + 80 kleiner als < 2 Gigabyte (GB) ist.
  • Bei einer Indexneuerstellung muss die durchschnittliche Größe des aktualisierten Felds durch die durchschnittliche Indexgröße ersetzt werden.
  • Weitere Informationen finden Sie unter Problembehandlung für ein vollständiges Transaktionsprotokoll in Azure SQL-Datenbank und Problembehandlung für ein vollständiges Transaktionsprotokoll in Azure SQL Managed Instance.

Fehler 40553: Die Sitzung wurde aufgrund übermäßiger Speicherauslastung beendet

40553: The session has been terminated because of excessive memory usage. Try modifying your query to process fewer rows.

Um dieses Problem zu umgehen, versuchen Sie, die Abfrage zu optimieren.

Eine ausführliche Problembehandlung finden Sie unter Wird meine Abfrage in der Cloud einwandfrei ausgeführt?

Weitere Informationen zu anderen Fehlern im Zusammenhang mit unzureichendem Arbeitsspeicher und Beispielabfragen finden Sie unter Behandeln von Fehlern mit unzureichendem Arbeitsspeicher mit Azure SQL-Datenbanken.

Tabelle mit Fehlermeldungen bezüglich Ressourcenkontrolle

Fehlercode severity BESCHREIBUNG
10928 20 Ressourcen-ID: %d. Das %s-Limit für die Datenbank beträgt %d und wurde erreicht. Unterstützung erhalten Sie unter 'http://go.microsoft.com/fwlink/?LinkId=267637'.

Mit der Ressourcen-ID wird die Ressource angegeben, für die das Limit erreicht wurde. Wenn Ressourcen-ID = 1, gibt dies an, dass ein Mitarbeiterlimit erreicht wurde. Weitere Informationen finden Sie unter Fehler 10928: Ressourcen-ID: 1. Das Anforderungslimit für die Datenbank beträgt %d und wurde erreicht. Wenn Ressourcen-ID = 2, gibt dies an, dass das Sitzungslimit erreicht wurde.

Erfahren Sie mehr über Ressourcensätze:
Logische SQL-Server-Ressourcengrenzen.
DTU-basierte Einschränkungen für einzelne Datenbanken.
V-Kern-basierte Einschränkungen für einzelne Datenbanken.
Übersicht über Ressourcenlimits für verwaltete Azure SQL-Instanzen.
10936 20 Ressourcen-ID: %d. Das %s-Limit für den Pool für elastische Datenbanken beträgt %d und wurde erreicht. Unterstützung erhalten Sie unter 'http://go.microsoft.com/fwlink/?LinkId=267637'.

Mit der Ressourcen-ID wird die Ressource angegeben, für die das Limit erreicht wurde. Wenn Ressourcen-ID = 1, gibt dies an, dass ein Mitarbeiterlimit erreicht wurde. Weitere Informationen finden Sie unter Fehler 10936: Ressourcen-ID: 1. Das Anforderungslimit für den Pool für elastische Datenbanken beträgt %d und wurde erreicht.. Wenn Ressourcen-ID = 2, gibt dies an, dass das Sitzungslimit erreicht wurde.

Erfahren Sie mehr über Ressourcensätze:
Logische SQL-Server-Ressourcengrenzen.
DTU-basierte Einschränkungen für Pools für elastische Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Übersicht über Ressourcenlimits für verwaltete Azure SQL-Instanzen.
10929 20 Ressourcen-ID: %d. Die %s-Mindestgarantie beträgt %d, der maximale Wert beträgt %d und die aktuelle Nutzung für die Datenbank beträgt %d. Der Server ist jedoch derzeit zu stark ausgelastet, um Anforderungen über %d für diese Datenbank zu unterstützen. Mit der Ressourcen-ID wird die Ressource angegeben, für die das Limit erreicht wurde. Bei Arbeitsthreads lautet die Ressourcen-ID „1“. Bei Sitzungen lautet die Ressourcen-ID „2“. Weitere Informationen finden Sie unter:
Logische SQL-Server-Ressourcengrenzen.
DTU-basierte Einschränkungen für einzelne Datenbanken.
DTU-basierte Einschränkungen für Pools für elastische Datenbanken.
V-Kern-basierte Einschränkungen für einzelne Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Übersicht über Ressourcenlimits für verwaltete Azure SQL-Instanzen.
Versuchen Sie es andernfalls später erneut.
40544 20 Das Datenbankkontingent wurde erreicht. Partitionieren oder löschen Sie Daten, löschen Sie Indizes, oder informieren Sie sich in der Dokumentation über mögliche Lösungen. Informationen zur Datenbankskalierung finden Sie unter Skalieren der Ressourcen für einzelne Datenbanken und Skalieren der Ressourcen für Pools für elastische Datenbanken.
40549 16 Die Sitzung wird aufgrund einer Transaktion mit langer Laufzeit beendet. Verkürzen Sie die Transaktion. Weitere Informationen finden Sie unter Gewusst wie: Verbessern der Leistung von SQL-Datenbankanwendungen mithilfe von Batchverarbeitung.
40550 16 Die Sitzung wurde beendet, da zu viele Sperren abgerufen wurden. Reduzieren Sie die Anzahl der in einer einzelnen Transaktion gelesenen oder geänderten Zeilen. Weitere Informationen finden Sie unter Gewusst wie: Verbessern der Leistung von SQL-Datenbankanwendungen mithilfe von Batchverarbeitung.
40551 16 Die Sitzung wurde aufgrund übermäßiger tempdb -Auslastung beendet. Ändern Sie die Abfrage, um die Verwendung des temporären Tabellenbereichs zu verringern.

Wenn Sie temporäre Objekte verwenden, können Sie Speicherplatz in der tempdb-Datenbank sparen, indem Sie die temporären Objekte verwerfen, die von der Sitzung nicht mehr benötigt werden. Weitere Informationen zu Grenzwerten für tempdb in SQL-Datenbank finden Sie unter tempdb-Datenbank in SQL-Datenbank.
40552 16 Die Sitzung wurde aufgrund übermäßiger Verwendung des Speicherplatzes für das Transaktionsprotokoll beendet. Reduzieren Sie die Anzahl der in einer einzelnen Transaktion geänderten Zeilen. Weitere Informationen finden Sie unter Gewusst wie: Verbessern der Leistung von SQL-Datenbankanwendungen mithilfe von Batchverarbeitung.

Versuchen Sie beim Durchführen von Masseneinfügungen mit dem Hilfsprogramm bcp.exe oder der System.Data.SqlClient.SqlBulkCopy-Klasse, die Option -b batchsize oder BatchSize zu verwenden, um die Anzahl der Zeilen zu beschränken, die bei jeder Transaktion auf den Server kopiert werden. Versuchen Sie es mit der Option REBUILD WITH ONLINE = ON, wenn Sie einen Index mit der ALTER INDEX-Anweisung neu erstellen. Informationen zu den Größen von Transaktionsprotokollen für das V-Kern-basierte Kaufmodell finden Sie unter:
V-Kern-basierte Einschränkungen für einzelne Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Übersicht über Ressourcenlimits für verwaltete Azure SQL-Instanzen.
40553 16 Die Sitzung wurde aufgrund übermäßiger Speicherauslastung beendet. Ändern Sie die Abfrage, damit weniger Zeilen verarbeitet werden.

Wenn Sie die Anzahl von ORDER BY- und GROUP BY-Vorgängen im Transact-SQL-Code reduzieren, verringern sich auch die Arbeitsspeicheranforderungen Ihrer Abfrage. Informationen zur Datenbankskalierung finden Sie unter Skalieren der Ressourcen für einzelne Datenbanken und Skalieren der Ressourcen für Pools für elastische Datenbanken. Weitere Informationen zu Fehlern im Zusammenhang mit unzureichendem Arbeitsspeicher und Beispielabfragen finden Sie unter Behandeln von Fehlern mit unzureichendem Arbeitsspeicher mit Azure SQL-Datenbanken.

Fehler im Zusammenhang mit Pools für elastische Datenbanken

Die folgenden Fehler beziehen sich auf die Erstellung und Verwendung von Pools für elastische Datenbanken:

Fehlercode severity BESCHREIBUNG Korrekturmaßnahme
1132 17 Der Speichergrenzwert des Pools für elastische Datenbanken wurde erreicht. Die Speicherauslastung für den Pool für elastische Datenbanken darf (%d) MB nicht überschreiten. Es wurde versucht, Daten in eine Datenbank zu schreiben, während die Speicherbegrenzung des Pools für elastische Datenbanken erreicht wurde. Informationen zu Ressourceneinschränkungen finden Sie unter:
DTU-basierte Einschränkungen für Pools für elastische Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Erhöhen Sie nach Möglichkeit die DTUs des Pools für elastische Datenbanken und/oder fügen Sie ihm Speicher hinzu, um die Speicherkapazität zu erweitern, reduzieren Sie die Speichernutzung der einzelnen Datenbanken innerhalb des Pools für elastische Datenbanken, oder entfernen Sie Datenbanken aus dem Pools für elastische Datenbanken. Informationen zur Skalierung von Pools für elastische Datenbanken finden Sie unter Skalieren von Ressourcen für Pools für elastische Datenbanken. Weitere Informationen zum Entfernen von nicht verwendetem Speicherplatz aus Datenbanken finden Sie unter Verwalten von Dateispeicherplatz für Datenbanken in Azure SQL-Datenbank.
10929 16 Die %s-Mindestgarantie beträgt %d, der maximale Wert beträgt %d und die aktuelle Nutzung für die Datenbank beträgt %d. Der Server ist jedoch derzeit zu stark ausgelastet, um Anforderungen über %d für diese Datenbank zu unterstützen. Informationen zu Ressourceneinschränkungen finden Sie unter:
DTU-basierte Einschränkungen für Pools für elastische Datenbanken.
V-Kern-basierte Einschränkungen für Pools für elastische Datenbanken.
Versuchen Sie es andernfalls später erneut. DTU-/V-Kern-Mindestanzahl pro Datenbank; DTU-/V-Kern-Höchstanzahl pro Datenbank Die Gesamtanzahl der gleichzeitigen Worker in allen Datenbanken im Pool für elastische Datenbanken hat versucht, den Poolgrenzwert zu überschreiten.
Erhöhen Sie nach Möglichkeit die Anzahl von DTUs oder V-Kernen des Pools für elastische Datenbanken, um die Begrenzung für Worker zu steigern, oder entfernen Sie Datenbanken aus dem Pool für elastische Datenbanken.
40844 16 Datenbank „%Ls“ auf Server „%ls“ ist eine Datenbank der „%ls“-Edition in einem Pool für elastische Datenbanken und kann nicht über eine fortlaufende Kopierbeziehung verfügen.
40857 16 Der Pool für elastische Datenbanken wurde für folgenden Server nicht gefunden: „%ls“, Name des Pools für elastische Datenbanken: „%ls“. Der angegebene Pool für elastische Datenbanken ist nicht auf dem angegebenen Server vorhanden. Geben Sie einen gültigen Namen für den Pool für elastische Datenbanken an.
40858 16 Der Pool für elastische Datenbanken „%ls“ ist bereits auf folgendem Server vorhanden: „%ls“. Der angegebene Pool für elastische Datenbanken ist auf dem angegebenen Server bereits vorhanden. Geben Sie einen neuen Namen für den Pool für elastische Datenbanken an.
40859 16 Der Pool für elastische Datenbanken unterstützt Dienstebene „%ls“ nicht. Die angegebene Dienstebene wird für die Bereitstellung von Pools für elastische Datenbanken nicht unterstützt. Geben Sie die richtige Edition an, oder lassen Sie die Dienstebene leer, um die Standarddienstebene zu verwenden.
40860 16 Die Kombination aus dem Pool für elastische Datenbanken „%ls“ und Dienstziel „%ls“ ist ungültig. Der Pool für elastische Datenbanken und die Dienstebene können nur gemeinsam angegeben werden, wenn der Ressourcentyp „ElasticPool“ definiert ist. Geben Sie die richtige Kombination aus Pool für elastische Datenbanken und Dienstebene an.
40861 16 Die Datenbankedition „%.*ls“ darf sich nicht von der Dienstebene des Pools für elastische Datenbanken („%.*ls“) unterscheiden. Die Datenbankedition unterscheidet sich von der Dienstebene des Pools für elastische Datenbanken. Geben Sie keine Datenbankedition an, die sich von der Dienstebene des Pools für elastische Datenbanken unterscheidet. Beachten Sie, dass die Datenbankedition nicht angegeben werden muss.
40862 16 Der Name des Pools für elastische Datenbanken muss angegeben werden, wenn das Dienstziel des Pools für elastische Datenbanken angegeben wurde. Das Dienstziel des Pools für elastische Datenbanken identifiziert einen Pool für elastische Datenbanken nicht eindeutig. Geben Sie den Namen des Pools für elastische Datenbanken an, wenn Sie das Dienstziel des Pools für elastische Datenbanken verwenden.
40864 16 Die DTU-Anzahl für den Pool für elastische Datenbanken muss mindestens (%d) DTUs für die Dienstebene „%.*ls“ betragen. Es wurde versucht, eine DTU-Anzahl für den Pool für elastische Datenbanken unterhalb des unteren Grenzwerts festzulegen. Legen Sie die DTU-Einstellung für den Pool für elastische Datenbanken mindestens auf die Untergrenze fest.
40865 16 Die DTU-Anzahl für den Pool für elastische Datenbanken darf höchstens (%d) DTUs für die Dienstebene „%.*ls“ betragen. Es wurde versucht, eine DTU-Anzahl für den Pool für elastische Datenbanken oberhalb des oberen Grenzwerts festzulegen. Legen Sie die DTU-Einstellung für den Pool für elastische Datenbanken höchstens auf die Obergrenze fest.
40867 16 Die maximalen DTUs pro Datenbank müssen mindestens (%d) für Dienstebene "%.*ls" betragen. Es wurde versucht, eine maximale DTU-Anzahl pro Datenbank festzulegen, die unter der unterstützten Grenze liegt. Sie sollten in Betracht ziehen, die Dienstebene des Pools für elastische Datenbanken zu verwenden, die die gewünschte Einstellung unterstützt.
40868 16 Die maximale DTU-Anzahl pro Datenbank kann nicht mehr als (%d) für Dienstebene "%.*ls" betragen. Es wurde versucht, eine maximale DTU-Anzahl pro Datenbank festzulegen, die über der unterstützten Grenze liegt. Sie sollten in Betracht ziehen, die Dienstebene des Pools für elastische Datenbanken zu verwenden, die die gewünschte Einstellung unterstützt.
40870 16 Die minimale DTU-Anzahl pro Datenbank kann nicht mehr als (%d) für Dienstebene "%.*ls" betragen. Es wurde versucht, eine minimale DTU-Anzahl pro Datenbank festzulegen, die über der unterstützten Grenze liegt. Sie sollten in Betracht ziehen, die Dienstebene des Pools für elastische Datenbanken zu verwenden, die die gewünschte Einstellung unterstützt.
40873 16 Die Anzahl der Datenbanken (%d) und minimalen DTUs pro Datenbank (%d) darf die DTU-Anzahl des Pools für elastische Datenbanken (%d) nicht überschreiten. Es wurde versucht, eine Mindestanzahl von DTUs für den Pool für elastische Datenbanken anzugeben, die die DTU-Anzahl des Pools für elastische Datenbanken überschreitet. Sie sollten in Betracht ziehen, die Anzahl der DTUs im Pool für elastische Datenbanken zu erhöhen oder die Mindestanzahl der DTUs pro Datenbank zu verringern, oder Sie verringern die Anzahl der Datenbanken im Pool für elastische Datenbanken.
40877 16 Ein Pool für elastische Datenbanken kann nur gelöscht werden, wenn er keine Datenbanken enthält. Der Pool für elastische Datenbanken enthält eine oder mehrere Datenbanken und kann nicht gelöscht werden. Entfernen Sie Datenbanken aus dem Pool für elastische Datenbanken, um ihn zu löschen.
40881 16 Der Pool für elastische Datenbanken „%.*ls“ hat den Grenzwert für die Anzahl an Datenbanken erreicht. Der Grenzwert für die Datenbankanzahl im Pool für elastische Datenbanken darf (%d) für einen Pool für elastische Datenbanken mit (%d) DTUs nicht überschreiten. Es wurde versucht, eine Datenbank zu erstellen oder zum Pool für elastische Datenbanken hinzuzufügen, während der Grenzwert für die Datenbankanzahl des Pools für elastische Datenbanken erreicht wurde. Erhöhen Sie nach Möglichkeit die DTU-Anzahl des Pools für elastische Datenbanken, um die Begrenzung für Datenbanken zu steigern, oder entfernen Sie Datenbanken aus dem Pool für elastische Datenbanken.
40889 16 Die Begrenzung für DTUs oder Speicher für den Pool für elastische Datenbanken „%.*ls“ kann nicht verkleinert werden, da nicht genügend Speicherplatz für die Datenbanken verfügbar wäre. Es wurde versucht, die Speicherbegrenzung des Pools für elastische Datenbanken unter die Speicherauslastung zu verringern. Reduzieren Sie die Speicherauslastung der einzelnen Datenbanken im Pool für elastische Datenbanken, oder entfernen Sie Datenbanken aus dem Pool, um die DTUs oder Speicherbegrenzung zu verringern.
40891 16 Die Mindestanzahl von DTUs pro Datenbank (%d) darf die Höchstanzahl von DTUs pro Datenbank (%d) nicht überschreiten. Es wurde versucht, die DTU-Mindestanzahl pro Datenbank höher festzulegen, als die maximale DTU-Anzahl pro Datenbank. Stellen Sie sicher, dass die Mindestanzahl von DTUs pro Datenbank nicht die Höchstanzahl von DTUs pro Datenbank überschreitet.
TBD 16 Die Speichergröße für eine einzelne Datenbank in einem Pool für elastische Datenbanken darf die maximal zulässige Größe für die Dienstebene des Pools für elastische Datenbanken „%.*ls“ nicht überschreiten. Die maximale Größe der Datenbank überschreitet die maximale Größe, die von der Dienstebene des Pools für elastische Datenbanken zugelassen wird. Legen Sie die maximale Größe der Datenbank höchstens auf die maximal zulässige Größe der Dienstebene des Pools für elastische Datenbanken fest.

Der von der Anmeldung angeforderte „Master“ der Datenbank kann nicht geöffnet werden. Die Anmeldung ist fehlgeschlagen.

Dieses Problem tritt auf, weil das Konto keine Zugriffsberechtigungen für die master-Datenbank hat. SQL Server Management Studio (SSMS) versucht jedoch standardmäßig, eine Verbindung mit der master-Datenbank herzustellen.

Gehen Sie folgendermaßen vor, um das Problem zu beheben:

  1. Klicken Sie auf dem Anmeldebildschirm von SSMS auf Optionen und dann auf Verbindungseigenschaften.

  2. Geben Sie in das Feld Verbindung mit Datenbank herstellen den standardmäßigen Datenbanknamen des Benutzers als standardmäßige Anmeldedatenbank ein, und wählen Sie dann Verbinden aus.

    Connection properties

Schreibschutzfehler

Wenn Sie versuchen, in eine schreibgeschützte Datenbank zu schreiben, erhalten Sie eine Fehlermeldung. In einigen Szenarien ist die Ursache für den Schreibschutz der Datenbank möglicherweise nicht sofort ersichtlich.

Fehler 3906: Fehler beim Aktualisieren der Datenbank „Name_der_Datenbank“, weil die Datenbank schreibgeschützt ist

Beim Versuch, eine schreibgeschützte Datenbank zu ändern, wird der folgende Fehler ausgelöst.

Msg 3906, Level 16, State 2, Line 1
Failed to update database "%d" because the database is read-only.

Möglicherweise sind Sie mit einem schreibgeschützten Replikat verbunden

Sowohl bei Azure SQL-Datenbank als auch bei Azure SQL Managed Instance können Sie über ein schreibgeschütztes Replikat mit einer Datenbank verbunden sein. In diesem Fall gibt die folgende Abfrage mit Verwendung der DATABASEPROPERTYEX()-Funktion READ_ONLY zurück:

SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability');
GO

Wenn Sie eine Verbindung mithilfe von SQL Server Management Studio herstellen, überprüfen Sie, ob Sie auf der Registerkarte Zusätzliche Verbindungsparameterin Ihren Verbindungsoptionen den Parameter ApplicationIntent=ReadOnly angegeben haben.

Wenn die Verbindung über eine Anwendung oder einen Client unter Verwendung einer Verbindungszeichenfolge hergestellt wird, überprüfen Sie, ob in der Verbindungszeichenfolge ApplicationIntent=ReadOnly angegeben wurde. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit einem schreibgeschützten Replikat.

Die Datenbank wurde möglicherweise als schreibgeschützt festgelegt

Wenn Sie die Azure SQL-Datenbank verwenden, wurde die Datenbank selbst möglicherweise als schreibgeschützt festgelegt. Sie können den Status der Datenbank mithilfe der folgenden Abfrage überprüfen:

SELECT name, is_read_only
FROM sys.databases
WHERE database_id = DB_ID();

Sie können den schreibgeschützten Status für eine Datenbank in Azure SQL-Datenbank unter Verwendung von ALTER DATABASE Transact-SQL ändern. Derzeit ist es nicht möglich, eine Datenbank in einer verwalteten Instanz als schreibgeschützt festzulegen.

Bestätigen, dass ein Fehler von einem Konnektivitätsproblem verursacht wird

Um zu bestätigen, dass ein Fehler durch ein Verbindungsproblem verursacht wird, überprüfen Sie die Stapelüberwachung für Frames, die Aufrufe zum Öffnen einer Verbindung wie die folgenden anzeigen (beachten Sie den Verweis auf die SqlConnection-Klasse):

System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
 at System.Data.SqlClient.SqlConnection.Open()
 at AzureConnectionTest.Program.Main(String[] args)
ClientConnectionId:<Client connection ID>

Wenn die Ausnahme durch Abfrageprobleme ausgelöst wird, ähnelt der Aufrufstapel dem folgenden (beachten Sie den Verweis auf die SqlCommand-Klasse). Optimieren Sie Ihre Abfragen in dieser Situation.

  at System.Data.SqlClient.SqlCommand.ExecuteReader()
  at AzureConnectionTest.Program.Main(String[] args)
  ClientConnectionId:<Client ID>

Weitere Anleitungen zum Optimieren der Leistung finden Sie in den folgenden Ressourcen:

Schritte zum Beheben häufiger Verbindungsprobleme

  1. Stellen Sie sicher, dass TCP/IP auf dem Anwendungsserver als Clientprotokoll aktiviert ist. Weitere Informationen finden Sie unter Konfigurieren von Clientprotokollen. Überprüfen Sie auf Anwendungsservern, auf denen keine SQL-Tools installiert sind, ob TCP/IP aktiviert ist, indem Sie cliconfg.exe (Hilfsprogramm für das SQL Server-Clientnetzwerk) ausführen.

  2. Stellen Sie sicher, dass die Verbindungszeichenfolge der Anwendung ordnungsgemäß konfiguriert ist. Stellen Sie z. B. sicher, dass in der Verbindungszeichenfolge der richtige Port (1433) und der vollqualifizierte Servername angegeben sind. Weitere Informationen finden Sie unter Abrufen von Verbindungsinformationen.

  3. Versuchen Sie, den Wert für das Verbindungstimeout zu erhöhen. Wir empfehlen ein Verbindungstimeout von mindestens 30 Sekunden.

  4. Testen Sie die Konnektivität zwischen dem Anwendungsserver und der Azure SQL-Datenbank-Instanz, indem Sie SQL Server Management Studio (SSMS), eine UDL-Datei, Ping oder Telnet verwenden. Weitere Informationen finden Sie unter Beheben von Fehlern bei der Konnektivität mit SQL Server und Diagnose bei Verbindungsproblemen.

    Hinweis

    Als Problembehandlungsschritt können Sie die Konnektivität auch auf einem anderen Clientcomputer testen.

  5. Stellen Sie als bewährte Methode sicher, dass die Wiederholungslogik vorhanden ist. Weitere Informationen zur Wiederholungslogik finden Sie unter Arbeiten mit Verbindungsproblemen und vorübergehenden Fehlern bei SQL-Datenbank.

Wenn Ihr Problem mit diesen Schritten nicht behoben werden kann, versuchen Sie, weitere Daten zu erfassen, und wenden Sie sich dann an den Support. Wenn es sich bei Ihrer Anwendung um einen Clouddienst handelt, aktivieren Sie die Protokollierung. Dieser Schritt gibt einen UTC-Zeitstempel des Fehlers zurück. Außerdem gibt SQL-Datenbank die Ablaufverfolgungs-ID zurück. Microsoft Customer Support Services kann diese Informationen verwenden.

Weitere Informationen zum Aktivieren der Protokollierung finden Sie unter Aktivieren der Diagnoseprotokollierung für Web-Apps in Azure App Service.

Nächste Schritte

Weitere Informationen zu verwandten Themen finden Sie in den folgenden Artikeln: