SQL 2005使用專用管理員連接(DAC)的技巧及修改系統(tǒng)表的方法
1 什么是專用管理員連接?
SQL Server 2005 為管理員提供了一種特殊的診斷連接,以供在無(wú)法與服務(wù)器建立標(biāo)準(zhǔn)連接時(shí)使用。
2 專用管理員連接有什么用?
即使在 SQL Server 不響應(yīng)標(biāo)準(zhǔn)連接請(qǐng)求時(shí),管理員也可以使用這種連接訪問 SQL Server,以便執(zhí)行診斷查詢并解決問題。
管理員可以通過(guò) DAC 訪問正在運(yùn)行的 SQL Server Database Engine 實(shí)例來(lái)排除服務(wù)器的故障(即使該服務(wù)器已停止響應(yīng)其他客戶端連接)。
3 專用管理員連接使用方法
(1)利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
(2)SQL Server Management Studio 查詢編輯器啟動(dòng) DAC
admin:<實(shí)例名>
如:ADMIN:QIANGGUO\ODS
4 專用管理員連接使用限制
(1)為了保證有可用的連接資源,每個(gè) SQL Server 實(shí)例只允許使用一個(gè) DAC。如果 DAC 連接已經(jīng)激活,則通過(guò) DAC 進(jìn)行連接的任何新請(qǐng)求都將被拒絕,并出現(xiàn)錯(cuò)誤 17810。
(2)DAC 最初嘗試連接到與登錄帳戶關(guān)聯(lián)的默認(rèn)數(shù)據(jù)庫(kù)。連接成功后,可以連接到 master 數(shù)據(jù)庫(kù)。如果默認(rèn)數(shù)據(jù)庫(kù)離線或不可用,則連接返回錯(cuò)誤 4060。但是,如果使用以下命令覆蓋默認(rèn)數(shù)據(jù)庫(kù),改為連接到 master 數(shù)據(jù)庫(kù),則連接會(huì)成功:
sqlcmd –A –d master
由于只要啟動(dòng)數(shù)據(jù)庫(kù)引擎 實(shí)例,就能保證 master 數(shù)據(jù)庫(kù)處于可用狀態(tài),因此建議使用 DAC 連接到 master 數(shù)據(jù)庫(kù)。
(4)SQL Server 禁止使用 DAC 運(yùn)行并行查詢或命令。例如,如果使用 DAC 執(zhí)行以下任何命令,都會(huì)生成錯(cuò)誤 3637。
RESTORE或BACKUP
(5)DAC 只能使用有限的資源。請(qǐng)勿使用 DAC 運(yùn)行需要消耗大量資源的查詢(例如,對(duì)大型表執(zhí)行復(fù)雜的聯(lián)接)或可能造成阻塞的查詢。這有助于防止將 DAC 與任何現(xiàn)有的服務(wù)器問題混淆。為避免潛在的阻塞情況,當(dāng)需要運(yùn)行可能造成阻塞的查詢時(shí),
請(qǐng)盡可能在基于快照的隔離級(jí)別下運(yùn)行查詢;否則,請(qǐng)將事務(wù)隔離級(jí)別設(shè)置為 READ UNCOMMITTED 和/或?qū)?LOCK_TIMEOUT 值設(shè)置為較短的值(如 2000 毫秒)。這可以防止 DAC 會(huì)話被阻塞。
但是,根據(jù) SQL Server 所處的狀態(tài),DAC 會(huì)話可能會(huì)在閂鎖上被阻塞??梢允褂?CNTRL-C 終止 DAC 會(huì)話,但不能保證一定成功。如果失敗,唯一的選擇是重新啟動(dòng) SQL Server。
為保證連接成功并排除 DAC 故障,SQL Server 保留了一定的資源用于處理 DAC 上運(yùn)行的命令。通常這些資源只夠執(zhí)行簡(jiǎn)單的診斷和故障排除功能,如下所示。
為了保留資源,DAC 連接在 SQL Server 2005 Express Edition 中不可用。
5 如何啟用遠(yuǎn)程DAC連接?
只有 SQL Server sysadmin 角色的成員可以使用 DAC 連接。默認(rèn)情況下,只能從服務(wù)器上運(yùn)行的客戶端建立連接。除非通過(guò) sp_configure 使用 remote admin connections 選項(xiàng)進(jìn)行配置,否則不允許使用網(wǎng)絡(luò)連接。
DAC 支持加密和 SQL Server 的其他安全性功能。DAC 只允許將用戶上下文切換到其他管理用戶。
默認(rèn)情況下,DAC 僅偵聽環(huán)回 IP 地址 (127.0.0.1) 端口 1434。
remote admin connections 設(shè)置的可能值如下:
0 - 指明僅允許本地連接使用 DAC
1 - 指明允許遠(yuǎn)程連接使用 DAC
--啟用遠(yuǎn)程DAC連接
sp_configure 'remote admin connections', 1;
GO
RECONFIGURE;
GO
注意:配置遠(yuǎn)程管理連接之后,會(huì)立即啟用 DAC 偵聽器而不必重新啟動(dòng) SQL Server,并且客戶端可以立即遠(yuǎn)程連接到 DAC。
6 常用腳本
--利用sqlcmd
sqlcmd -Sqiangguo\ods -A
sqlcmd -Sadmin:qiangguo\ods
-- 查詢動(dòng)態(tài)視圖
select * from sys.dm_os_memory_cache_counters
select * from sys.dm_exec_requests
select * from sys.dm_exec_sessions
-- 結(jié)束會(huì)話
KILL <spid>
select * from sys.dm_exec_sessions where session_id = <spid>
select * from sys.dm_os_tasks where session_id = <spid>
7 常見錯(cuò)誤
問題(1)
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods,1434
HResult 0x274D,級(jí)別 16,狀態(tài) 1
TCP 提供程序: 由于目標(biāo)機(jī)器積極拒絕,無(wú)法連接。
Sqlcmd: 錯(cuò)誤: Microsoft SQL Native Client : 建立到服務(wù)器的連接時(shí)發(fā)生錯(cuò)誤。連接到
SQL Server 2005 時(shí),默認(rèn)設(shè)置 SQL Server 不允許遠(yuǎn)程連接這個(gè)事實(shí)可能會(huì)導(dǎo)致失敗。
。
Sqlcmd: 錯(cuò)誤: Microsoft SQL Native Client : 登錄超時(shí)已過(guò)期。
解決:
問題(2)
標(biāo)題: 連接到服務(wù)器------------------------------
無(wú)法連接到 ADMIN:QIANGGUO\ODS。
------------------------------
其他信息:
不支持專用管理員連接。 (ObjectExplorer)
解決:
問題(3)
C:\Documents and Settings\guoqiang>sqlcmd -Sadmin:qiangguo\ods
Sqlcmd: 錯(cuò)誤: Microsoft SQL Native Client : 由于打開服務(wù)器連接過(guò)程中的延遲,無(wú)法
完成登錄過(guò)程。
解決:試著不用DAC 連接,用正常的連接成功后,再用DAC連接。
如:
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
Sqlcmd: 錯(cuò)誤: Microsoft SQL Native Client : 由于打開服務(wù)器連接過(guò)程中的延遲,無(wú)法
完成登錄過(guò)程。
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods
1> quit
C:\Documents and Settings\guoqiang>sqlcmd -S qiangguo\ods -A
1>
問題(4)
標(biāo)題: 連接到服務(wù)器
------------------------------
無(wú)法連接到 ADMIN:QIANGGUO\ODS。
------------------------------
其他信息:
已成功與服務(wù)器建立連接,但是在登錄過(guò)程中發(fā)生錯(cuò)誤。 (provider: TCP 提供程序, error: 0 - 遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接。)
(Microsoft SQL Server,錯(cuò)誤: 10054)
解決:已經(jīng)建立一個(gè)DAC連接,請(qǐng)先關(guān)閉后,再連接。
文章出處:http://www.diybl.com/course/7_databases/sql/sqlServer/200863/120812.html
================================================================ 作者:lansz | 可以轉(zhuǎn)載, 轉(zhuǎn)載時(shí)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及版權(quán)聲明
鏈接:http://www.lansz.com/html/2008/05/system_catalog_change_in_sql2005.html 問題:
在使用SQL Server 2000的時(shí)候,大家可能已經(jīng)很習(xí)慣用下面的語(yǔ)句在修改系統(tǒng)表了
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中,你還是想通過(guò)運(yùn)行上面的語(yǔ)句來(lái)修改系統(tǒng)表,那你就大錯(cuò)特錯(cuò)了,雖然在SQL Server 2005中運(yùn)行上面的語(yǔ)句是不會(huì)有任何報(bào)錯(cuò)的,但是但你試圖去修改系統(tǒng)表的時(shí)候你會(huì)得到下面這樣的錯(cuò)誤信息:
Msg 259, Level 16, State 1, Line 1
Ad hoc updates to system catalogs are not allowed.這時(shí)候你只要在SQL Server 2005的BOL中查一下”allow updates”你就會(huì)發(fā)現(xiàn)如下的說(shuō)明:
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.看來(lái)在SQL Server 2005中allow updates只是一個(gè)擺設(shè)了,根本不能用,而且系統(tǒng)表也不能直接被修改了。但是如果你確實(shí)需要修改系統(tǒng)表那怎么辦呢?
還好,Microsoft還是沒有做絕的,雖然allow updates不能用了,但還是可以通過(guò)別的途徑修改系統(tǒng)表,那就是:先用單用戶模式啟動(dòng)SQL Server 2005實(shí)例,然后再用DAC(Dedicated Administrator Connection/專用管理員連接)連接到SQL實(shí)例,然后不用運(yùn)行什么sp_configure就可以直接修改系統(tǒng)表了。
基本的步驟:
1、啟動(dòng)到單用戶模式
"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -m2、打開SQL Server Management Studio,在Connect to Server對(duì)話框中的Server Name處輸入admin:InstanceName,這樣就可以用DAC登陸啟動(dòng)的SQL Server實(shí)例了。
友情提示:
另外,SQL Server 2005加強(qiáng)了字典管理功能,如果要修改系統(tǒng)表的操作能有存儲(chǔ)過(guò)程支持的情況下一定要用存儲(chǔ)過(guò)程,不要去直接修改系統(tǒng)表,以維護(hù)數(shù)據(jù)字典的一致性。
參考資料:
1、allow updates Option
2、Using a Dedicated Administrator Connection
3、Starting SQL Server in Single-User Mode
================================================================
如何使用SQL Server 2005 專用管理員連接(DAC)登錄到服務(wù)器
一 什么是DAC SQL Server 2005 為管理員提供了一種特殊的診斷連接,以供在無(wú)法與服務(wù)器建立標(biāo)準(zhǔn)連接時(shí)使用。即使在 SQL Server 不響應(yīng)標(biāo)準(zhǔn)連接請(qǐng)求時(shí),管理員也可以使用這種連接訪問 SQL Server,以便執(zhí)行診斷查詢并解決問題。命令行界面 (sqlcmd) 通過(guò)使用特殊的管理員開關(guān) (-A),提供并支持這種專用管理員連接 (DAC)。二如何使用DAC登錄到服務(wù)器1 本機(jī)DAC登錄 命令行方式下執(zhí)行 sqlcmd -A -S sql服務(wù)器名2 遠(yuǎn)程DAC登錄 1) 打開遠(yuǎn)程DAC選項(xiàng) '程序'->'Sql Server2005'-> '配置工具'-> 'Sql Server 外圍應(yīng)用配置器'-> '功能的外圍應(yīng)用配置器'-> 'DataBase Engine'-> 'DAC' -> '啟用遠(yuǎn)程DAC' 2) 登錄到遠(yuǎn)程服務(wù)器 sqlcmd -A -S 192.168.0.1 -U sa -P 1234563 登錄后, 可以通過(guò)查詢動(dòng)態(tài)管理視圖來(lái)診斷問題
相關(guān)文章
SQL?Server中帶有OUTPUT子句的INSERT,DELETE,UPDATE應(yīng)用
這篇文章介紹了SQL?Server中帶有OUTPUT子句的INSERT,DELETE,UPDATE應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06SQLSERVER 2005中使用sql語(yǔ)句對(duì)xml文件和其數(shù)據(jù)的進(jìn)行操作(很全面)
由于數(shù)據(jù)庫(kù)對(duì)xml數(shù)據(jù)直接處理有很多優(yōu)勢(shì),05也對(duì)這方面加強(qiáng)了功能。下面是一些實(shí)例代碼,大家可以參考下。2010-06-06sql server 2005中使用with實(shí)現(xiàn)遞歸的方法
這篇文章介紹了sql server 2005中使用with實(shí)現(xiàn)遞歸的方法,有需要的朋友可以參考一下2013-09-09SQL Server中的XML數(shù)據(jù)進(jìn)行insert、update、delete操作實(shí)現(xiàn)代碼
SQL Server 2005/2008增加了對(duì)XML數(shù)據(jù)的支持,同時(shí)也新增了幾種操作XML的方法,本文主要以SQL Server 2008為例介紹如何對(duì)XML數(shù)據(jù)進(jìn)行insert、update、delete2011-10-10SQL Server 2005與sql 2000之間的數(shù)據(jù)轉(zhuǎn)換方法
這篇文章主要介紹了SQL Server 2005與sql 2000之間的數(shù)據(jù)轉(zhuǎn)換方法,需要的朋友可以參考下2014-08-08SQLServer2005 沒有日志文件(*.ldf) 只有數(shù)據(jù)文件(*.mdf) 恢復(fù)數(shù)據(jù)庫(kù)的方法
SQLServer2005 沒有日志文件(*.ldf) 只有數(shù)據(jù)文件(*.mdf) 恢復(fù)數(shù)據(jù)庫(kù)的方法2011-12-12