SQL Server 为什么在用户执行ALTER USER .... DISABLE时执行此存储过程?

pftdvrlh  于 2022-12-17  发布在  其他
关注(0)|答案(2)|浏览(141)

特定用户-Main_user(缺省数据库为db_A)执行

USE db_A
ALTER USER another_user DISABLE;

每次尝试这样做时,都会显示错误消息:
消息916,级别14,状态2,服务器****,过程****sysadmin,第32行
服务器主体Main_user无法在当前安全上下文下访问数据库db_ZZZ。
如您所见,该过程似乎试图执行涉及db_ZZZ的代码,而这显然与ALTER USER语句无关。
问题是,我在任何地方都找不到过程******sysadmin(不是触发器,什么都没有),而且我不明白在这种情况下它有什么用。
哪些解释是合理的?
我不知道提及Main_user是Wherescape RED的服务用户是否有用。我不能与任何其他用户测试此代码,因为我没有任何其他用户拥有这样做的权限。

92dk7w1h

92dk7w1h1#

这听起来像是在服务器上启用了DDL触发器。要查看是否是这种情况,请查看sys.server_triggers系统视图,或者在SSMS中,查看Server Objects → Triggers。从那里,您应该能够看到触发器的定义是什么,并决定是要保留它(进行修改以使其实际工作)还是完全删除它。

zqry0prt

zqry0prt2#

就像Larnu说的,你可以用下面的查询找到触发器:

SELECT *
FROM   sys.triggers AS t
       JOIN sys.all_sql_modules AS asm ON asm.object_id = t.object_id
WHERE  asm.definition LIKE '%*****sysadmin%';

相关问题