Использование выделенного административного подключения

Изменения: 14 апреля 2006 г.

SQL Server 2005 предоставляет специальное диагностическое соединение для администраторов, когда стандартное соединение с сервером невозможно. Это диагностическое соединение позволяет администратору получить доступ к SQL Server для выполнения диагностических запросов и устранения проблем, даже когда SQL Server не отвечает на стандартные запросы на соединение.

Такое выделенное административное соединение (DAC) поддерживает шифрование и другие средства безопасности SQL Server. Подключение DAC позволяет только изменять контекст пользователя на другого пользователя с правами администратора.

SQL Server делает все возможное для успешного соединения DAC, но в чрезвычайных ситуациях это может не дать результата.

Соединение с помощью DAC

По умолчанию, соединение разрешено только из клиента, запущенного на сервере. Разрешены только те сетевые подключения, которые настроены с помощью средства настройки контактной зоны SQL Server или хранимой процедуры sp_configure с параметром remote admin connections.

Только члены роли SQL Server sysadmin могут подключаться с использованием подключения DAC.

Соединение DAC доступно и поддерживается через программу командной строки sqlcmd со специальным административным ключом (-A). Дополнительные сведения об использовании команды sqlcmd см. в разделе Использование программы sqlcmd с переменными сценария. Можно также подключиться, подставляя префикс admin: к имени экземпляра в формате sqlcmd -Sadmin:<instance_name>. Подключение DAC можно также запустить через редактор запросов среды SQL Server Management Studio, подключившись к admin:<instance_name>.

Ограничения

Так как подключение DAC существует только для диагностики проблем на сервере в редких обстоятельствах, у подключения есть некоторые ограничения.

  • Чтобы гарантировать, что для подключения есть доступные ресурсы, на один экземпляр SQL Server разрешено только одно подключение DAC. Если подключение DAC уже активно, любой новый запрос на соединение через DAC отклоняется с ошибкой 17810.
  • Для экономии ресурсов SQL Server 2005 Express Edition прослушивает порт DAC только при запуске с флагом трассировки 7806.
  • Сначала подключение DAC подключается к базе данных по умолчанию, связанной с именем входа. После успешного соединения можно подключиться к базе данных master. Если база данных по умолчанию находится в автономном режиме или недоступна по другой причине, соединение вернет ошибку 4060. Но соединение будет успешным, если вместо базы данных по умолчанию будет произведено подключение к базе данных master с помощью следующей команды:
    sqlcmd –A –d master
    Рекомендуется подключаться к базе данных master через подключение DAC, так как база данных master будет в любом случае доступна, если запущен экземпляр компонента Database Engine.
  • SQL Server запрещает выполнение параллельных запросов или команд через подключение DAC. Например, ошибка 3637 возникает при выполнении через соединение DAC любой из следующих инструкций:
    • RESTORE;
    • BACKUP
  • Через подключение DAC гарантированно доступны только ограниченные ресурсы. Не используйте подключение DAC для запуска ресурсоемких запросов (например, сложного соединения для большой таблицы) или запросов, которые могут блокироваться. Это позволяет обезопасить подключение DAC от осложнения любыми существующими проблемами на сервере. Чтобы избежать сценариев, которые могут приводить к блокировке, следует при возможности запускать запросы, которые могут вызвать блокировку, на уровне изоляции моментального снимка. В противном случае следует установить уровень изоляции транзакций READ UNCOMMITTED и малое значение LOCK_TIMEOUT, например 2000 миллисекунд. Можно также использовать оба способа одновременно. Это позволит предотвратить блокировку сеанса DAC. Но в зависимости от состояния SQL Server сеанс DAC может быть заблокирован с помощью кратковременной блокировки. Возможно, удастся прекратить сеанс DAC с помощью комбинации клавиш CTRL-C, но это не гарантируется. В таком случае единственным вариантом остается перезапуск SQL Server.
  • Чтобы гарантировать соединение и устранение неполадок через подключение DAC, SQL Server резервирует ограниченные ресурсы для обработки команд, запущенных через подключение DAC. Этих ресурсов обычно хватает только для простых диагностических функций и устранения неполадок, которые приведены ниже.

Теоретически можно запустить любую инструкцию Transact-SQL, которая не должна исполняться параллельно через DAC, но корпорация Майкрософт настоятельно рекомендует ограничиться применением следующих команд диагностики и устранения неполадок.

  • Запрос таких динамических административных представлений (DMV) для базовой диагностики, как sys.dm_tran_locks для состояния блокировки, sys.dm_os_memory_cache_counters для проверки состояния кэша, а sys.dm_exec_requests и sys.dm_exec_sessions для активных сеансов и запросов. Старайтесь не использовать динамические административные представления DMV, потребляющие много ресурсов (например, представление sys.dm_tran_version_store полностью просматривает хранилище версий, что может привести к резкому увеличению объема ввода-вывода) или использующие сложные соединения. Сведения о влиянии на производительность см. в документации к конкретному динамическому административному представлению.
  • Запрос представлений каталога.
  • Основные команды DBCC, например DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS**,** а также DBCC SQLPERF. Не выполняйте такие ресурсоемкие команды, как DBCC CHECKDB, DBCC DBREINDEX или DBCC SHRINKDATABASE.
  • Команда Transact-SQL KILL <spid> . В зависимости от состояния SQL Server команда KILL не всегда выполняется успешно. В этом случае единственным выходом остается перезапуск SQL Server. Рассмотрим несколько общих правил.
    • С помощью запроса SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid> убедитесь, что SPID был действительно отключен. Если строки не возвращаются, значит, сеанс был остановлен.
    • Если сеанс продолжается, проверьте с помощью запроса SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid> наличие задач, назначенных для этого сеанса. Если задача присутствует, то, скорее всего, сеанс закрывается в настоящий момент. Заметьте, что это может занять немало времени и завершиться неуспешно.
    • Если в sys.dm_os_tasks нет задач, связанных с данным сеансом, но сеанс остается в sys.dm_exec_sessions после выполнения команды KILL, это означает, что отсутствует доступный рабочий процессор. Чтобы освободить рабочий процессор, выберите одну из текущих задач (задача в списке представления sys.dm_os_tasks с sessions_id <> NULL) и аннулируйте связанный с ней сеанс. Заметьте, что остановка одного сеанса может оказаться недостаточной: возможно, потребуется остановить несколько сеансов.

Порт DAC

SQL Server прослушивает DAC на выделенном порте TCP/IP, динамически назначенном при запуске компонента Database Engine. Журнал ошибок содержит номер порта, на котором ожидается подключение DAC. По умолчанию, подключение DAC ожидается только на местном порте. Образец кода, активирующего удаленные административные подключения, см. в разделе Параметр remote admin connections.

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

В кластерных конфигурациях подключение DAC по умолчанию выключено. Обеспечить доступ к удаленным соединениям средству прослушивания DAC пользователи могут с помощью хранимой процедуры sp_configure с параметром remote admin connection. Если SQL Server не отвечает, а средство прослушивания соединений DAC отключено, то для подключения к DAC, возможно, потребуется перезапустить SQL Server. Поэтому корпорация Майкрософт рекомендует включать вариант конфигурации remote admin connections в кластеризованных системах.

Порт DAC присваивается SQL Server динамически во время запуска. При подключении к экземпляру по умолчанию соединение DAC избегает использовать запрос протокола разрешения SQL Server (SSRP) к службе SQL Server, обозреватель. Сначала производится попытка соединения через TCP-порт 1434. В случае ошибки следует вызов SSRP на получение порта. Если обозреватель SQL Server не ожидает запросов SSRP, запрос на подключение возвращает ошибку. Обратитесь к журналу ошибок, чтобы найти номер порта, на котором ожидается подключение DAC. Если SQL Server настроен для приема удаленных административных подключений, подключение DAC должно быть инициировано с явно указанным номером порта:

sqlcmd–Stcp:<server>,<port>

Журнал ошибок SQL Server приводит номер порта для подключения DAC; по умолчанию он равен 1434. Если SQL Server настроен для приема только локальных подключений DAC, подключайтесь через адаптер замыкания на себя с использованием следующей команды:

sqlcmd–S127.0.0.1,1434

Пример

В этом примере администратор видит, что сервер URAN123 не отвечает, и пытается определить неполадку. Для этого пользователь активирует программу командной строки sqlcmd и подключается к серверу URAN123 с помощью ключа -A, чтобы обозначить DAC.

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

Теперь администратор может запускать запросы для определения проблемы и, возможно, прекращения не отвечающих сеансов.

См. также

Задачи

Как применять выделенное административное подключение со средой SQL Server Management Studio

Основные понятия

Использование программы sqlcmd с переменными сценария
Установка параметров конфигурации сервера

Другие ресурсы

Программа sqlcmd
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)
Динамические административные представления и функции, связанные с транзакциями
Флаги трассировки (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Новое содержимое
  • Документирован флаг трассировки 7806 для SQL Server 2005 Express Edition.

5 декабря 2005 г.

Новое содержимое
  • Подтверждено, что не всегда удается подключить DAC.