如何防止sql server中的另一个用户删除sysadmin用户

Sey*_*emi 1 trigger sql-server rollback

我在我的服务器上安装了一个遗留应用程序,该应用程序配置为仅与一个用户“sa”一起工作,并且在此应用程序中编写了类似定时炸弹的脚本,只要它找到另一个用户,它就会毫不费力地删除该用户。

我们需要使用另一个应用程序访问数据库,并且“sa”的密码丢失,因此剩下的唯一方法是创建另一个具有系统管理员权限的用户。

但由于脚本删除了所有用户,我不能做任何特别的事情,所以我的问题是:

每次尝试删除我的用户时,如何阻止该脚本或回滚其工作?

Edw*_*and 5

CREATE TRIGGER [DDL_PreventLoginDrop]ON ALL SERVER 
FOR DROP_LOGIN
AS 
DECLARE @LoginName NVARCHAR(128),@eventData XML

SET @eventData = EVENTDATA()            
SELECT @LoginName=@eventData.value('data(/EVENT_INSTANCE/ObjectName)[1]', 'SYSNAME')
IF @LoginName IN ('Login name that you want to protect')
  BEGIN
    PRINT 'Gotha, you nasty application!' 
    ROLLBACK;
  END
GO
ENABLE TRIGGER [DDL_PreventLoginDrop] ON ALL SERVER 
Run Code Online (Sandbox Code Playgroud)

免责声明:希望您同意这回答了您的问题“如何防止删除登录”,但这绝不是正确的根本原因修复。但是,我知道有一些非常讨厌的遗留应用程序无法更改代码......我必须承认,这个只是让我微笑......