各版本的 DAC 預設是開啟,但 Express 為節省資源,除非追蹤旗標 7806 啟動,否則無法使用 DAC。
- Express 未開啟追蹤旗標 7806 時,SSMS 要使用 DAC 連線時的錯誤訊息。
- SQL Server Configuration Manager => SQL Server 服務 => SQL Server instance 右鍵內容 => 啟動參數 Tag => 加入啟動參數 '-T 7806'。
- 設定追蹤旗標後必須重新啟動,才會產生作用。
使用 DAC 有兩種方式,使用 sqlcmd 或 SSMS 來進行連線。
- sqlcmd:進入命令提示字元內,輸入 sqlcmd -S ComputerName\Instance -d master -A 就可以利用 DAC 進入。
- -S 參數:指定要連接的 SQL Server Instance,沒有指定的話,會連線至預設的 Instance
- -d 參數:等同於下 USE db_name 的 T-SQL 指令,MSDN 建議使用 DAC 連接到 master DB 去,因為只要啟動 instance,就一定可以連線至 master。
- -A 參數:利用專用管理員連接 (DAC) 來登入 SQL Server。
- SSMS:物件總管無法連接 DAC,必須利用 Database Engine 查詢才可以連線。
新增一個 Database Engine 查詢,並在 SSMS 連線登錄介面的伺服器名稱前加上 "admin:",就可以利用 DAC 連線。
利用 sys.dm_exec_sessions 和 sys.endpoints 可以查詢是否有 DAC 連線。
SELECT
T2.session_id , -- Session 編號
T1.name , -- endpoint 名稱
T2.program_name , -- 應用程式
T1.protocol_desc , -- 通訊協定
T2.host_name , -- 工作主機
T2.login_name , -- 登錄帳號
T2.status -- 狀態
FROM sys.endpoints AS T1
JOIN sys.dm_exec_sessions AS T2 ON T1.endpoint_id = T2.endpoint_id
WHERE T1.is_admin_endpoint = 1
一個 SQL Server instance 只能有一條 DAC 連線,已存在 DAC 連線時,再利用 DAC 連線進入,會出現下列的錯誤訊息。
- sqlcmd 第二次登錄時的錯誤訊息。
- SSMS 第二次登錄時的錯誤訊息。
SQL Server 預設不允許遠端電腦利用 DAC 連線連入,要進行遠端 DAC 連線必須開啟 remote admin connections 的伺服器設定。
- 在 SSMS 中開啟
- T-SQL 語法開啟
EXEC sp_configure 'remote admin connections' , 1
GO
RECONFIGURE
GO
利用 NB-JengTing\SQL2012 電腦遠端 DAC 登入 WIN7-JengTing\SQL2012 電腦,結果如下圖。- 20180705
- 延伸閱讀
- [SQL] DAC 應用
沒有留言:
張貼留言