當登錄觸發器發生錯誤(如引用不存在的資料庫或表)時,所有正常登錄嘗試將失敗,錯誤訊息如圖所示。

圖 1:登錄觸發器錯誤導致連線失敗
CREATE TRIGGER BadLogonTrigger ON ALL SERVER FOR LOGON
AS
BEGIN
INSERT INTO BadDB.dbo.SomeTable VALUES ('Test');
END;
GO
因 BadDB 不存在,該觸發器會導致所有登錄嘗試失敗。
DAC 是 SQL Server 為管理員保留的「後門」,允許在標準連線全部失敗時仍能連線進行診斷。關鍵特性:DAC 不會執行登錄觸發器,因此可繞過故障觸發器。
-A 開關:sqlcmd -S server_name -AADMIN: 前綴,如 ADMIN:server_name。
圖 2:SSMS 指定 ADMIN: 連線
DROP TRIGGER BadLogonTrigger ON ALL SERVER; 移除故障觸發器,或用 DISABLE TRIGGER 停用它。-d master 強制連 master。sp_configure 'remote admin connections', 1; RECONFIGURE;| 錯誤現象 | 原因與解決 |
|---|---|
| TCP 連線被拒絕 | 檢查 SQL Server 遠程連線設定、防火牆、瀏覽器服務是否啟動。 |
| 「不支援專用管理員連接」 | 確認已啟用遠程 DAC,且用戶為 sysadmin 角色成員。 |
| 登錄超時 | 先用一般連線成功後,再嘗試 DAC;或檢查實例是否處於高負載。 |
| 遠程主機強迫關閉連線 | 已有其他 DAC 連線佔用,先關閉現有 DAC 會話再試。 |