SQL Server資料庫專用管理員DAC串連方式

來源:互聯網
上載者:User

轉:http://www.cnblogs.com/kerrycode/archive/2010/09/18/1830071.html

 

SQL Server 提供了專用管理員連結(DAC)。DAC允許管理員訪問啟動並執行伺服器以執行診斷函數或Transact—SQL語句,或對伺服器上的問題進行故障排除,即使伺服器以鎖定或在非正常狀態下運行。

 

DAC預設情況下只有伺服器上可以使用DAC,但是你可以通過 SQL Server 2005 介面區配置器設定允許遠端電腦上的用戶端應用程式使用 DAC,如所示

 

 

你也可以通過下面的SP_CONFIGURE命令更改資料庫伺服器配置

 --0 - 指明僅允許本地串連使用 DAC

--1 - 指明允許遠端連線使用 DAC

SP_CONFIGURE  'remote admin connections';

SP_CONFIGURE 'remote admin connections', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO

 

 

DAC 連結到資料庫伺服器可以通過SQL Server Management Studio,也可以通過sqlcmd方式串連伺服器,但是需要注意的是如果像那樣開啟SSMS連結到伺服器,則會報錯(自己曾經在這裡折騰過很久)

 

 

 

DAC只支援查詢時段, 不支援Object Explorer. 如果你想在SSMS中用DAC連, 你應該用個正常的串連, 然後用DAC開啟查詢時段.  DAC只支援一個視窗,如果你已經建立一個串連, 則會報錯。MSDN上面提示是並出現錯誤 17810,但是我在SQL Server 05  出現的錯誤64如所示。

 

命令列介面 (sqlcmd) 通過使用特殊的管理員開關 (-A),提供並支援這種專用管理員連接 (DAC)。

 

 

 

下面詳細關於DAC內容摘自MSDN

只有 SQL Server sysadmin 角色的成員可以使用 DAC 串連。預設情況下,只能從伺服器上啟動並執行用戶端建立串連。除非通過 sp_configure 使用 remote admin connections 選項進行配置,否則不允許使用網路連接。DAC 支援加密和 SQL Server 的其他安全性功能。DAC 只允許將使用者環境切換到其他系統管理使用者。

由於 DAC 僅用於在極少數情況下診斷伺服器問題,因此對串連有一些限制:

  • 為了保證有可用的串連資源,每個 SQL Server 執行個體只允許使用一個 DAC。如果 DAC 串連已經啟用,則通過 DAC 進行串連的任何新請求都將被拒絕,並出現錯誤 17810。

  • DAC 最初嘗試串連到與登入帳戶關聯的預設資料庫。串連成功後,可以串連到 master 資料庫。如果預設資料庫離線或不可用,則串連返回錯誤 4060。但是,如果使用以下命令覆蓋預設資料庫,改為串連到 master 資料庫,則串連會成功:

    sqlcmd –A –d master

    由於只要啟動資料庫引擎 執行個體,就能保證 master 資料庫處於可用狀態,因此建議使用 DAC 串連到 master 資料庫。

  • SQL Server 禁止使用 DAC 運行並行查詢或命令。例如,如果使用 DAC 執行以下任何命令,都會建置錯誤 3637。
    • RESTORE

    • BACKUP 
  • 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 中不可用。

儘管在理論上可以在 DAC 上運行無需並存執行的任何 Transact-SQL 陳述式,Microsoft 仍強烈建議您僅限於使用下列診斷和故障排除命令:

  • 查詢動態管理檢視 (DMV) 以進行基本的診斷,例如查詢 sys.dm_tran_locks 以瞭解鎖定狀態,查詢 sys.dm_os_memory_cache_counters 檢查緩衝品質,以及查詢 sys.dm_exec_requests 和 sys.dm_exec_sessions 以瞭解活動的會話和請求。避免使用需要消耗大量資源的 DMV(例如,sys.dm_tran_version_store 需要掃描整個版本儲存區,並且會導致大量的 I/O)或使用了複雜聯結的 DMV。有關效能含義的詳細資料,請參閱特定的 DMV 文檔。

  • 查詢目錄檢視。
  • 基本 DBCC 命令,例如 DBCC FREEPROCCACHE、DBCC FREESYSTEMCACHE、DBCC DROPCLEANBUFFERS, 和 DBCC SQLPERF。請勿運行需要消耗大量資源的命令,如 DBCC CHECKDB、DBCC DBREINDEX 或 DBCC SHRINKDATABASE。
  • Transact-SQL 命令 KILL <spid>。根據 SQL Server 的狀態,KILL 命令並非一定會成功。如果失敗,則唯一的選擇是重新啟動 SQL Server。下面是一般的指導原則。
    • 通過查詢 select * from sys.dm_exec_sessions where session_id = <spid> 來驗證 SPID 是否已被終止。如果沒有返回任何行,則表明會話已被終止。

    • 如果會話仍在運行,則通過執行查詢 select * from sys.dm_os_tasks where session_id = <spid> 來驗證是否為此會話分配了任務。如果發現還有任務,則很可能當前正在終止會話。請注意,此操作可能會持續很長時間,也可能根本不會成功。
    • 如果在與此會話關聯的 sys.dm_os_tasks 中沒有任何任務,但是在執行 KILL 命令後該會話仍然出現在 sys.dm_exec_sessions 中,則表明沒有可用的背景工作執行緒。選擇某個當前正在啟動並執行任務(在 sys.dm_os_tasks 視圖中列出的 sessions_id <> NULL 的任務),並終止與其關聯的會話以釋放背景工作執行緒。請注意,終止單個會話可能不夠,可能需要終止多個會話。
DAC 連接埠

SQL Server 在專用的 TCP/IP 連接埠上偵聽 DAC。錯誤記錄檔包含所偵聽的 DAC 所在的連接埠號碼。預設情況下,DAC 接聽程式只接受本地連接埠上的串連。有關啟用遠端管理員串連的程式碼範例,請參閱 remote admin connections 選項。

配置遠端管理串連之後,會立即啟用 DAC 接聽程式而不必重新啟動 SQL Server 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.