Диагностическое соединение для администраторов баз данныхDiagnostic Connection for Database Administrators

SQL ServerSQL Server предоставляет специальное диагностическое соединение для администраторов, когда стандартное соединение с сервером невозможно.provides a special diagnostic connection for administrators when standard connections to the server are not possible. Это диагностическое соединение позволяет администратору получить доступ к SQL ServerSQL Server для выполнения диагностических запросов и устранения проблем, даже когда SQL ServerSQL Server не отвечает на стандартные запросы на соединение.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.

Такое выделенное административное соединение (DAC) поддерживает шифрование и другие средства безопасности SQL ServerSQL Server.This dedicated administrator connection (DAC) supports encryption and other security features of SQL ServerSQL Server. Выделенное административное соединение позволяет только изменять контекст пользователя на другого пользователя с правами администратора.The DAC only allows changing the user context to another admin user.

SQL ServerSQL Server делает все возможное для успешного установления выделенного административного соединения, но в чрезвычайных ситуациях это может не дать результата.makes every attempt to make DAC connect successfully, but under extreme situations it may not be successful.

Область применения: SQL ServerSQL Server (отSQL Server 2008SQL Server 2008 до текущей версии), База данных SQL V12SQL Database V12.Applies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 through current version), База данных SQL V12SQL Database V12.

Соединение с помощью выделенного административного соединенияConnecting with DAC

По умолчанию, соединение разрешено только из клиента, запущенного на сервере.By default, the connection is only allowed from a client running on the server. Сетевые подключения не разрешаются, пока они не настроены с помощью хранимой процедуры sp_configure с параметром 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.

Только члены роли SQL ServerSQL Server sysadmin могут подключаться с использованием выделенного административного соединения.Only members of the SQL ServerSQL Server sysadmin role can connect using the DAC.

Выделенное административное соединение доступно и поддерживается через программу командной строки sqlcmd со специальным административным параметром ( -A).The DAC is available and supported through the sqlcmd command-prompt utility using a special administrator switch (-A). Дополнительные сведения об использовании sqlcmd см. в разделе Использование программы sqlcmd с переменными скрипта.For more information about using sqlcmd, see Use sqlcmd with Scripting Variables. Можно также подключиться, подставив префикс admin:к имени экземпляра в формате sqlcmd - Sadmin: < имя_экземпляра >.You can also connect prefixing admin:to the instance name in the format sqlcmd -Sadmin:<instance_name>. Можно также запустить приложения уровня данных из Среда SQL Server Management StudioSQL Server Management Studio редактора запросов, подключившись к admin: < имя_экземпляра>.You can also initiate a DAC from a Среда SQL Server Management StudioSQL Server Management Studio Query Editor by connecting to admin:<instance_name>.

ОграниченияRestrictions

Так как выделенное административное соединение существует только для диагностики проблем на сервере в редких обстоятельствах, у подключения есть некоторые ограничения.Because the DAC exists solely for diagnosing server problems in rare circumstances, there are some restrictions on the connection:

  • Чтобы гарантировать, что для подключения есть доступные ресурсы, на один экземпляр SQL ServerSQL Serverразрешено только одно выделенное административное соединение.To guarantee that there are resources available for the connection, only one DAC is allowed per instance of SQL ServerSQL Server. Если выделенное административное соединение уже активно, любой новый запрос на соединение через DAC отклоняется с ошибкой 17810.If a DAC connection is already active, any new request to connect through the DAC is denied with error 17810.

  • Для экономии ресурсов SQL Server ExpressSQL Server Express прослушивает порт выделенного административного соединения только при запуске с флагом трассировки 7806.To conserve resources, SQL Server ExpressSQL Server Express does not listen on the DAC port unless started with a trace flag 7806.

  • Сначала выделенное административное соединение подключается к базе данных по умолчанию, связанной с именем входа.The DAC initially attempts to connect to the default database associated with the login. После успешного соединения можно подключиться к базе данных master.After it is successfully connected, you can connect to the master database. Если база данных по умолчанию находится в режиме вне сети или недоступна по другой причине, соединение вернет ошибку 4060.If the default database is offline or otherwise not available, the connection will return error 4060. При этом соединение будет успешным, если вместо базы данных по умолчанию подключиться к базе данных master с помощью следующей команды: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

    Рекомендуется подключаться через выделенное административное соединение к базе данных master, так как база данных master будет в любом случае доступна, если запущен экземпляр компонента Database EngineDatabase 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 Database EngineDatabase Engine is started.

  • SQL ServerSQL Server запрещает выполнение параллельных запросов или команд через выделенное административное соединение.prohibits running parallel queries or commands with the DAC. Например, ошибка 3637 возникает при выполнении через выделенное административное соединение любой из следующих инструкций:For example, error 3637 is generated if you execute either of the following statements with the DAC:

    • RESTORERESTORE

    • BACKUPBACKUP

  • Через выделенное административное соединение гарантированно доступны только ограниченные ресурсы.Only limited resources are guaranteed to be available with the DAC. Не используйте выделенное административное соединение для запуска ресурсоемких запросов (например,Do not use the DAC to run resource-intensive queries (for example. сложного соединения для большой таблицы) или запросов, которые могут блокироваться.a complex join on large table) or queries that may block. Это позволяет обезопасить выделенное административное соединение от осложнения любыми существующими проблемами на сервере.This helps prevent the DAC from compounding any existing server problems. Чтобы избежать сценариев, которые могут приводить к блокировке, следует при возможности запускать запросы, которые могут вызвать блокировку, на уровне изоляции моментального снимка. В противном случае следует установить уровень изоляции транзакций READ UNCOMMITTED и малое значение LOCK_TIMEOUT, например 2000 миллисекунд. Можно также использовать оба способа одновременно.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. Это позволит предотвратить блокировку сеанса выделенного административного соединения.This will prevent the DAC session from getting blocked. Но в зависимости от состояния SQL ServerSQL Server сеанс выделенного административного соединения может быть заблокирован с помощью кратковременной блокировки.However, depending on the state that the SQL ServerSQL Server is in, the DAC session might get blocked on a latch. Возможно, удастся прекратить сеанс выделенного административного соединения с помощью комбинации клавиш CTRL-C, но это не гарантируется.You might be able to terminate the DAC session using CNTRL-C but it is not guaranteed. В таком случае единственным вариантом остается перезапуск SQL ServerSQL Server.In that case, your only option may be to restart SQL ServerSQL Server.

  • Чтобы гарантировать соединение и устранение неполадок через выделенное административное соединение, SQL ServerSQL Server резервирует ограниченные ресурсы для обработки команд, запущенных через него.To guarantee connectivity and troubleshooting with the DAC, SQL ServerSQL Server reserves limited resources to process commands run on the DAC. Этих ресурсов обычно хватает только для простых диагностических функций и устранения неполадок, которые приведены ниже.These resources are typically only enough for simple diagnostic and troubleshooting functions, such as those listed below.

Теоретически можно запустить любую инструкцию Transact-SQLTransact-SQL , которая не должна исполняться параллельно через выделенное административное соединение, но корпорация Майкрософт настоятельно рекомендует ограничиться применением следующих команд диагностики и устранения неполадок.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:

  • Запрос таких динамических административных представлений (DMV) для базовой диагностики, как sys.dm_tran_locks для состояния блокировки, sys.dm_os_memory_cache_counters для проверки исправности кэша, а sys.dm_exec_requests и sys.dm_exec_sessions для активных сеансов и запросов.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. Старайтесь не использовать динамические административные представления DMV, потребляющие много ресурсов (например, представление sys.dm_tran_version_store полностью просматривает хранилище версий, что может привести к резкому увеличению объема ввода-вывода) или использующие сложные соединения.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. Сведения о влиянии на производительность см. в документации к конкретному динамическому административному представлению.For information about performance implications, see the documentation for the specific dynamic management view.

  • Запрос представлений каталога.Querying catalog views.

  • Основные команды DBCC, например DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, а также DBCC SQLPERF.Basic DBCC commands such as DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, and DBCC SQLPERF. Не выполняйте такие ресурсоемкие команды, как DBCC CHECKDB, DBCC DBREINDEX или DBCC SHRINKDATABASE.Do not run resource-intensive commands such as DBCC CHECKDB, DBCC DBREINDEX, or DBCC SHRINKDATABASE.

  • Transact-SQLTransact-SQL Команда KILL <spid> .KILL*<spid>* command. В зависимости от состояния SQL ServerSQL Serverкоманда KILL не всегда выполняется успешно. В этом случае единственным выходом остается перезапуск 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. Рассмотрим несколько общих правил.The following are some general guidelines:

    • С помощью запроса SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>убедитесь, что SPID был действительно отключен.Verify that the SPID was actually killed by querying SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>. Если строки не возвращаются, значит, сеанс был остановлен.If it returns no rows, it means the session was killed.

    • Если сеанс продолжается, проверьте с помощью запроса 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>. Если задача присутствует, то, скорее всего, сеанс закрывается в настоящий момент.If you see the task there, most likely your session is currently being killed. Заметьте, что это может занять немало времени и завершиться неуспешно.Note that this may take considerable amount of time and may not succeed at all.

    • Если в sys.dm_os_tasks нет задач, связанных с данным сеансом, но сеанс остается в sys.dm_exec_sessions после выполнения команды KILL, это означает, что отсутствует доступный рабочий процессор.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. Чтобы освободить рабочий поток, выберите одну из текущих задач (задача в представлении sys.dm_os_tasks со значением sessions_id <> NULL) и остановите связанный с ней сеанс.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. Заметьте, что остановка одного сеанса может оказаться недостаточной: может потребоваться остановить несколько сеансов.Note that it may not be enough to kill a single session: you may have to kill multiple ones.

Порт выделенного административного соединенияDAC Port

SQL ServerSQL Server для выделенных административных соединений прослушивает TCP-порт 1434, если он доступен, или TCP-порт, динамически назначаемый при запуске компонента Database EngineDatabase Engine .listens for the DAC on TCP port 1434 if available or a TCP port dynamically assigned upon Database EngineDatabase Engine startup. Журнал ошибок содержит номер порта, на котором ожидается выделенное административное соединение.The error log contains the port number the DAC is listening on. По умолчанию, выделенное административное соединение ожидается только на местном порте.By default the DAC listener accepts connection on only the local port. Образец кода, активирующего удаленные административные соединения, см. в разделе Параметр конфигурации сервера "remote admin connections".For a code sample that activates remote administration connections, see remote admin connections Server Configuration Option.

После настройки административного соединения средство прослушивания выделенных административных соединений включается без необходимости перезапуска SQL ServerSQL Server , и клиент может удаленно подключиться к DAC.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. Средству прослушивания соединений DAC можно разрешить прием удаленных соединений, даже если SQL ServerSQL Server не отвечает. Для этого можно сначала подключиться к SQL ServerSQL Server локально посредством выделенного административного соединения, а затем выполнить хранимую процедуру sp_configure для приема удаленных соединений.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.

В кластерных конфигурациях выделенное административное соединение по умолчанию выключено.On cluster configurations, the DAC will be off by default. Обеспечить доступ к удаленным соединениям средству прослушивания DAC пользователи могут с помощью хранимой процедуры sp_configure с параметром remote admin connection.Users can execute the remote admin connection option of sp_configure to enable the DAC listener to access a remote connection. Если SQL ServerSQL Server не отвечает, а средство прослушивания выделенных административных соединений отключено, то для подключения к DAC, возможно, потребуется перезапустить SQL ServerSQL Server .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. Поэтому корпорация Майкрософт рекомендует включать вариант конфигурации remote admin connections в кластеризованных системах.Therefore, we recommend that you enable the remote admin connections configuration option on clustered systems.

Порт выделенных административных соединений присваивается SQL ServerSQL Server динамически во время запуска.The DAC port is assigned dynamically by SQL ServerSQL Server during startup. При соединении с экземпляром по умолчанию DAC стремится не использовать запрос протокола разрешения SQL ServerSQL Server (SSRP) к службе обозревателя SQL Server.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. Сначала выполняется попытка подключиться через TCP-порт 1434.It first connects over TCP port 1434. В случае ошибки следует вызов SSRP на получение порта.If that fails, it makes an SSRP call to get the port. Если браузер SQL ServerSQL Server не ожидает запросов SSRP, запрос на подключение возвращает ошибку.If SQL ServerSQL Server Browser is not listening for SSRP requests, the connection request returns an error. Обратитесь к журналу ошибок, чтобы найти номер порта, на котором ожидается выделенное административное соединение.Refer to the error log to find the port number DAC is listening on. Если SQL ServerSQL Server настроен для приема удаленных административных подключений, выделенное административное соединение должно быть инициировано с явно указанным номером порта:If SQL ServerSQL Server is configured to accept remote administration connections, the DAC must be initiated with an explicit port number:

sqlcmd-Stcp: <server>,<port>sqlcmd-Stcp: <server>,<port>

Журнал ошибок SQL ServerSQL Server приводит номер порта для выделенного административного соединения; по умолчанию он равен 1434.The SQL ServerSQL Server error log lists the port number for the DAC, which is 1434 by default. Если SQL ServerSQL Server настроен для приема только локальных выделенных административных соединений, подключайтесь через адаптер замыкания на себя с использованием следующей команды:If SQL ServerSQL Server is configured to accept local DAC connections only, connect using the loopback adapter using the following command:

sqlcmd-S127.0.0.1,1434sqlcmd-S127.0.0.1,1434

ПримерExample

В этом примере администратор видит, что сервер URAN123 не отвечает, и пытается определить неполадку.In this example, an administrator notices that server URAN123 is not responding and wants to diagnose the problem. Для этого пользователь активирует программу командной строки sqlcmd и подключается к серверу URAN123 с помощью ключа -A , чтобы обозначить выделенное административное соединение.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

Теперь администратор может запускать запросы для определения проблемы и, возможно, прекращения не отвечающих сеансов.The administrator can now execute queries to diagnose the problem and possibly terminate the unresponsive sessions.

Использование программы sqlcmd с переменными скриптаUse sqlcmd with Scripting Variables

Программа sqlcmdsqlcmd 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)

Параметры конфигурации сервера (SQL Server)Server Configuration Options (SQL Server)

Динамические административные представления и функции, связанные с транзакциями (Transact-SQL)Transaction Related Dynamic Management Views and Functions (Transact-SQL)

Флаги трассировки (Transact-SQL)Trace Flags (Transact-SQL)