我们正在运行 SQL SERVER 2008,我有一个正在执行存储过程的网页。此存储过程对具有触发器的几个表运行各种更新。我在网站运行时收到的错误如下
Error 6549, Level 16, State , Procedure trg_TAA_DFLRemoval, Line1, message: A .NET framework error occurred during execution of user defined routine or aggregate 'trg_tAA_DFLRemoval':
接下来是所有方法调用。
我努力了
GRANT EXECUTE ON ASSEMBLY::[T2AuditTrigger] TO [NT AUTHORITY\NETWORK SERVICE]
但是我的 SQL 生成的脚本中似乎存在语法错误。在搜索时,我发现 Microsoft 决定不允许 GRANT EXECUTE 运行。这是对我的问题的准确描述吗?
我似乎无法弄清楚如何获取用户运行程序集的权限。
答案1
首先,您需要向 Web 服务器登录 SQL Server 的帐户授予权限。希望这不是 NETWORK SERVICE 帐户。
错误“执行用户定义例程或聚合‘trg_tAA_DFLRemoval’时发生 .NET 框架错误:”是来自 .NET 框架的错误,而不是来自 SQL Server,因此您正在调用的 .NET 方法中出现了问题。当您从 T/SQL 手动调用该方法时会发生什么?
答案2
这是一个 SQL 权限错误,我们已启用审计系统。由于某种原因,运行查询的用户触发了审计系统。此审计系统运行了用户无权使用的触发器。我必须授予此用户使用该触发器的权限。