MSSQL_登入名稱 ‘sa‘ 的登入因觸發程序執行而失敗

本文介绍了由于创建登录触发器错误,导致所有用户无法连接数据库的问题。触发器逻辑错误使得每次登录都会执行ROLLBACK操作,使得数据库进入只读模式。解决方案包括以最小配置启动SQL Server,进入单用户模式,禁用或删除触发器,然后恢复正常启动。
摘要由CSDN通过智能技术生成

项目场景:

創建登入觸發器失誤,導致所有用戶都無法等入數據庫,
我的本意是想創建一個限制用戶連接 IP 和連接客戶端應用程序的登入觸發器,然後在觸發的時候寫入一行日誌記錄

问题描述:

錯誤案例 :
alter TRIGGER [tr_connection_limit]
ON ALL SERVER WITH EXECUTE AS ‘sa’
FOR LOGON
AS
BEGIN
IF (
EXISTS(
SELECT 1 FROM sys.dm_exec_sessions
WHERE
session_id = EVENTDATA().value(’(/EVENT_INSTANCE/SPID)[1]’, ‘smallint’)
AND( program_name like ‘%SQL%’
or EVENTDATA().value(’(/EVENT_INSTANCE/ClientHost)[1]’, ‘varchar(15)’) <> ‘10.130.69.168’
)
)
AND ORIGINAL_LOGIN() = ‘test_user’
)
insert into testdaily…trigger_log values (ORIGINAL_LOGIN(),
EVENTDATA().value(’(/EVENT_INSTANCE/EventType)[1]’, ‘NVARCHAR(100)’),
EVENTDATA().value(’(/EVENT_INSTANCE/TSQLCommand)[1]’, ‘NVARCHAR(2000)’) )
ROLLBACK;
END;

原因分析:

錯誤的原因是 如

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值