2

仅供参考:SQL Server 2005

我有一个数据库用户帐户 (user_web),它能够连接并在我的数据库中运行查询和存储过程。具体来说,我已经为用户提供了db_datareaderanddb_datawriter角色,并授予他们对需要能够运行的特定存储过程的执行权限。

在其中一个存储过程中,我需要禁用触发器,然后在完成某些特定编辑后重新启用它。当我尝试与用户一起运行该存储过程时,出现以下错误:

Cannot find the object "TableName" because it does not exist or you do not have permissions.

TableName是我试图禁用和启用触发器的表。我的问题是我可以为我的用户帐户提供的最少权限是多少,才能使其成功运行存储过程。

4

2 回答 2

2

用户将“至少”需要ALTER对相关表的权限。请参阅:http ://technet.microsoft.com/en-us/library/ms182706.aspx

于 2010-01-05T15:24:56.453 回答
2

与其授予用户ALTER对表的权限(这可能是一个安全问题),不如让该特定存储过程作为具有这些权限的不同用户运行。使用EXECUTE AS语法来完成此操作。

http://msdn.microsoft.com/en-us/library/ms188354.aspx

于 2010-01-05T15:33:07.870 回答