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

发布于 2024-07-23 07:02:47 字数 494 浏览 2 评论 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”,因为它不存在或您没有权限。

I have an application that uses a SQL Server application role on the database side. During one of the application’s processes, I need it to reindex a table, however, I run into problems because apparently the application role doesn’t have permissions to run the DBCC DBREINDEX command. Do you know of a way to enable that?

Here’s the error that we’re seeing. Any advice would be appreciated.

User ‘UserX’ does not have permission to run DBCC DBREINDEX for object ‘TableX’.

I know DBCC DBREINDEX has been deprecated, but the application runs against a SQL Server 2005 instance and the database is SQL Server 2000 compatibility mode. The vendor of the application wants to keep the database in SQL Server 2000 compatibility mode because some of their queries don’t work in 2005. So just to be thorough, I get a similar error when trying to execute the ALTER INDEX statement.

Error #:-2147217900 - Cannot find the object "dbo.TableX" because it does not exist or you do not have permissions.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那片花海 2024-07-30 07:02:47

来自 BOL

调用者必须拥有该桌子,或者是
系统管理员固定服务器的成员
角色,db_owner 固定数据库
角色,或固定的 db_ddladmin
数据库角色。

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

From BOL

Caller must own the table, or be a
member of the sysadmin fixed server
role, the db_owner fixed database
role, or the db_ddladmin fixed
database role.

Change the rights.
You could use a stored proc to wrap the DBCC and use EXECUTE AS to change context. Or even dynamic SQL. I'm not sure of how this works with App roles and compatibility mode, sorry.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文