Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
База данных SQL Azure
Управляемый экземпляр SQL Azure
SQL Server предоставляет специальное диагностическое соединение для администраторов, когда стандартное соединение с сервером невозможно. Это диагностическое соединение позволяет администратору получить доступ к SQL Server для выполнения диагностических запросов и устранения проблем, даже когда SQL Server не отвечает на стандартные запросы на соединение.
Это выделенное подключение администратора (DAC) поддерживает шифрование и другие функции безопасности SQL Server. Выделенное административное соединение позволяет только изменять контекст пользователя на другого пользователя с правами администратора.
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-порт динамически назначается при запуске ядро СУБД. Журнал ошибок содержит номер порта, на котором ожидается выделенное административное соединение. По умолчанию, выделенное административное соединение ожидается только на местном порте. Пример кода, который активирует подключения удаленного администрирования, см. в разделе "Конфигурация сервера" — подключения удаленного администратора.
После настройки административного соединения средство прослушивания выделенных административных соединений включается без перезапуска SQL Server, и клиент может удаленно подключиться к DAC. Средству прослушивания соединений DAC можно разрешить прием удаленных соединений, даже если SQL Server не отвечает. Для этого можно сначала подключиться к SQL Server локально посредством выделенного административного соединения, а затем выполнить хранимую процедуру sp_configure для приема удаленных соединений.
В кластерных конфигурациях выделенное административное соединение по умолчанию выключено. Обеспечить доступ к удаленным соединениям средству прослушивания DAC пользователи могут с помощью хранимой процедуры sp_configure с параметром remote admin connection. Если SQL Server не отвечает, а средство прослушивания выделенных административных соединений отключено, то для подключения к DAC, возможно, потребуется перезапустить SQL Server. Поэтому корпорация Майкрософт рекомендует включать вариант конфигурации remote admin connections в кластеризованных системах.
Порт DAC назначается динамически SQL Server во время запуска. При подключении к экземпляру по умолчанию DAC избегает использования запроса протокола разрешения SQL Server (SSRP) к службе браузера SQL Server при подключении. Сначала выполняется попытка подключиться через TCP-порт 1434. В случае ошибки следует вызов SSRP на получение порта. Если браузер SQL Server не ожидает запросов SSRP, запрос на подключение возвращает ошибку. Обратитесь к журналу ошибок, чтобы найти номер порта, на котором ожидается выделенное административное соединение. Если SQL Server настроен для приема подключений удаленного администрирования, DAC необходимо инициировать с явным номером порта:
sqlcmd -S tcp:<server>,<port>
Журнал ошибок SQL Server содержит номер порта для DAC, который по умолчанию равен 1434. Если SQL Server настроено только для принятия локальных подключений DAC, подключитесь с помощью адаптера loopback с помощью следующей команды:
sqlcmd -S 127.0.0.1,1434
Ограничения
Так как выделенное административное соединение существует только для диагностики проблем на сервере в редких обстоятельствах, у подключения есть некоторые ограничения.
Чтобы гарантировать наличие ресурсов, доступных для подключения, для каждого экземпляра SQL Server разрешено только один DAC. Если выделенное административное соединение уже активно, любой новый запрос на соединение через DAC отклоняется с ошибкой 17810.
Чтобы сохранить ресурсы, SQL Server Express не прослушивает порт DAC, если только не запущен флаг трассировки 7806.
Сначала выделенное административное соединение подключается к базе данных по умолчанию, связанной с именем входа. После успешного
masterподключения можно подключиться к базе данных. Если база данных по умолчанию находится в режиме вне сети или недоступна по другой причине, соединение вернет ошибку 4060. При этом соединение будет успешным, если вместо базы данных по умолчанию подключиться к базе данныхmasterс помощью следующей команды:sqlcmd -A -d masterРекомендуется подключаться к базе данных
masterчерез выделенное административное соединение, так как база данныхmasterбудет в любом случае доступна, если запущен экземпляр компонента ядра СУБД.SQL Server запрещает выполнение параллельных запросов или команд с помощью DAC. Например, ошибка 3637 возникает при выполнении через выделенное административное соединение любой из следующих инструкций:
RESTORE...BACKUP...
Через выделенное административное соединение гарантированно доступны только ограниченные ресурсы. Не используйте DAC для выполнения ресурсоемких запросов или запросов, которые могут блокировать другие запросы. Это позволяет обезопасить выделенное административное соединение от осложнения любыми существующими проблемами на сервере. Чтобы избежать возможных сценариев блокировки, если необходимо выполнить запросы, которые могут блокироваться, запустите запрос на уровне изоляции на основе моментальных снимков, если это возможно; В противном случае задайте для уровня
READ UNCOMMITTEDизоляции транзакций значение и задайтеLOCK_TIMEOUTдля значения короткое значение, например 2000 миллисекунд или оба значения. Это позволит предотвратить блокировку сеанса выделенного административного соединения. Однако в зависимости от состояния, в который находится SQL Server, сеанс DAC может быть заблокирован на блоке. Возможно, удастся завершить сеанс DAC с помощью клавиш CTRL+C, но это не гарантируется. В этом случае единственным вариантом может быть перезапуск SQL Server.Чтобы гарантировать подключение и устранение неполадок с DAC, SQL Server резервирует ограниченные ресурсы для обработки команд, выполняемых в DAC. Этих ресурсов обычно хватает только для простых диагностических функций и устранения неполадок, которые приведены ниже.
Теоретически можно запустить любую инструкцию Transact-SQL, которая не должна исполняться параллельно через выделенное административное соединение, но корпорация Майкрософт настоятельно рекомендует ограничиться применением следующих команд диагностики и устранения неполадок.
Запрос таких динамических административных представлений (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.
Команда
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с этим сеансом, но сеанс остается вsys.dm_exec_sessionsпосле выполненияKILLкоманды, это означает, что у вас нет рабочей роли. Выберите одну из выполняемых в настоящее время задач (задача, указанная вsys.dm_os_tasksпредставлении с помощью asessions_id <> NULL), и убьет сеанс, связанный с ним, чтобы освободить рабочую роль. Может быть недостаточно, чтобы убить один сеанс: может потребоваться убить несколько.
Ограничение в базе данных SQL Azure
При подключении к База данных SQL Azure с помощью DAC необходимо указать в строке подключения имя базы данных, используя параметр -d.
Ограничение в Управляемом экземпляре 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
Теперь администратор может запускать запросы для определения проблемы и, возможно, прекращения не отвечающих сеансов.
Аналогичный пример подключения к базе данных SQL будет использовать следующую команду, включая -d параметр, чтобы указать базу данных:
sqlcmd -S serverName.database.windows.net,1434 -U sa -P <StrongPassword> -d AdventureWorks
Связанный контент
- Использование sqlcmd с переменными скриптов
- Программа sqlcmd
- SELECT (Transact-SQL)
- sp_who (Transact-SQL)
- 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)