【问题标题】:What database user permissions are needed?需要哪些数据库用户权限?
【发布时间】:2011-01-01 16:32:27
【问题描述】:

仅供参考: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 是我尝试禁用和启用触发器的表。我的问题是我可以为我的用户帐户提供的最少权限是多少,才能使其成功运行存储过程。

【问题讨论】:

    标签: sql-server sql-server-2005 stored-procedures ddl


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 他也可以考虑在存储过程上使用证书,尽管我认为只有在存在所有权链接问题时才有必要(?)如果安全性很关键,那么毯子 db_datareader 和 db_datawriter 可能应该'不被使用。
      • 我同意 Tom 关于 db_datareader 和 db_datawriter 的看法。我不是证书的忠实拥护者,因为我认为它们很痛苦,尤其是当东西仍在积极开发中时。
      猜你喜欢
      • 2019-12-24
      • 1970-01-01
      • 2013-09-09
      • 2019-03-30
      • 2014-08-28
      • 1970-01-01
      • 2012-10-09
      • 2015-12-28
      • 1970-01-01
      相关资源
      最近更新 更多