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

问题:

在使用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服务器名
远程DAC登录
  1) 打开远程DAC选项
    '程序'->'Sql Server2005'->  '配置工具'-> 'Sql Server  外围应用配置器'-> '功能的外围应用配置器'-> 'DataBase Engine'->  'DAC' -> '启用远程DAC'
  2)  登录到远程服务器
  sqlcmd -A -S 192.168.0.1 -U sa -P 123456
登录后, 可以通过查询动态管理视图来诊断问题
posted @ 2011-04-06 18:23  Benny Ng  阅读(329)  评论(0编辑  收藏  举报