更新时间:2022-08-21 12:59:50
SQL Server 提供了专用管理员链接(DAC)。DAC允许管理员访问运行的服务器以执行诊断函数或Transact—SQL语句,或对服务器上的问题进行故障排除,即使服务器以锁定或在非正常状态下运行。
DAC默认情况下只有服务器上可以使用DAC,但是你可以通过 SQL Server 2005 外围应用配置器设置允许远程计算机上的客户端应用程序使用 DAC,如下图所示
你也可以通过下面的SP_CONFIGURE命令更改数据库服务器配置
--0 - 指明仅允许本地连接使用 DAC
--1 - 指明允许远程连接使用 DAC
SP_CONFIGURE 'remote admin connections';
SP_CONFIGURE 'remote admin connections', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
DAC 链接到数据库服务器可以通过SQL Server Management Studio,也可以通过sqlcmd方式连接服务器,但是需要注意的是如果像下图那样打开SSMS链接到服务器,则会报错(自己曾经在这里折腾过很久)
DAC只支持查询窗口, 不支持Object Explorer. 如果你想在SSMS中用DAC连, 你应该用个正常的连接, 然后用DAC打开查询窗口. DAC只支持一个窗口,如果你已经建立一个连接, 则会报错。MSDN上面提示是并出现错误 17810,但是我在SQL Server 05 出现的错误64如下图所示。
命令行界面 (sqlcmd) 通过使用特殊的管理员开关 (-A
),提供并支持这种专用管理员连接 (DAC)。
下面详细关于DAC内容摘自MSDN
只有 SQL Server sysadmin 角色的成员可以使用 DAC 连接。默认情况下,只能从服务器上运行的客户端建立连接。除非通过 sp_configure 使用 remote admin connections 选项进行配置,否则不允许使用网络连接。DAC 支持加密和 SQL Server 的其他安全性功能。DAC 只允许将用户上下文切换到其他管理用户。
由于 DAC 仅用于在极少数情况下诊断服务器问题,因此对连接有一些限制:
尽管在理论上可以在 DAC 上运行无需并行执行的任何 Transact-SQL 语句,Microsoft 仍强烈建议您仅限于使用下列诊断和故障排除命令:
select * from sys.dm_exec_sessions where session_id =
<spid>
来验证 SPID 是否已被终止。如果没有返回任何行,则表明会话已被终止。select * from sys.dm_os_tasks where session_id =
<spid>
来验证是否为此会话分配了任务。如果发现还有任务,则很可能当前正在终止会话。请注意,此操作可能会持续很长时间,也可能根本不会成功。sessions_id <> NULL
的任务),并终止与其关联的会话以释放工作线程。请注意,终止单个会话可能不够,可能需要终止多个会话。SQL Server 在专用的 TCP/IP 端口上侦听 DAC。错误日志包含所侦听的 DAC 所在的端口号。默认情况下,DAC 侦听器只接受本地端口上的连接。有关激活远程管理员连接的代码示例,请参阅 remote admin connections 选项。
配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL Server