Conexión de diagnóstico para administradores de bases de datosDiagnostic Connection for Database Administrators

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server proporciona una conexión de diagnóstico especial para los administradores cuando no son posibles las conexiones estándar con el servidor.provides a special diagnostic connection for administrators when standard connections to the server are not possible. La conexión de diagnóstico permite a un administrador tener acceso a SQL ServerSQL Server para ejecutar consultas de diagnóstico y solucionar problemas, incluso cuando SQL ServerSQL Server no responde a las solicitudes de conexión estándar.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.

Esta conexión de administrador dedicada (DAC) admite la característica de cifrado y otras características de seguridad de SQL ServerSQL Server.This dedicated administrator connection (DAC) supports encryption and other security features of SQL ServerSQL Server. La DAC solo permite cambiar el contexto de usuario a otro usuario de administración.The DAC only allows changing the user context to another admin user.

SQL ServerSQL Server hace lo posible para que la conexión de administrador dedicada (DAC) sea correcta, pero, en situaciones extremas, es posible que no lo logre.makes every attempt to make DAC connect successfully, but under extreme situations it may not be successful.

Se aplica a: SQL ServerSQL Server (desde SQL Server 2008SQL Server 2008 hasta SQL Server 2017SQL Server 2017), SQL DatabaseSQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017), SQL DatabaseSQL Database.

Conectar con DACConnecting with DAC

De forma predeterminada, solo se permite la conexión desde un cliente que se ejecute en el servidor.By default, the connection is only allowed from a client running on the server. Las conexiones de red no están permitidas, a menos que se configuren con el procedimiento almacenado sp_configure con la opción remote admin connections.Network connections are not permitted unless they are configured by using the sp_configure stored procedure with the remote admin connections option.

Solo los miembros del rol sysadmin de SQL ServerSQL Server pueden conectarse utilizando la DAC.Only members of the SQL ServerSQL Server sysadmin role can connect using the DAC.

La DAC está disponible y se admite a través de la utilidad del símbolo del sistema sqlcmd a través de un modificador de administrador especial ( -A).The DAC is available and supported through the sqlcmd command-prompt utility using a special administrator switch (-A). Para obtener más información sobre cómo usar sqlcmd, vea Usar sqlcmd con variables de script.For more information about using sqlcmd, see Use sqlcmd with Scripting Variables. También se puede conectar agregando el prefijo admin: al nombre de la instancia con el formato sqlcmd -S admin:<nombre_de_instancia> .You can also connect prefixing admin: to the instance name in the format sqlcmd -S admin:<instance_name>. También puede iniciar una DAC desde un Editor de consultas de SQL Server Management StudioSQL Server Management Studio conectándose a admin:<nombre_de_instancia> .You can also initiate a DAC from a SQL Server Management StudioSQL Server Management Studio Query Editor by connecting to admin:<instance_name>.

RestrictionsRestrictions

Dado que la DAC existe únicamente para el diagnóstico de problemas de servidor en raras circunstancias, hay algunas restricciones en la conexión:Because the DAC exists solely for diagnosing server problems in rare circumstances, there are some restrictions on the connection:

  • Para asegurarse de que haya recursos disponibles para la conexión, solo se permite una DAC por cada instancia de SQL ServerSQL Server.To guarantee that there are resources available for the connection, only one DAC is allowed per instance of SQL ServerSQL Server. Si ya hay una conexión DAC activa, cualquier solicitud nueva de conexión a través de la DAC se denegará con el error 17810.If a DAC connection is already active, any new request to connect through the DAC is denied with error 17810.

  • Para ahorrar recursos, SQL Server ExpressSQL Server Express no escucha en el puerto DAC a menos que se inicie con la marca de seguimiento 7806.To conserve resources, SQL Server ExpressSQL Server Express does not listen on the DAC port unless started with a trace flag 7806.

  • Inicialmente la DAC intenta conectarse a la base de datos predeterminada asociada al inicio de sesión.The DAC initially attempts to connect to the default database associated with the login. Una vez conectada correctamente, el usuario podrá conectarse a la base de datos maestra.After it is successfully connected, you can connect to the master database. Si la base de datos predeterminada está sin conexión o no disponible por la razón que sea, la conexión devolverá el error 4060.If the default database is offline or otherwise not available, the connection will return error 4060. Con todo, se realizará correctamente si invalida la base de datos predeterminada para conectarse a la base de datos maestra utilizando el comando siguiente: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

    Se recomienda conectarse a la base de datos maestra con la DAC porque su disponibilidad está garantizada si se ha iniciado la instancia de Motor de base de datosDatabase Engine .We recommend that you connect to the master database with the DAC because master is guaranteed to be available if the instance of the Motor de base de datosDatabase Engine is started.

  • SQL ServerSQL Server prohíbe la ejecución de comandos o consultas paralelas con la DAC.prohibits running parallel queries or commands with the DAC. Por ejemplo, se genera el error 3637 si se ejecuta una de las instrucciones siguientes con la DAC:For example, error 3637 is generated if you execute either of the following statements with the DAC:

    • RESTORERESTORE

    • BACKUPBACKUP

  • Con la DAC solo está garantizada la disponibilidad de recursos limitados.Only limited resources are guaranteed to be available with the DAC. No use la DAC para ejecutar consultas que consuman muchos recursos (por ejemplo,Do not use the DAC to run resource-intensive queries (for example. una combinación compleja en una tabla grande) o consultas que se puedan bloquear.a complex join on large table) or queries that may block. Así se evita que la DAC agrave cualquier problema de servidor ya existente.This helps prevent the DAC from compounding any existing server problems. Para evitar posibles escenarios de bloqueo, si debe ejecutar consultas que se pueden bloquear, ejecútelas con niveles de aislamiento basado en instantáneas siempre que sea posible; de lo contrario, establezca el nivel de aislamiento de transacción en READ UNCOMMITTED y establezca un valor pequeño, como 2000 milisegundos, para LOCK_TIMEOUT, o ambos.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. Esto evitará que la sesión de la DAC se bloquee.This will prevent the DAC session from getting blocked. Sin embargo, dependiendo del estado en el que esté SQL ServerSQL Server , puede ser que la sesión de la DAC se bloquee en un bloqueo temporal.However, depending on the state that the SQL ServerSQL Server is in, the DAC session might get blocked on a latch. Es posible que pueda finalizar la sesión de la DAC mediante CTRL+C, pero esto no está garantizado.You might be able to terminate the DAC session using CTRL-C but it is not guaranteed. En tal caso, la única alternativa puede ser reiniciar SQL ServerSQL Server.In that case, your only option may be to restart SQL ServerSQL Server.

  • Para asegurarse de la conectividad y la solución de problemas con la DAC, SQL ServerSQL Server reserva recursos limitados para procesar los comandos ejecutados en la DAC.To guarantee connectivity and troubleshooting with the DAC, SQL ServerSQL Server reserves limited resources to process commands run on the DAC. Estos recursos solo suelen ser suficientes para funciones sencillas de diagnóstico y solución de problemas, como las que se mencionan más adelante.These resources are typically only enough for simple diagnostic and troubleshooting functions, such as those listed below.

Aunque teóricamente es posible ejecutar cualquier instrucción Transact-SQLTransact-SQL que no se tenga que ejecutar en paralelo en la DAC, se recomienda encarecidamente limitar el uso a los siguientes comandos de diagnóstico y solución de problemas: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:

  • Consultas en vistas de administración dinámica para diagnósticos básicos, como sys.dm_tran_locks para el estado de bloqueo, sys.dm_os_memory_cache_counters para comprobar el estado de las cachés, y sys.dm_exec_requests y sys.dm_exec_sessions para solicitudes y sesiones activas.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. Evite las vistas de administración dinámica que consumen muchos recursos (por ejemplo, sys.dm_tran_version_store examina el almacén de versiones completo y puede causar numerosas E/S) o que usan combinaciones complejas.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. Para obtener información acerca de las implicaciones para el rendimiento, vea la documentación específica para la vista de administración dinámica.For information about performance implications, see the documentation for the specific dynamic management view.

  • Consultas en vistas de catálogo.Querying catalog views.

  • Comandos DBCC básicos como DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS y DBCC SQLPERF.Basic DBCC commands such as DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, and DBCC SQLPERF. No ejecute comandos que consumen muchos recursos, como DBCC CHECKDB, DBCC DBREINDEX o DBCC SHRINKDATABASE.Do not run resource-intensive commands such as DBCC CHECKDB, DBCC DBREINDEX, or DBCC SHRINKDATABASE.

  • Comando KILL <spid> de Transact-SQLTransact-SQL.Transact-SQLTransact-SQL KILL*<spid>* command. Dependiendo del estado de SQL ServerSQL Server, es posible que el comando KILL no siempre se ejecute correctamente; en tal caso, la única opción puede ser reiniciar SQL ServerSQL Server.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. Éstas son algunas directrices generales:The following are some general guidelines:

    • Compruebe que realmente se ha eliminado el SPID con la consulta SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>.Verify that the SPID was actually killed by querying SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>. Si no devuelve ninguna fila, significa que la sesión se ha eliminado.If it returns no rows, it means the session was killed.

    • Si la sesión todavía existe, compruebe si hay tareas asignadas a esta sesión ejecutando la consulta SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>.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>. Si ve la tarea, lo más probable es que se esté eliminando la sesión ahora.If you see the task there, most likely your session is currently being killed. Tenga en cuenta que es posible que esto tarde bastante tiempo y que no salga correctamente.Note that this may take considerable amount of time and may not succeed at all.

    • Si no hay ninguna tarea en sys.dm_os_tasks asociada a esta sesión, pero la sesión permanece en sys.dm_exec_sessions tras ejecutar el comando KILL, significa que no tiene ningún trabajo disponible.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. Seleccione una de las tareas que se están ejecutando (una tarea que aparece en la vista sys.dm_os_tasks con sessions_id <> NULL), y elimine la sesión que tiene asociada para liberar el trabajo.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. Tenga en cuenta que es posible que no sea suficiente eliminar una sola sesión: posiblemente tendrá que eliminar varias.Note that it may not be enough to kill a single session: you may have to kill multiple ones.

Puerto de la DACDAC Port

SQL ServerSQL Server escucha la DAC en el puerto TCP 1434 si está disponible o en un puerto asignado dinámicamente en el inicio de Motor de base de datosDatabase Engine.listens for the DAC on TCP port 1434 if available or a TCP port dynamically assigned upon Motor de base de datosDatabase Engine startup. El registro de errores contiene el número de puerto en el que escucha la DAC.The error log contains the port number the DAC is listening on. De forma predeterminada, la escucha de la DAC solo acepta la conexión en el puerto local.By default the DAC listener accepts connection on only the local port. Para ver un ejemplo de código en el que se activan conexiones de administración remota, vea remote admin connections (opción de configuración del servidor).For a code sample that activates remote administration connections, see remote admin connections Server Configuration Option.

Una vez configurada la conexión de administración remota, la escucha de la DAC se habilita sin necesidad de reiniciar SQL ServerSQL Server y se puede conectar un cliente a la DAC de forma remota.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. Puede habilitar la escucha de la DAC para que acepte las conexiones remotamente incluso si SQL ServerSQL Server no responde conectándose primero a SQL ServerSQL Server mediante la DAC de forma local y, a continuación, ejecutando el procedimiento almacenado sp_configure para aceptar la conexión desde conexiones remotas.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.

En las configuraciones de clúster, la DAC estará desactivada de forma predeterminada.On cluster configurations, the DAC will be off by default. Los usuarios pueden ejecutar la opción remote admin connection de sp_configure para habilitar la escucha de la DAC para tener acceso a una conexión remota.Users can execute the remote admin connection option of sp_configure to enable the DAC listener to access a remote connection. Si SQL ServerSQL Server no responde y la escucha de la DAC no está habilitada, es posible que tenga que reiniciar SQL ServerSQL Server para conectarse a la DAC.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. Por esta razón, es recomendable que habilite la opción de configuración remote admin connections en los sistemas en clúster.Therefore, we recommend that you enable the remote admin connections configuration option on clustered systems.

Durante el inicio, SQL ServerSQL Server asigna dinámicamente el puerto de la DAC.The DAC port is assigned dynamically by SQL ServerSQL Server during startup. Mientras se establece la conexión a la instancia predeterminada, la DAC evita el uso de una solicitud del protocolo de resolución de SQL ServerSQL Server (SSRP) al servicio SQL Server Browser.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. Primero se conecta a través del puerto TCP 1434.It first connects over TCP port 1434. Si se produce un error, realiza una llamada SSRP para obtener el puerto.If that fails, it makes an SSRP call to get the port. Si el Explorador de SQL ServerSQL Server no escucha las solicitudes SSRP, la solicitud de conexión devolverá un error.If SQL ServerSQL Server Browser is not listening for SSRP requests, the connection request returns an error. Consulte el registro de errores para ver en qué número de puerto escucha la DAC.Refer to the error log to find the port number DAC is listening on. Si SQL ServerSQL Server está configurado para aceptar conexiones de administración remotas, la DAC debe iniciarse con un número de puerto explícito:If SQL ServerSQL Server is configured to accept remote administration connections, the DAC must be initiated with an explicit port number:

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

El registro de errores de SQL ServerSQL Server muestra el número de puerto de la DAC, que es 1434 de forma predeterminada.The SQL ServerSQL Server error log lists the port number for the DAC, which is 1434 by default. Si SQL ServerSQL Server está configurado para aceptar solo conexiones DAC locales, conéctese mediante el adaptador de bucles invertidos con el comando siguiente: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

Sugerencia

Al conectarse a la Base de datos SQL de AzureAzure SQL Database con la DAC, también debe especificar el nombre de la base de datos en la cadena de conexión por medio de la opción -d.When connecting to the Base de datos SQL de AzureAzure SQL Database with the DAC, you must also specify the database name in the connection string by using the -d option.

EjemploExample

En este ejemplo, un administrador observa que el servidor URAN123 no responde y desea diagnosticar el problema.In this example, an administrator notices that server URAN123 is not responding and wants to diagnose the problem. Para ello, el usuario activa la utilidad del símbolo del sistema sqlcmd y se conecta al servidor URAN123 mediante -A para indicar la DAC.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

Ahora el administrador puede ejecutar consultas para diagnosticar el problema y posiblemente finalizar las sesiones que no responden.The administrator can now execute queries to diagnose the problem and possibly terminate the unresponsive sessions.

En un ejemplo similar de conexión a la SQL DatabaseSQL Database usaría el comando siguiente, incluido el parámetro -d para especificar la base de datos:A similar example connecting to SQL DatabaseSQL 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

Usar sqlcmd con variables de scriptUse sqlcmd with Scripting Variables
sqlcmd (utilidad)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)
Opciones de configuración de servidor (SQL Server)Server Configuration Options (SQL Server)
Funciones y vistas de administración dinámica relacionadas con transacciones (Transact-SQL)Transaction Related Dynamic Management Views and Functions (Transact-SQL)
Marcas de seguimiento (Transact-SQL)Trace Flags (Transact-SQL)