SQL Server应用程序角色可以发出DBCC DBREINDEX吗?

时间:2009-06-11 18:52:33

标签: sql-server security roles

我有一个在数据库端使用SQL Server应用程序角色的应用程序。在其中一个应用程序的进程中,我需要它重新索引表,但是,我遇到了问题,因为显然应用程序角色没有运行DBCC DBREINDEX命令的权限。你知道一种启用它的方法吗?

这是我们看到的错误。任何建议将不胜感激。

用户'UserX'无权为对象'TableX'运行DBCC DBREINDEX。

我知道DBCC DBREINDEX已被弃用,但应用程序针对SQL Server 2005实例运行,数据库是SQL Server 2000兼容模式。该应用程序的供应商希望将数据库保持在SQL Server 2000兼容模式,因为他们的一些查询在2005年不起作用。所以为了彻底,我在尝试执行ALTER INDEX语句时遇到类似的错误。

错误#: - 2147217900 - 无法找到对象“dbo.TableX”,因为它不存在或您没有权限。

1 个答案:

答案 0 :(得分:1)

来自BOL

  

来电者必须拥有该表,或者是   sysadmin固定服务器的成员   角色,db_owner固定数据库   角色,或db_ddladmin已修复   数据库角色。

更改权利。 您可以使用存储过程来包装DBCC并使用EXECUTE AS来更改上下文。甚至是动态SQL。我不确定它如何与App角色和兼容模式一起使用,抱歉。