Server 2005 专用管理员连接 (DAC) 使用技巧

1 什么是专用管理员连接?
SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。

2 专用管理员连接有什么用?
即使在 SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL Server,以便执行诊断查询并解决问题。
管理员可以通过 DAC 访问正在运行的 SQL Server Database Engine 实例来排除服务器的故障(即使该服务器已停止响应其他客户端连接)。

3 专用管理员连接使用方法
(1)利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
(2)SQL Server Management Studio 查询编辑器启动 DAC
admin:<实例名>
如:ADMIN:QIANGGUO\ODS

4 专用管理员连接使用限制
(1)为了保证有可用的连接资源,每个 SQL Server 实例只允许使用一个 DAC。如果 DAC 连接已经激活,则通过 DAC 进行连接的任何新请求都将被拒绝,并出现错误 17810。
(2)DAC 最初尝试连接到与登录帐户关联的默认数据库。连接成功后,可以连接到 master 数据库。如果默认数据库离线或不可用,则连接返回错误 4060。但是,如果使用以下命令覆盖默认数据库,改为连接到 master 数据库,则连接会成功:
sqlcmd –A –d master
由于只要启动数据库引擎 实例,就能保证 master 数据库处于可用状态,因此建议使用 DAC 连接到 master 数据库。
(4)SQL Server 禁止使用 DAC 运行并行查询或命令。例如,如果使用 DAC 执行以下任何命令,都会生成错误 3637。
RESTORE或BACKUP
(5)DAC 只能使用有限的资源。请勿使用 DAC 运行需要消耗大量资源的查询(例如,对大型表执行复杂的联接)或可能造成阻塞的查询。这有助于防止将 DAC 与任何现有的服务器问题混淆。为避免潜在的阻塞情况,当需要运行可能造成阻塞的查询时,
请尽可能在基于快照的隔离级别下运行查询;否则,请将事务隔离级别设置为 READ UNCOMMITTED 和/或将 LOCK_TIMEOUT 值设置为较短的值(如 2000 毫秒)。这可以防止 DAC 会话被阻塞。
但是,根据 SQL Server 所处的状态,DAC 会话可能会在闩锁上被阻塞。可以使用 CNTRL-C 终止 DAC 会话,但不能保证一定成功。如果失败,唯一的选择是重新启动 SQL Server。
为保证连接成功并排除 DAC 故障,SQL Server 保留了一定的资源用于处理 DAC 上运行的命令。通常这些资源只够执行简单的诊断和故障排除功能,如下所示。
为了保留资源,DAC 连接在 SQL Server 2005 Express Edition 中不可用。

5 如何启用远程DAC连接?
只有 SQL Server sysadmin 角色的成员可以使用 DAC 连接。默认情况下,只能从服务器上运行的客户端建立连接。除非通过 sp_configure 使用 remote admin connections 选项进行配置,否则不允许使用网络连接。
DAC 支持加密和 SQL Server 的其他安全性功能。DAC 只允许将用户上下文切换到其他管理用户。
默认情况下,DAC 仅侦听环回 IP 地址 (127.0.0.1) 端口 1434。
remote admin connections 设置的可能值如下:
0 - 指明仅允许本地连接使用 DAC
1 - 指明允许远程连接使用 DAC
--启用远程DAC连接
sp_configure 'remote admin connections', 1;
GO
RECONFIGURE;
GO
注意:配置远程管理连接之后,会立即启用 DAC 侦听器而不必重新启动 SQL Server,并且客户端可以立即远程连接到 DAC。

6 常用脚本
--利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
-- 查询动态视图
select * from sys.dm_os_memory_cache_counters
select * from sys.dm_exec_requests
select * from sys.dm_exec_sessions
-- 结束会话
KILL <spid>
select * from sys.dm_exec_sessions where session_id = <spid>
select * from sys.dm_os_tasks where session_id = <spid>

7 常见错误
问题(1)
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods,1434
HResult 0x274D,级别 16,状态 1
TCP 提供程序: 由于目标机器积极拒绝,无法连接。

Sqlcmd: 错误: Microsoft SQL Native Client : 建立到服务器的连接时发生错误。连接到
 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败。

Sqlcmd: 错误: Microsoft SQL Native Client : 登录超时已过期。
解决:

问题(2)
标题: 连接到服务器------------------------------

无法连接到 ADMIN:QIANGGUO\ODS。

------------------------------
其他信息:

不支持专用管理员连接。 (ObjectExplorer)
解决:

问题(3)
C:\Documents and Settings\guoqiang>sqlcmd -Sadmin:qiangguo\ods
Sqlcmd: 错误: Microsoft SQL Native Client : 由于打开服务器连接过程中的延迟,无法
完成登录过程。
解决:试着不用DAC 连接,用正常的连接成功后,再用DAC连接。
如:
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
Sqlcmd: 错误: Microsoft SQL Native Client : 由于打开服务器连接过程中的延迟,无法
完成登录过程。

C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods
1> quit

C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
1>

问题(4)
标题: 连接到服务器
------------------------------

无法连接到 ADMIN:QIANGGUO\ODS。

------------------------------
其他信息:

已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。)
(Microsoft SQL Server,错误: 10054)

解决:已经建立一个DAC连接,请先关闭后,再连接。

文章出处:http://www.diybl.com/course/7_databases/sql/sqlServer/200863/120812.html

================================================================
作者:lansz | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
链接:http://www.lansz.com/html/2008/05/system_catalog_change_in_sql2005.html

问题:

在使用SQL Server 2000的时候,大家可能已经很习惯用下面的语句在修改系统表了

EXEC sp_configure 'allow updates', 1
RECONFIGURE WITH OVERRIDE;
 
-- do some modification to system tables
 
EXEC sp_configure 'allow updates', 0
RECONFIGURE WITH OVERRIDE;

但是如果在SQL Server 2005中,你还是想通过运行上面的语句来修改系统表,那你就大错特错了,虽然在SQL Server 2005中运行上面的语句是不会有任何报错的,但是但你试图去修改系统表的时候你会得到下面这样的错误信息:

Msg 259, Level 16, State 1, Line 1
Ad hoc updates to system catalogs are not allowed.

这时候你只要在SQL Server 2005的BOL中查一下”allow updates”你就会发现如下的说明:

allow updates Option

Updated: 14 April 2006

This option is still present in the sp_configure stored procedure, although its functionality is unavailable in Microsoft SQL Server 2005 (the setting has no effect). In SQL Server 2005, direct updates to the system tables are not supported.

看来在SQL Server 2005中allow updates只是一个摆设了,根本不能用,而且系统表也不能直接被修改了。但是如果你确实需要修改系统表那怎么办呢?

还好,Microsoft还是没有做绝的,虽然allow updates不能用了,但还是可以通过别的途径修改系统表,那就是:先用单用户模式启动SQL Server 2005实例,然后再用DAC(Dedicated Administrator Connection/专用管理员连接)连接到SQL实例,然后不用运行什么sp_configure就可以直接修改系统表了。

基本的步骤:

1、启动到单用户模式

"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -m

2、打开SQL Server Management Studio,在Connect to Server对话框中的Server Name处输入admin:InstanceName,这样就可以用DAC登陆启动的SQL Server实例了。

友情提示:

另外,SQL Server 2005加强了字典管理功能,如果要修改系统表的操作能有存储过程支持的情况下一定要用存储过程,不要去直接修改系统表,以维护数据字典的一致性。

参考资料:

1、allow updates Option

2、Using a Dedicated Administrator Connection

3、Starting SQL Server in Single-User Mode

================================================================

如何使用SQL Server 2005 专用管理员连接(DAC)登录到服务器

一 什么是DAC
   SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用。即使在 SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL Server,以便执行诊断查询并解决问题。命令行界面 (sqlcmd) 通过使用特殊的管理员开关 (-A),提供并支持这种专用管理员连接 (DAC)。
二如何使用DAC登录到服务器
1 本机DAC登录 
命令行方式下执行  sqlcmd -A -S sql服务器名
2  远程DAC登录
  1) 打开远程DAC选项
    '程序'->'Sql Server2005'->  '配置工具'-> 'Sql Server  外围应用配置器'-> '功能的外围应用配置器'-> 'DataBase Engine'->  'DAC' -> '启用远程DAC'
  2)  登录到远程服务器
  sqlcmd -A -S 192.168.0.1 -U sa -P 123456
3  登录后, 可以通过查询动态管理视图来诊断问题

SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法相关推荐

  1. SQL Server 2005中的分区表

    SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表? SQL Server 2005中的分区表(二):如何添加.查询.修改分区表中的数据 SQL Serve ...

  2. SQL Server 2005中的分区表(四):删除(合并)一个分区

    在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不 同年份的数据放在不同的物理分区表里.具体的分区方式为: 第1个小表:2010-1-1以前的数据(不包含2010-1-1). 第2个小表: ...

  3. SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?

    如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了. 1.数据库中某个表中的数据很多.很多是什么概念?一万条?两万条?还是十万条.一百万条?这个,我觉得是仁者见仁.智者见智的 ...

  4. MS SQL专用管理员连接DAC

    在SQL SERVER 2005中,微软引入了一个叫做数据库专用管理员连接方式(DAC Dedicated Administrator Connection)的特性,使用这个新特性,数据库管理员可以在 ...

  5. 轻松掌握使用 SQL Server 浏览器,解决SQL Server 2005跨网段不能连接问题

    SQL Server Browser  作为 Windows 服务在服务器上运行.SQL Server Browser 侦听对 SQL Server 资源的传入请求,并提供计算机上安装的 SQL Se ...

  6. SQL Server 2005 中提供的隔离级别

    SQL Server 2005 中提供的隔离级别 隔离级别 脏读(可能的情况) 非可重复读取(可能的情况) Phantom(可能的情况) 并发控制 读取未提交 是 是 是 (无) 读取已提交 否 是 ...

  7. SQL Server 2005中的CLR(2)

    原文:http://www.sufeinet.com/thread-2253-1-1.html 这一节咱们来说说ClR的性能,我们不能只使用它而不去考虑到低 为什么要使用它或是在什么时候应该使用它,像 ...

  8. SQL Server 2005 中的商务智能和数据仓库

    微软发布了SQL Server 2005,对于微软与BI来说这是一个非常重要的版本,它完善了微软在BI方面的产品线.SQL Server 2005以及 Visual Studio .net2005的整 ...

  9. 使用 SQL Server 2005中的 CLR 集成

    Balaji Rathakrishnan Christian Kleinerman Brad Richards Ramachandran Venkatesh Vineet Rao Microsoft ...

最新文章

  1. phpcms中调用外部网站数据
  2. springmvc-返回值
  3. 医疗数据典型特征及架构发展方向研究
  4. 没想到,这么简单的线程池用法,深藏这么多坑
  5. jQuery左右循环滚动图片特效
  6. mysql基础数据类型字节数_MySQL基础之数据类型
  7. SQL Server 2012 开发新特性:文件表
  8. Mozilla 修复跨平台加密库 NSS 中的严重漏洞
  9. 找工作秘笈:“让别人知道你知道”
  10. [蛋蛋涂鸦]蜡笔蛋&某蛋真面目(表被吓着)
  11. 修复IPSEC Services服务无法启动的问题
  12. 笔记本使用Nsight注意事项
  13. 安得一颗光明心——《王阳明大传》的读后感作文4100字
  14. 第二章 Qt窗体应用------修改标题栏图标
  15. 一篇文章读懂NHTSA自动驾驶分级(转)
  16. 基于TBSS的DTI数据处理流程
  17. python刷新腾讯云cdn
  18. Centos7 使用cobbler搭建PXE网络装机服务器安装Centos、Windows、PE、自定义wim镜像
  19. Typora如何将图片使用相对路径保存到统一文件夹中(解决.md文档传输丢图片的方法)
  20. HTTP 协议简单理解与总结

热门文章

  1. 写了一条Sybase SQL语句,用于生成一个表中所有数据的插入记录的生成
  2. Scala学习笔记03:操作符
  3. 【BZOJ1415】【codevs1784】聪聪与可可,概率DP
  4. 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
  5. 【codevs1226】倒水问题,BFS练习
  6. 服务器安装系统的工具,工具集#08 服务器安装系统指南
  7. linux开机自启服务命令,linux开机自启服务命令
  8. 深度linux_国产系统?基于Linux研发的深度Deepin系统,到底算不算真国产
  9. bzoj1069 [SCOI2007]最大土地面积 凸包+单调性
  10. 【英语学习】【Daily English】U09 Fashion L01 Which one do you think suits me better?