這代表著, 若是需要在登入時, 做一些限制來增加保護或是安全是很不錯的, 例如限制 sa 僅能由特定的 ip 來登入, 或是同一帳號不得登入多次等.
以下為一些範例:
限制特定帳號於特定ip登入: http://byronhu.spaces.live.com/Blog/cns ... 2238.entry
代碼: 選擇全部
CREATE TRIGGER [connection_limit_trigger]
ON ALL SERVER
WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'sa' AND
not exists (SELECT * FROM sys.dm_exec_connections
WHERE client_net_address = '192.168.1.10'
and session_id=@@SPID)
ROLLBACK;
END;
以下為限制 'sa' 使用 ssms 工具來連線
代碼: 選擇全部
USE master;
GO
-- 建立登入觸發程序,以回應 LOGON 事件。
CREATE TRIGGER deny_remote_ssms_trigger
ON ALL SERVER WITH EXECUTE AS 'sa'
FOR LOGON
AS
BEGIN
IF ORIGINAL_LOGIN()= 'sa' AND
(
SELECT COUNT(*)
FROM sys.dm_exec_sessions
WHERE is_user_process = 1
AND original_login_name = 'sa'
AND and session_id=@@SPID
AND [program_name] LIKE N'Microsoft SQL Server Management Studio%' -- 只限制由 SSMS 連過來
) > 0
ROLLBACK;
END;
GO
而 create trigger 的參考資料可以參考這篇: http://msdn.microsoft.com/zh-tw/library/ms189799.aspx, 裡面也有提到有關 logon trigger 的範例.