如何使用专用管理连接进行问题诊断和处理 【摘自SQL Server在线帮助】

DAC(Dedicated Admin Connection)是SQL Server
2005引入的一个东西,目的是在SQL
Server发生严重性能问题的时候仍保留有限的资源保证管理员能够执行一些简单的命令用于问题诊断、释放资源、杀死肇事进程等。微软官方对DAC的说明:使用专用管理员连接.aspx)。对于DAC使用的一般情况,有两个不错的Blog值得推荐:

SQL Server
为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。即使在
SQL Server 不响应标准连接请求时,管理员也可以使用此诊断连接访问 SQL
Server,以便执行诊断查询并解决问题。

上面的两篇blog涉及到的基本是DAC访问单机单实例的情况。本文试图对DAC访问单机多实例的情况也做个探讨。

此专用管理员连接 (DAC) 支持 SQL Server 的加密功能和其他安全功能。DAC
只允许将用户上下文切换到其他管理用户。

5)如何确认当前是DAC连接还是普通连接

DAC 端口

SQL Server 在启动数据库引擎时动态分配的专用 TCP/IP 端口上侦听
DAC。错误日志包含所侦听的 DAC 所在的端口号。默认情况下,DAC
侦听器只接受本地端口上的连接。有关激活远程管理员连接的代码示例,请参阅

配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL
Server,并且客户端可以立即远程连接到 DAC。通过先在本地使用 DAC 连接到
SQL Server,然后再执行 sp_configure 存储过程接受远程连接,则即使
SQL Server 停止响应,DAC 侦听器仍然可以接受远程连接。

对于群集配置,DAC 在默认情况下是禁用的。用户可以执行 sp_configure
remote admin connection 选项,使 DAC 侦听器能够访问远程连接。如果
SQL Server 停止响应并且未启用 DAC 侦听器,则可能必须重新启动 SQL Server
来连接 DAC。因此,建议在群集系统上启用 remote admin connections
配置选项。

DAC 端口由 SQL Server 在启动时动态分配。当连接到默认实例时,DAC
会避免在连接时对 使用 SQL Server 解决协议 (SSRP) 请求。它先通过 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

--以下的形式都可以访问
sqlcmd -S myServer -U myUser -P myPassword -A
sqlcmd -S ADMIN:myServer -U myUser -P myPassword
sqlcmd -S myServer,1434 -U myUser -P myPassword
sqlcmd -S xxx.xxx.xxx.xxx -U myUser -P myPassword -A
sqlcmd -S xxx.xxx.xxx.xxx,1434 -U myUser -P myPassword

说明:
a) sqlcmd命令行中参数与参数值之间可以有空格也可以没有;如果你的密码中有空格,你可以用双引号把你的密码引起来;
b) sqlcmd命令中的“-S”其实也可以用"/S",其它参数也一样;
c) 1434是SQL Server连接的默认端口号;
d) 在服务器前加"ADMIN:"也是为了指定进行DAC连接;
e) “-A”是在sqlcmd命令行中指定DAC连接的参数;
f) "-A","ADMIN:",",1434"不能在一条命令中出现两个或以上,否则会报错;
g) 不在命令行中加入这3个参数("-A","ADMIN:",",1434")的任何一个,登录也能成功,差别在于你使用的连接是普通连接,不是DAC连接。一般来说,普通连接能用的资源更多,但是当系统性能出现严重问题的时候普通连接可能没法建立,这也是引入DAC的初衷;再就是DAC连接下能看到一些有助于诊断的秘密视图(参见上面推荐的第一个blog)。

示例

在此示例中,管理员发现服务器 URAN123
不响应,因此要诊断该问题。为此,用户激活 sqlcmd
命令提示实用工具,并使用 -A 指明 DAC 连接到服务器 URAN123

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

现在,管理员可以执行查询来诊断问题,并且可以终止停止响应的会话。

我通过测试得到的结论是:对于单机单SQL Server实例,使用非默认端口时候的DAC访问跟使用默认端口1433时候完全一样。网上的一些论坛说要确保“SQL Server Browser”在运行,似乎不是必要的,至少我测试(用的SQL Server 2008 R2 SP3)过程中“SQL Server Browser”是不是在运行不影响访问。

SQL Server 尽力使 DAC
连接成功,但在非常特殊的情况下也可能会出现连接失败。

2)单机单SQL Server实例,SQL Server实例使用非默认端口

使用 DAC 连接

默认情况下,只能从服务器上运行的客户端建立连接。不允许进行网络连接,除非它们是使用带
sp_configure 存储过程配置的。

只有 SQL Server sysadmin 角色的成员可以使用 DAC 连接。

通过使用专用的管理员开关 (-A) 的 sqlcmd
命令提示实用工具,可以支持和使用 DAC。有关使用 sqlcmd
的详细信息,请参阅。您还可以将前缀 admin: 连接到实例名上,格式为
sqlcmd -Sadmin:*<instance_name>。还可以通过连接到
admin:<
实例名*>,从 SQL Server Management Studio
查询编辑器启动 DAC。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website