Usar una conexión de administrador dedicada

Actualizado: 14 de abril de 2006

SQL Server 2005 proporciona una conexión de diagnóstico especial para los administradores cuando no son posibles las conexiones estándar con el servidor. La conexión de diagnóstico permite a un administrador tener acceso a SQL Server para ejecutar consultas de diagnóstico y solucionar problemas, incluso cuando SQL Server no responde a las solicitudes de conexión estándar.

Esta conexión de administrador dedicada (DAC) admite la característica de cifrado y otras características de seguridad de SQL Server. La DAC sólo permite cambiar el contexto de usuario a otro usuario de administración.

SQL 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.

Conectar con DAC

De forma predeterminada, sólo se permite la conexión desde un cliente que se ejecute en el servidor. Las conexiones de red no están permitidas, a menos que se configuren mediante la herramienta Configuración de superficie de SQL Server o el procedimiento almacenado sp_configure con la opción remote admin connections.

Sólo los miembros de la función sysadmin de SQL Server pueden conectarse utilizando la DAC.

La conexión de administrador dedicada (DAC) está disponible y permitida a través de la utilidad del símbolo del sistema sqlcmd mediante un modificador de administrador especial (-A). Para obtener más información acerca de cómo usar sqlcmd, vea Usar sqlcmd con variables de secuencia de comandos. También se puede conectar agregando el prefijo admin: al nombre de la instancia en el formato sqlcmd -Sadmin:<instance_name>. También puede iniciar una DAC desde un Editor de consultas de SQL Server Management Studio, conectándose a admin:<instance_name>.

Restricciones

Dado que la DAC existe únicamente para el diagnóstico de problemas de servidor en raras circunstancias, hay algunas restricciones en la conexión:

  • Para garantizar que haya recursos disponibles para la conexión, sólo se permite una DAC por cada instancia de SQL 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.
  • Para ahorrar recursos, SQL Server 2005 Express Edition no escucha en el puerto DAC a menos que se inicie con la marca de traza 7806.
  • Inicialmente la DAC intenta conectarse a la base de datos predeterminada asociada al inicio de sesión. Una vez conectada correctamente, el usuario podrá conectarse a la base de datos master. Si la base de datos predeterminada está sin conexión o no disponible de algún modo, la conexión devolverá el error 4060. Sin embargo, se establecerá correctamente si se reemplaza la base de datos predeterminada para conectarse a la base de datos master en su lugar mediante el comando siguiente:
    sqlcmd –A –d master
    Se recomienda conectarse a la base de datos master con la DAC porque la disponibilidad de master está garantizada si se ha iniciado la instancia de Database Engine (Motor de base de datos).
  • SQL Server prohíbe la ejecución de comandos o consultas paralelas con la DAC. Por ejemplo, se genera el error 3637 si se ejecuta una de las instrucciones siguientes con la DAC:
    • RESTORE
    • BACKUP
  • Con la DAC sólo está garantizada la disponibilidad de recursos limitados. No utilice la DAC para ejecutar consultas que consuman muchos recursos (por ejemplo, una combinación compleja en una tabla grande) o consultas que se puedan bloquear. Así se evita que la DAC agrave cualquier problema de servidor ya existente. 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. Esto evitará que la sesión de la DAC se bloquee. Sin embargo, dependiendo del estado en el que esté SQL Server, puede ser que la sesión de la DAC se bloquee en un pestillo. Es posible que pueda finalizar la sesión de la DAC mediante CTRL-C, pero esto no está garantizado. En tal caso, la única alternativa puede ser reiniciar SQL Server.
  • Para garantizar la conectividad y la solución de problemas con la DAC, SQL Server reserva recursos limitados para procesar los comandos ejecutados en la DAC. Estos recursos sólo suelen ser suficientes para funciones sencillas de diagnóstico y solución de problemas, como las que se mencionan más adelante.

Aunque teóricamente es posible ejecutar cualquier instrucción Transact-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:

  • 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. Evite las vistas de administración dinámica que consumen muchos recursos (por ejemplo, sys.dm_tran_version_store recorre el almacén de versiones completo y puede causar numerosas E/S) o que utilizan combinaciones complejas. 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.
  • Consultas en vistas de catálogo.
  • Comandos DBCC básicos como DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS**,** y DBCC SQLPERF. No ejecute comandos que consumen muchos recursos, como DBCC CHECKDB, DBCC DBREINDEX o DBCC SHRINKDATABASE.
  • Comando KILL <spid> de Transact-SQL. Dependiendo del estado de SQL Server, es posible que el comando KILL no siempre se ejecute correctamente; en tal caso, la única opción puede ser reiniciar SQL Server. Éstas son algunas directrices generales:
    • Compruebe que realmente se ha eliminado el SPID con la consulta SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>. Si no devuelve ninguna fila, significa que la sesión se ha eliminado.
    • 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>. Si ve la tarea, lo más probable es que se esté eliminando la sesión ahora. Tenga en cuenta que es posible que esto tarde bastante tiempo y que no salga correctamente.
    • 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. 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. Tenga en cuenta que es posible que no sea suficiente eliminar una sola sesión: posiblemente tendrá que eliminar varias.

Puerto de la DAC

SQL Server escucha la DAC en un puerto TCP/IP dedicado asignado dinámicamente en el inicio de Database Engine (Motor de base de datos). El registro de errores contiene el número de puerto en el que escucha la DAC. De forma predeterminada, la escucha de la DAC sólo acepta la conexión en el puerto local. Para obtener un ejemplo de código que active conexiones de administración remotas, vea remote admin connections (opción).

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

En las configuraciones de clúster, la DAC estará desactivada de forma predeterminada. 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. Si SQL Server no responde y la escucha de la DAC no está habilitada, es posible que tenga que reiniciar SQL Server para conectarse a la DAC. Por esta razón, es recomendable que habilite la opción de configuración remote admin connections en los sistemas agrupados.

Durante el inicio, SQL Server asigna dinámicamente el puerto de la DAC. 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 Server (SSRP) al servicio Explorador de SQL Server. Primero se conecta mediante el puerto TCP 1434. Si éste provoca un error, realizará una llamada SSRP para obtener el puerto. Si el Explorador de SQL Server no escucha las solicitudes SSRP, la solicitud de conexión devolverá un error. Consulte el registro de errores para ver en qué número de puerto escucha la DAC. Si SQL Server está configurado para aceptar conexiones de administración remotas, la DAC debe iniciarse con un número de puerto explícito:

sqlcmd–Stcp:<server>,<port>

El registro de errores de SQL Server muestra el número de puerto de la DAC, que es 1434 de forma predeterminada. Si SQL Server está configurado para aceptar sólo conexiones DAC locales, conéctese mediante el adaptador de bucles invertidos con el comando siguiente:

sqlcmd–S127.0.0.1,1434

Ejemplo

En este ejemplo, un administrador observa que el servidor URAN123 no responde y desea diagnosticar el problema. 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.

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.

Vea también

Tareas

Cómo utilizar la conexión de administrador dedicada con SQL Server Management Studio

Conceptos

Usar sqlcmd con variables de secuencia de comandos
Establecer las opciones de configuración del servidor

Otros recursos

sqlcmd (utilidad)
SELECT (Transact-SQL)
sp_who (Transact-SQL)
sp_lock (Transact-SQL)
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
SET LOCK_TIMEOUT (Transact-SQL)
KILL (Transact-SQL)
DBCC CHECKALLOC (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
DBCC OPENTRAN (Transact-SQL)
DBCC INPUTBUFFER (Transact-SQL)
Funciones y vistas de administración dinámica relacionadas con transacciones
Marcas de traza (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido nuevo:
  • Se documentó la marca de traza 7806 para SQL Server 2005 Express Edition.

5 de diciembre de 2005

Contenido nuevo:
  • Se confirmó que es posible que la DAC no siempre se pueda conectar.