SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法

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" -m2、打开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 1234563 登录后, 可以通过查询动态管理视图来诊断问题

(0)

相关推荐

  • SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法

    Server 2005 专用管理员连接 (DAC) 使用技巧 1 什么是专用管理员连接? SQL Server 2005 为管理员提供了一种特殊的诊断连接,以供在无法与服务器建立标准连接时使用. 2 专用管理员连接有什么用? 即使在 SQL Server 不响应标准连接请求时,管理员也可以使用这种连接访问 SQL Server,以便执行诊断查询并解决问题. 管理员可以通过 DAC 访问正在运行的 SQL Server Database Engine 实例来排除服务器的故障(即使该服务器已停止响应

  • sql 2005不允许进行远程连接可能会导致此失败的解决方法

    (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 网站的数据库连接语句为:Server=127.0.0.1;uid=sa;pwd=xxx;database=xxx 经测试把server=127.0.0.1改为"server=."或"server=机器名",都可以正常连接: 所以只有在用IP时不能连接,经分析,解决方法如下: 1.打开Sql Server 2005 "配置工具" 中的&qu

  • 配置 SQL Server 2005 以允许远程连接的方法

    例如,在使用 SQLCMD 实用工具连接到 SQL Server 时收到以下错误消息: 复制代码 代码如下: Sqlcmd:错误:Microsoft SQL Native Client:建立到服务器的连接时发生错误.连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败. 如果没有将 SQL Server 2005 配置为接受远程连接,则可能会发生此问题.默认情况下,SQL Server 2005 Express Edition 和 SQ

  • SQL 2008 还原SQL 2005备份文件不成功的解决方法

    Sql Server 2008还原2005数据库时出现 3154错误 (从网上找到的第二种方法已经验证通过,留下备用) 解决方法1:不要在数据库名字上点右键选择还原,而要是在根目录"数据库"三个字上点右键选择还原,然后再选择数据库,问题便可以解决,如果不行参照方法2 解决方法2:写sql语句处理: RESTORE DATABASE [databaseName] FROM DISK = N'X:\数据库备份\database.bak' with replace, NOUNLOAD, ST

  • SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)

    出现错误3145备份集中的数据库备份与现有的数据库不同 网上解决办法不少,测试下来都是半吊子,错误还是存在 摸索中,解决了 1.新建一个与现有数据库重名的数据库 2.在查询窗口运行如下语句: 复制代码 代码如下: use master restore database AdventureWorks from disk = 'E:\databasebackup\AdventureWorks.bak' with replace, MOVE N'AdventureWorks_Data' TO N'C:

  • 同时安装vs2005团队开发版和sql 2005企业版的方法(downmoon原作)

    同时安装vs2005团队开发版和sql 2005企业版(downmoon原作) 由于微软在vs2005vsts团队开发版中集成了sql 2005 express,而在SQL 2005中又集成了vs2005Express,,所以当很多用户同时安装vs2005团队开发?:?sql2005企业版(downmoon)时,就会出现数据库连接失败的case 请按照如下步骤修改: OK!作者: 邀月

  • SQL语言查询基础:连接查询 联合查询 代码

    SQL语言查询基础:连接查询  通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志.  在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型.为不同实体创建新的表,尔后通过连接进行查询.  连接可以在Select 语句的FROM子句或Where子句中建立,似是而非在

  • SQL语句中不同的连接JOIN及join的用法

    为了从两个表中获取数据,我们有时会用JOIN将两个表连接起来.通常有以下几种连接方式: JOIN  or  INNER JOIN(内连接) : 这两个是相同的,要求两边表同时有对应的数据,返回行,任何一边缺失数据就不显示. LEFT JOIN(左外连接):即使右边的表中没有匹配,也从左表返回所有的行. RIGHT JOIN(右外连接):即使左边的表中没有匹配,也从右表返回所有的行. FULL JOIN(全外连接):只要其中一个表中存在匹配就返回行. 如例,有grade表(课程号sn,分数scro

  • Navicat连接SQL Server数据:报错08001-命名管道提供程序的完美解决方法

    新安装了SQL server用Navicat进行连接时出现下面的问题 首先用SQL server自带的GUI用windows认证的方式进入,重新配置了登录名和登录密码分别为CDSS和CDSS,之后直接采用此登录名和登录密码发现还是连不上,后来的解决办法是,把服务重新启动一下. 修改配置登录名后需要重启一下服务?好像有那么点道理,注意是重启服务而不仅仅是重启GUI. mark一下服务列表的打开路径:开始→控制面板→系统和安全→管理工具→服务 还有一个是SQL server配置管理器,打开网络配置,

  • SQL Server2019安装后出现连接失败的解决方法

    目录 解决SQL Server 连接失败的问题 一般解决方法: 总结 解决SQL Server 连接失败的问题 最近因学习数据库系统原理,下载安装了一个2019版本的,启动服务后,发现使用Aqua Data Studio根本连不上,打开设备管理器 一看1433端口没有监听: 于是在网站上搜索解决方案,基本上都是说在 SQLServer的管理配置界面设置一下,TCP/IP的端口即可.也的确如此:但是我配置完端口之后,依旧无法正常连接. 因为我遇到的情况相对特殊一些,我的计算机上安装了虚拟机,虚拟了

随机推荐