Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к:SQL Server
Управляемому экземпляру SQL Azure
SQL Server предоставляет специальное диагностическое соединение для администраторов, когда стандартное соединение с сервером невозможно. Это диагностическое соединение позволяет администратору получить доступ к SQL Server для выполнения диагностических запросов и устранения проблем, даже когда SQL Server не отвечает на стандартные запросы на соединение.
Это выделенное подключение администратора (DAC) поддерживает шифрование и другие функции безопасности SQL Server. DAC позволяет изменить пользовательский контекст только на контекст другого пользователя с правами администратора.
SQL Server делает каждую попытку успешного подключения к DAC, но в чрезвычайных ситуациях это может не быть успешным.
Подключение к DAC
По умолчанию, соединение разрешено только из клиента, запущенного на сервере. Сетевые подключения не допускаются, если они не настроены с помощью хранимой процедуры sp_configure с параметром конфигурации сервера удалённые административные подключения.
Только члены роли системного администратора SQL Server могут подключаться с помощью DAC.
Выделенное административное соединение доступно и поддерживается с помощью служебной программы командной строки sqlcmd с использованием специального параметра администратора (-A). Дополнительные сведения об использовании sqlcmd см. в разделе sqlcmd — использование с переменными сценария. Можно также подключиться, добавив префикс admin: перед именем экземпляра в формате sqlcmd -S admin:<instance_name>. Кроме того, можно инициировать подключение DAC из редактора запросов SQL Server Management Studio, подключившись к admin:<instance_name>.
Установка DAC из SQL Server Management Studio:
Отключите все соединения со связанным экземпляром SQL Server, включая обозреватель объектов и все открытые окна запросов.
В меню выберите элементы Файл > Создать > Запрос к ядру СУБД
В диалоговом окне подключения в поле "Имя сервера" введите
admin:<server_name>при использовании экземпляра по умолчанию илиadmin:<server_name>\<instance_name>при использовании именованного экземпляра.
Порт выделенного административного соединения (DAC)
SQL Server прослушивает DAC на TCP-порту 1434, если он доступен, или на TCP-порту, динамически назначаемом при запуске ядра СУБД. Журнал ошибок содержит номер порта, который прослушивает DAC. По умолчанию прослушиватель DAC принимает подключения только на локальном порту. Пример кода, который активирует подключения удаленного администрирования, см. в разделе "Конфигурация сервера" — подключения удаленного администратора.
После настройки удалённого административного подключения прослушиватель DAC можно включить без перезапуска SQL Server, и клиент теперь может удалённо подключаться к DAC. Можно настроить прослушиватель DAC на прием удаленных подключений, даже если SQL Server не отвечает, для этого сначала подключитесь к SQL Server локально с помощью DAC, а затем выполните хранимую процедуру sp_configure, чтобы разрешить удаленные подключения.
В кластерных конфигурациях выделенное административное соединение по умолчанию выключено. Пользователи могут выполнить параметр remote admin connection в sp_configure, чтобы прослушиватель DAC мог принимать удалённые подключения. Если SQL Server не отвечает и прослушиватель DAC не включен, возможно, потребуется перезапустить SQL Server, чтобы подключиться через DAC. Поэтому мы рекомендуем включить параметр конфигурации «удалённые подключения администратора» в кластеризованных системах.
Порт DAC назначается динамически SQL Server во время запуска. При подключении к экземпляру по умолчанию DAC избегает использования запроса протокола разрешения SQL Server (SSRP) к службе браузера SQL Server при подключении. Сначала выполняется подключение к TCP-порту 1434. Если это не удаётся, выполняется вызов SSRP, чтобы получить порт. Если браузер SQL Server не ожидает запросов SSRP, запрос на подключение возвращает ошибку. См. журнал ошибок, чтобы узнать номер порта, который прослушивает DAC. Если SQL Server настроен для приема подключений удаленного администрирования, DAC необходимо инициировать с явным номером порта:
sqlcmd -S tcp:<server>,<port>
Журнал ошибок SQL Server содержит номер порта для DAC, который по умолчанию равен 1434. Если SQL Server настроено только для принятия локальных подключений DAC, подключитесь с помощью адаптера loopback с помощью следующей команды:
sqlcmd -S 127.0.0.1,1434
Ограничения
Поскольку выделенное административное соединение (DAC) используется исключительно для диагностики проблем сервера в редких случаях, на это подключение накладываются некоторые ограничения:
Чтобы гарантировать наличие ресурсов, доступных для подключения, для каждого экземпляра SQL Server разрешено только один DAC. Если выделенное административное соединение уже активно, любая новая попытка подключения через выделенное административное соединение будет отклонена с ошибкой 17810.
Чтобы сохранить ресурсы, SQL Server Express не прослушивает порт DAC, если только не запущен флаг трассировки 7806.
Сначала выделенное административное подключение пытается подключиться к базе данных по умолчанию, связанной с учетной записью. После успешного подключения можно подключиться к базе данных
master. Если база данных по умолчанию находится в режиме вне сети или недоступна по другой причине, соединение вернет ошибку 4060. При этом соединение будет успешным, если вместо базы данных по умолчанию подключиться к базе данныхmasterс помощью следующей команды:sqlcmd -A -d masterМы рекомендуем подключаться к базе данных
masterчерез выделенное административное соединение (DAC), поскольку база данныхmasterгарантированно доступна, если экземпляр ядра СУБД запущен.SQL Server запрещает выполнение параллельных запросов или команд с помощью DAC. Например, ошибка 3637 возникает при выполнении через выделенное административное соединение любой из следующих инструкций:
RESTORE...BACKUP...
При использовании DAC гарантированно доступны только ограниченные ресурсы. Не используйте DAC для выполнения ресурсоемких запросов или запросов, которые могут блокировать другие запросы. Это помогает предотвратить усугубление DAC любых существующих проблем на сервере. Чтобы избежать возможных ситуаций блокировки, если необходимо выполнять запросы, которые могут приводить к блокировке, по возможности выполняйте их с уровнями изоляции на основе снимков; в противном случае установите уровень изоляции транзакции
READ UNCOMMITTEDи задайте дляLOCK_TIMEOUTкороткое значение, например 2000 миллисекунд, или примените оба варианта. Это предотвратит блокировку сеанса DAC (выделенного административного подключения). Однако в зависимости от состояния, в который находится SQL Server, сеанс DAC может быть заблокирован на блоке. Возможно, удастся завершить сеанс DAC с помощью клавиш CTRL+C, но это не гарантируется. В этом случае единственным вариантом может быть перезапуск SQL Server.Чтобы гарантировать подключение и устранение неполадок с DAC, SQL Server резервирует ограниченные ресурсы для обработки команд, выполняемых в DAC. Этих ресурсов обычно хватает только для простых диагностических функций и устранения неполадок, которые приведены ниже.
Хотя теоретически через DAC можно выполнять любой оператор Transact-SQL, который не требуется выполнять параллельно, мы настоятельно рекомендуем ограничить использование следующими командами диагностики и устранения неполадок:
Запрос к таким динамическим административным представлениям (DMV) для базовой диагностики, как sys.dm_tran_locks для определения состояния блокировок, sys.dm_os_memory_cache_counters для проверки состояния кэшей, а также sys.dm_exec_requests и sys.dm_exec_sessions для активных сеансов и запросов. Избегайте динамических административных представлений, интенсивно потребляющих ресурсы (например, sys.dm_tran_version_store сканирует все хранилище версий и может вызывать значительный объем операций ввода-вывода) или использующих сложные соединения. Сведения о влиянии на производительность см. в документации к конкретному динамическому административному представлению.
Запрос представлений каталога.
Основные команды DBCC, например DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS, а также DBCC SQLPERF. Не выполняйте такие ресурсоемкие команды, как DBCC CHECKDB, DBCC DBREINDEX или DBCC SHRINKDATABASE.
Команда
KILL <spid>Transact-SQL: В зависимости от состояния SQL Server командаKILLможет не выполниться. Единственным вариантом может быть перезапуск экземпляра в случае SQL Server или Управляемого экземпляра SQL Azure. Рассмотрим несколько общих правил.С помощью запроса
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, связанном с этим сеансом, нет задач, но после выполнения командыKILLсеанс остается вsys.dm_exec_sessions, это означает, что у вас нет доступного рабочего процесса. Выберите одну из выполняющихся в данный момент задач (задачу, указанную в представленииsys.dm_os_tasksс помощьюsessions_id <> NULL), и завершите связанную с ней сессию, чтобы освободить рабочий процесс. Может оказаться недостаточно завершить один сеанс: может потребоваться завершить несколько сеансов.
Ограничение в базе данных SQL Azure
DAC в Базе данных SQL Azure обычно занят серверным процессом и недоступен для пользователей.
Ограничение в управляемом экземпляре SQL Azure
DAC не работает над частной конечной точкой для Управляемого экземпляра SQL Azure. В управляемых экземплярах SQL DAC прослушивает порт 1434. Так как частные конечные точки к управляемым экземплярам SQL разрешают подключения только через порт 1433, для установления подключения к DAC нельзя использовать частную конечную точку. Для подключения к DAC необходимо находиться в той же виртуальной сети, что и управляемый экземпляр SQL.
Примеры
В этом примере администратор видит, что сервер contoso-server не отвечает, и пытается определить неполадку. Для этого пользователь активирует программу командной строки sqlcmd и подключается к серверу contoso-server с помощью ключа -A , чтобы обозначить выделенное административное соединение.
sqlcmd -S contoso-server -U sa -P <StrongPassword> -A
Теперь администратор может запускать запросы для определения проблемы и, возможно, прекращения не отвечающих сеансов.
Связанный контент
- Использование sqlcmd с переменными скриптов
- служебная программа sqlcmd
- SELECT (Transact-SQL)
- sys.sp_who (Transact-SQL)
- sys.sp_lock (Transact-SQL)
- KILL (Transact-SQL)
- DBCC CHECKALLOC (Transact-SQL)
- DBCC CHECKDB (Transact-SQL)
- DBCC OPENTRAN (Transact-SQL)
- DBCC INPUTBUFFER (Transact-SQL)
- Параметры конфигурации сервера
- Динамические административные представления и функции, связанные с транзакциями (Transact-SQL)
- Установка флагов трассировки с помощью DBCC TRACEON (Transact-SQL)