0

我有一个在数据库端使用 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”,因为它不存在或您没有权限。

4

1 回答 1

1

来自BOL

调用者必须拥有该表,或者是 sysadmin 固定服务器角色、db_owner固定数据库角色或db_ddladmin固定数据库角色的成员。

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

于 2009-06-11T19:08:18.830 回答