我有一个在数据库端使用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”,因为它不存在或您没有权限。
答案 0 :(得分:1)
来自BOL
来电者必须拥有该表,或者是 sysadmin固定服务器的成员 角色,
db_owner
固定数据库 角色,或db_ddladmin
已修复 数据库角色。
更改权利。 您可以使用存储过程来包装DBCC并使用EXECUTE AS来更改上下文。甚至是动态SQL。我不确定它如何与App角色和兼容模式一起使用,抱歉。