Diagnoseverbindung für DatenbankadministratorenDiagnostic Connection for Database Administrators

Gilt für: JaSQL Server JaAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server stellt eine spezielle Diagnoseverbindung für Administratoren bereit, wenn Standardverbindungen zum Server nicht möglich sind.provides a special diagnostic connection for administrators when standard connections to the server are not possible. Mit dieser Diagnoseverbindung kann ein Administrator auf SQL ServerSQL Server zugreifen, um Diagnoseabfragen auszuführen und Probleme zu behandeln, auch wenn SQL ServerSQL Server auf Anforderungen von Standardverbindungen nicht antwortet.This diagnostic connection allows an administrator to access SQL ServerSQL Server to execute diagnostic queries and troubleshoot problems even when SQL ServerSQL Server is not responding to standard connection requests.

Diese dedizierte Administratorverbindung unterstützt die Verschlüsselung und andere Sicherheitsfunktionen von SQL ServerSQL Server.This dedicated administrator connection (DAC) supports encryption and other security features of SQL ServerSQL Server. Die DAC lässt den Wechsel des Benutzerkontexts ausschließlich in den eines anderen Administrators zu.The DAC only allows changing the user context to another admin user.

SQL ServerSQL Server versucht alles, damit die DAC (Dedicated Administrator Connection, dedizierte Administratorverbindung) erfolgreich eine Verbindung herstellt, doch unter extremen Bedingungen ist dies eventuell nicht möglich.makes every attempt to make DAC connect successfully, but under extreme situations it may not be successful.

Gilt für: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 und höher), SQL-DatenbankSQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 and later), SQL-DatenbankSQL Database.

Herstellen einer dedizierten AdministratorverbindungConnecting with DAC

Standardmäßig ist die Verbindung nur von einem Client aus zulässig, der auf dem Server ausgeführt wird.By default, the connection is only allowed from a client running on the server. Netzwerkverbindungen sind nur dann zulässig, wenn sie mithilfe der gespeicherten Prozedur „sp_configure“ mit der Option remote admin connectionskonfiguriert wurden.Network connections are not permitted unless they are configured by using the sp_configure stored procedure with the remote admin connections option.

Nur Mitglieder der SQL ServerSQL Server -Rolle sysadmin können dedizierte Administratorverbindungen (DAC) herstellen.Only members of the SQL ServerSQL Server sysadmin role can connect using the DAC.

Die DAC steht über das sqlcmd -Hilfsprogramm für Eingabeaufforderungen mit einem speziellen Administratorschalter ( -A) zur Verfügung und wird von diesem unterstützt.The DAC is available and supported through the sqlcmd command-prompt utility using a special administrator switch (-A). Weitere Informationen zum Verwenden von sqlcmd finden Sie unter Verwenden von sqlcmd mit Skriptvariablen.For more information about using sqlcmd, see Use sqlcmd with Scripting Variables. Sie können die Verbindung auch herstellen, indem Sie dem Instanznamen admin: im folgenden Format voranstellen: sqlcmd S admin:<Instanzname> .You can also connect prefixing admin: to the instance name in the format sqlcmd -S admin:<instance_name>. Alternativ können Sie auch eine Datenschichtanwendung (DAC) in einem SQL Server Management StudioSQL Server Management Studio-Abfrage-Editor initiieren, indem Sie eine Verbindung mit admin:<Instanzname> herstellen.You can also initiate a DAC from a SQL Server Management StudioSQL Server Management Studio Query Editor by connecting to admin:<instance_name>.

BeschränkungenRestrictions

Da die DAC nur zum Diagnostizieren von Serverproblemen in seltenen Fällen gedacht ist, bestehen einige Einschränkungen für die Verbindung:Because the DAC exists solely for diagnosing server problems in rare circumstances, there are some restrictions on the connection:

  • Um sicherzustellen, dass Ressourcen für die Verbindung verfügbar sind, ist nur eine DAC pro Instanz von SQL ServerSQL Serverzulässig.To guarantee that there are resources available for the connection, only one DAC is allowed per instance of SQL ServerSQL Server. Ist bereits eine dedizierte Administratorverbindung aktiv, wird jede weitere Anforderung einer Verbindung über DAC mit Fehler 17810 abgelehnt.If a DAC connection is already active, any new request to connect through the DAC is denied with error 17810.

  • Zur Einsparung von Ressourcen lauscht SQL Server ExpressSQL Server Express am DAC-Port nur dann, wenn beim Starten das Ablaufverfolgungsflag 7806 angegeben wird.To conserve resources, SQL Server ExpressSQL Server Express does not listen on the DAC port unless started with a trace flag 7806.

  • Die DAC versucht zunächst, eine Verbindung zu der Standarddatenbank herzustellen, die dem Anmeldenamen zugeordnet ist.The DAC initially attempts to connect to the default database associated with the login. Nach erfolgreichem Verbindungsaufbau können Sie eine Verbindung mit der master-Datenbank herstellen.After it is successfully connected, you can connect to the master database. Wenn die Standarddatenbank offline oder aus anderen Gründen nicht verfügbar ist, wird von der Verbindung der Fehler 4060 zurückgegeben.If the default database is offline or otherwise not available, the connection will return error 4060. Die Verbindung kann jedoch hergestellt werden, wenn Sie die Standarddatenbank überschreiben und stattdessen mithilfe des folgenden Befehls eine Verbindung mit der master-Datenbank herstellen:However, it will succeed if you override the default database to connect to the master database instead using the following command:

    sqlcmd -A -d mastersqlcmd -A -d master

    Es wird empfohlen, die dedizierte Administratorverbindung mit der master-Datenbank herzustellen, da diese sicher verfügbar ist, wenn die Instanz von Datenbank-EngineDatabase Engine gestartet ist.We recommend that you connect to the master database with the DAC because master is guaranteed to be available if the instance of the Datenbank-EngineDatabase Engine is started.

  • SQL ServerSQL Server verhindert die Ausführung paralleler Abfragen oder Befehle über die DAC.prohibits running parallel queries or commands with the DAC. So wird beispielsweise Fehler 3637 generiert, wenn Sie eine der folgenden Anweisungen über die DAC ausführen:For example, error 3637 is generated if you execute either of the following statements with the DAC:

    • RESTORERESTORE

    • BACKUPBACKUP

  • Bei einer DAC ist nur die Verfügbarkeit beschränkter Ressourcen sichergestellt.Only limited resources are guaranteed to be available with the DAC. Führen Sie über die DAC keine ressourcenintensiven Abfragen (z. B.Do not use the DAC to run resource-intensive queries (for example. eine komplexe Verknüpfung in einer großen Tabelle) oder Abfragen aus, die eine Blockierung verursachen können.a complex join on large table) or queries that may block. Dies trägt dazu bei, zu verhindern, dass vorhandene Serverprobleme durch die DAC verstärkt werden.This helps prevent the DAC from compounding any existing server problems. Zur Vermeidung möglicher Blockierungssituationen müssen Sie ggf. Abfragen, die eine Blockierung verursachen können, möglichst auf momentaufnahmebasierten Isolationsstufen ausführen. Ist dies nicht möglich, sollten Sie die Transaktionsisolationsstufe auf READ UNCOMMITTED festlegen und/oder den LOCK_TIMEOUT-Wert auf eine kurze Zeitspanne, beispielsweise 2000 Millisekunden, festlegen.To avoid potential blocking scenarios, if you have to run queries that may block, run the query under snapshot-based isolation levels if possible; otherwise, set the transaction isolation level to READ UNCOMMITTED and set the LOCK_TIMEOUT value to a short value such as 2000 milliseconds, or both. Dies verhindert, dass die DAC-Sitzung blockiert wird.This will prevent the DAC session from getting blocked. Abhängig vom Status von SQL ServerSQL Server kann die DAC-Sitzung jedoch durch ein Latch blockiert werden.However, depending on the state that the SQL ServerSQL Server is in, the DAC session might get blocked on a latch. Möglicherweise können Sie die DAC-Sitzung mit STRG+C beenden, dies ist jedoch nicht sichergestellt.You might be able to terminate the DAC session using CTRL-C but it is not guaranteed. In diesem Fall ist unter Umständen der Neustart von SQL ServerSQL Serverunumgänglich.In that case, your only option may be to restart SQL ServerSQL Server.

  • Um die Konnektivität und die Problembehandlung mit der DAC sicherzustellen, reserviert SQL ServerSQL Server beschränkte Ressourcen für die Verarbeitung von Befehlen, die in der DAC ausgeführt werden.To guarantee connectivity and troubleshooting with the DAC, SQL ServerSQL Server reserves limited resources to process commands run on the DAC. Diese Ressourcen sind in der Regel nur für einfache Diagnose- und Problembehandlungsfunktionen wie die unten aufgeführten ausreichend.These resources are typically only enough for simple diagnostic and troubleshooting functions, such as those listed below.

Obwohl Sie über die DAC theoretisch jede Transact-SQLTransact-SQL -Anweisung ausführen können, die nicht parallel ausgeführt werden muss, wird dringend empfohlen, nur die folgenden Diagnose- und Problembehandlungsbefehle zu verwenden:Although you can theoretically run any Transact-SQLTransact-SQL statement that does not have to execute in parallel on the DAC, we strongly recommend that you restrict usage to the following diagnostic and troubleshooting commands:

  • Abfragen von dynamischen Verwaltungssichten für grundlegende Diagnosen, wie z.B. sys.dm_tran_locks für den Sperrstatus, sys.dm_os_memory_cache_counters für die Zustandsüberprüfung der Caches sowie sys.dm_exec_requests und sys.dm_exec_sessions für aktive Sitzungen und Anforderungen.Querying dynamic management views for basic diagnostics such as sys.dm_tran_locks for the locking status, sys.dm_os_memory_cache_counters to check the health of caches, and sys.dm_exec_requests and sys.dm_exec_sessions for active sessions and requests. Vermeiden Sie dynamische Verwaltungssichten, die ressourcenintensiv sind (beispielsweise durchsucht sys.dm_tran_version_store den gesamten Versionsspeicher und kann umfangreiche E/A-Vorgänge verursachen) oder komplexe Joins verwenden.Avoid dynamic management views that are resource intensive (for example, sys.dm_tran_version_store scans the full version store and can cause extensive I/O) or that use complex joins. Informationen zu den Auswirkungen auf die Leistung finden Sie in der Dokumentation der jeweiligen dynamischen Verwaltungssicht.For information about performance implications, see the documentation for the specific dynamic management view.

  • Abfragen von Katalogsichten.Querying catalog views.

  • Grundlegende DBCC-Befehle wie DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS und DBCC SQLPERF.Basic DBCC commands such as DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, and DBCC SQLPERF. Führen Sie keine ressourcenintensiven Befehle wie DBCC CHECKDB, DBCC DBREINDEX oder DBCC SHRINKDATABASE aus.Do not run resource-intensive commands such as DBCC CHECKDB, DBCC DBREINDEX, or DBCC SHRINKDATABASE.

  • Transact-SQLTransact-SQL KILL <spid> -Befehl.KILL*<spid>* command. Abhängig vom Status von SQL ServerSQL Serverist der KILL-Befehl nicht immer erfolgreich; dann ist ein Neustart von SQL ServerSQL Serverunumgänglich.Depending on the state of SQL ServerSQL Server, the KILL command might not always succeed; then the only option may be to restart SQL ServerSQL Server. Es folgen einige allgemeine Richtlinien:The following are some general guidelines:

    • Überprüfen Sie mit der Abfrage SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>, ob SPID tatsächlich beendet wurde.Verify that the SPID was actually killed by querying SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>. Wenn keine Zeilen zurückgegeben werden, wurde die Sitzung beendet.If it returns no rows, it means the session was killed.

    • Ist die Sitzung noch vorhanden, sollten Sie überprüfen, ob der Sitzung Tasks zugewiesen sind. Führen Sie dazu die Abfrage SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>aus.If the session is still there, verify whether there are tasks assigned to this session by running the query SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>. Wird der Task dort angezeigt, wird die Sitzung wahrscheinlich gerade beendet.If you see the task there, most likely your session is currently being killed. Beachten Sie, dass die Abfrage möglicherweise erhebliche Zeit in Anspruch nimmt und unter Umständen nicht erfolgreich ist.Note that this may take considerable amount of time and may not succeed at all.

    • Enthält die dieser Sitzung zugeordnete sys.dm_os_tasks-Sicht keine Tasks, während die Sitzung nach der Ausführung des KILL-Befehls in sys.dm_exec_sessions verbleibt, bedeutet dies, dass kein Arbeitsthread verfügbar ist.If there are no tasks in the sys.dm_os_tasks associated with this session, but the session remains in sys.dm_exec_sessions after executing the KILL command, it means that you do not have a worker available. Wählen Sie einen der aktuell ausgeführten Tasks aus (einen Task in der sys.dm_os_tasks-Sicht mit sessions_id <> NULL), und beenden Sie die diesem zugeordnete Sitzung, um den Arbeitsthread freizugeben.Select one of the currently running tasks (a task listed in the sys.dm_os_tasks view with a sessions_id <> NULL), and kill the session associated with it to free up the worker. Beachten Sie, dass das Beenden einer einzelnen Sitzung möglicherweise nicht ausreicht. Unter Umständen müssen Sie mehrere Sitzungen beenden.Note that it may not be enough to kill a single session: you may have to kill multiple ones.

DAC-PortDAC Port

SQL ServerSQL Server lauscht am TCP-Port 1434 (sofern verfügbar) oder einem TCP-Port, der beim Starten von Datenbank-EngineDatabase Engine dynamisch zugewiesen wurde, auf eine DAC.listens for the DAC on TCP port 1434 if available or a TCP port dynamically assigned upon Datenbank-EngineDatabase Engine startup. Das Fehlerprotokoll enthält die Nummer des Ports, an dem der DAC lauscht.The error log contains the port number the DAC is listening on. Standardmäßig nimmt die DAC-Überwachung nur am lokalen Port Verbindungen an.By default the DAC listener accepts connection on only the local port. Ein Codebeispiel zum Aktivieren von Remoteverwaltungsverbindungen finden Sie unter Remoteadministratorverbindungen (Serverkonfigurationsoption).For a code sample that activates remote administration connections, see remote admin connections Server Configuration Option.

Nachdem die Remoteverwaltungsverbindung konfiguriert wurde, wird die DAC-Überwachung aktiviert, ohne dass ein Neustart von SQL ServerSQL Server erforderlich ist. Jetzt kann ein Client remote eine DAC herstellen.After the remote administration connection is configured, the DAC listener is enabled without requiring a restart of SQL ServerSQL Server and a client can now connect to the DAC remotely. Sie können die DAC-Überwachung für die Annahme von Remoteverbindungen auch dann aktivieren, wenn SQL ServerSQL Server nicht reagiert, indem Sie zunächst unter lokaler Verwendung der DAC eine Verbindung mit SQL ServerSQL Server herstellen und dann die gespeicherte Prozedur sp_configure ausführen, sodass Verbindungen über Remoteverbindungen angenommen werden.You can enable the DAC listener to accept connections remotely even if SQL ServerSQL Server is unresponsive by first connecting to SQL ServerSQL Server using the DAC locally, and then executing the sp_configure stored procedure to accept connection from remote connections.

In Clusterkonfigurationen ist die DAC standardmäßig deaktiviert.On cluster configurations, the DAC will be off by default. Benutzer können die remote admin connection-Option von sp_configure verwenden, um den Zugriff der DAC-Überwachung auf eine Remoteverbindung zu aktivieren.Users can execute the remote admin connection option of sp_configure to enable the DAC listener to access a remote connection. Wenn SQL ServerSQL Server nicht reagiert und die DAC-Überwachung nicht aktiviert ist, müssen Sie möglicherweise SQL ServerSQL Server neu starten, um eine Verbindung mit der DAC herzustellen.If SQL ServerSQL Server is unresponsive and the DAC listener is not enabled, you might have to restart SQL ServerSQL Server to connect with the DAC. Deshalb wird empfohlen, die Konfigurationsoption remote admin connections in Clustersystemen zu aktivieren.Therefore, we recommend that you enable the remote admin connections configuration option on clustered systems.

Der DAC-Port wird dynamisch von SQL ServerSQL Server beim Start zugewiesen.The DAC port is assigned dynamically by SQL ServerSQL Server during startup. Beim Herstellen der Verbindung mit der Standardinstanz vermeidet die DAC die Verwendung einer SSRP-Anforderung ( SQL ServerSQL Server Resolution Protocol) an den SQL Server-Browser-Dienst.When connecting to the default instance, the DAC avoids using a SQL ServerSQL Server Resolution Protocol (SSRP) request to the SQL Server Browser Service when connecting. Zunächst wird eine Verbindung über den TCP-Port 1434 hergestellt.It first connects over TCP port 1434. Tritt dabei ein Fehler auf, wird ein SSRP-Aufruf ausgegeben, um den Port abzurufen.If that fails, it makes an SSRP call to get the port. Falls der SQL ServerSQL Server -Browser SSRP-Anforderungen nicht überwacht, gibt die Verbindungsanforderung einen Fehler zurück.If SQL ServerSQL Server Browser is not listening for SSRP requests, the connection request returns an error. Suchen Sie im Fehlerprotokoll nach der Portnummer, die von der DAC überwacht wird.Refer to the error log to find the port number DAC is listening on. Wenn SQL ServerSQL Server für die Annahme von Remoteverwaltungsverbindungen konfiguriert ist, muss die DAC wie folgt mit einer expliziten Portnummer initiiert werden:If SQL ServerSQL Server is configured to accept remote administration connections, the DAC must be initiated with an explicit port number:

sqlcmd -S tcp: <server>,<port>sqlcmd -S tcp:<server>,<port>

Im SQL ServerSQL Server -Fehlerprotokoll ist die Portnummer für die DAC aufgelistet, standardmäßig 1434.The SQL ServerSQL Server error log lists the port number for the DAC, which is 1434 by default. Ist SQL ServerSQL Server ausschließlich für die Annahme lokaler DAC konfiguriert, müssen Sie die Verbindung mithilfe des Loopbackadapters herstellen. Verwenden Sie dazu folgenden Befehl:If SQL ServerSQL Server is configured to accept local DAC connections only, connect using the loopback adapter using the following command:

sqlcmd -S 127.0.0.1,1434sqlcmd -S 127.0.0.1,1434

Tipp

Beim Herstellen einer Verbindung mit Azure SQL-DatenbankAzure SQL Database über die DAC müssen Sie auch den Datenbanknamen in der Verbindungszeichenfolge angeben, indem Sie die Option „-d“ verwenden.When connecting to the Azure SQL-DatenbankAzure SQL Database with the DAC, you must also specify the database name in the connection string by using the -d option.

BeispielExample

In diesem Beispiel bemerkt ein Administrator, dass der Server URAN123 nicht reagiert, und möchte das Problem analysieren.In this example, an administrator notices that server URAN123 is not responding and wants to diagnose the problem. Dazu aktiviert der Benutzer das Eingabeaufforderungs-Hilfsprogramm sqlcmd und stellt eine Verbindung mit dem Server URAN123 her. Dabei gibt er den Schalter -A an, um die DAC anzuzeigen.To do this, the user activates the sqlcmd command prompt utility and connects to server URAN123 using -A to indicate the DAC.

sqlcmd -S URAN123 -U sa -P <xxx> -A

Jetzt kann der Administrator Abfragen für eine Problemdiagnose ausführen und möglicherweise die nicht reagierenden Sitzungen beenden.The administrator can now execute queries to diagnose the problem and possibly terminate the unresponsive sessions.

In einem ähnlichen Beispiel zum Herstellen einer Verbindung mit SQL-DatenbankSQL Database wird der folgende Befehl einschließlich dem Parameter „-d“ zur Angabe der Datenbank verwendet:A similar example connecting to SQL-DatenbankSQL Database would use the following command including the -d parameter to specify the database:

sqlcmd -S serverName.database.windows.net,1434 -U sa -P <xxx> -d AdventureWorks

Verwenden von sqlcmd mit SkriptvariablenUse sqlcmd with Scripting Variables
sqlcmd (Hilfsprogramm)sqlcmd Utility
SELECT (Transact-SQL)SELECT (Transact-SQL)
sp_who (Transact-SQL)sp_who (Transact-SQL)
sp_lock (Transact-SQL)sp_lock (Transact-SQL)
KILL (Transact-SQL)KILL (Transact-SQL)
DBCC CHECKALLOC (Transact-SQL)DBCC CHECKALLOC (Transact-SQL)
DBCC CHECKDB (Transact-SQL)DBCC CHECKDB (Transact-SQL)
DBCC OPENTRAN (Transact-SQL)DBCC OPENTRAN (Transact-SQL)
DBCC INPUTBUFFER (Transact-SQL)DBCC INPUTBUFFER (Transact-SQL)
Serverkonfigurationsoptionen (SQL Server)Server Configuration Options (SQL Server)
Dynamische Verwaltungssichten und Funktionen in Verbindung mit Transaktionen (Transact-SQL)Transaction Related Dynamic Management Views and Functions (Transact-SQL)
Ablaufverfolgungsflags (Transact-SQL)Trace Flags (Transact-SQL)