仅供参考:SQL Server 2005
我有一个数据库用户帐户(user_web),它能够连接到我的数据库并在我的数据库中运行查询和存储过程。具体来说,我已经为用户提供了db_datareader
和db_datawriter
角色,并授予他们对能够运行的特定存储过程的执行权限。
在其中一个存储过程中,我需要禁用触发器,然后在完成某些特定编辑后重新启用它。当我尝试与用户运行该存储过程时,我收到以下错误:
Cannot find the object "TableName" because it does not exist or you do not have permissions.
TableName
是我尝试禁用和启用触发器的表。我的问题是,我可以为用户帐户提供的权限最少,这将允许它成功运行存储过程。
答案 0 :(得分:2)
用户将“至少”在相关表格上要求ALTER
权限。请参阅:http://technet.microsoft.com/en-us/library/ms182706.aspx
答案 1 :(得分:2)
我可以将该特定存储过程作为具有这些权限的其他用户运行,而不是在表上授予用户ALTER
权限,这可能是一个安全问题。使用EXECUTE AS
语法完成此操作。