2010-01-05 46 views
2

FYI:SQL Server 2005需要哪些数据库用户权限?

我有一个数据库用户帐户(user_web)有能力连接到我的数据库并运行查询和存储过程。具体来说,我给了用户db_datareaderdb_datawriter角色以及授予他们对需要能够运行的特定存储过程的执行权限。

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

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

TableName就是我试图禁用和启用触发器的表。我的问题是什么是我可以给我的用户帐户的最少量的权限,这将允许它成功运行存储过程。

回答

2

而不是授予用户ALTER权限在表上,这可能是一个安全问题,我想这个特定的存储过程作为不同的用户具有这些权限运行。使用EXECUTE AS语法来完成此操作。

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

+1

他也可以考虑使用存储过程上的证书,但我认为这只是必要的,如果有一个所有权链接的问题(?)如果安全是至关重要的,虽然,毯具有db_datareader和db_datawriter或许不该不会被使用。 – 2010-01-05 15:38:06

+0

我同意Tom对db_datareader和db_datawriter的看法。我不是证书的忠实粉丝,因为我认为他们是一种痛苦,尤其是当事情仍在积极发展时。 – 2010-01-05 15:57:10

相关问题