0

データベース側で SQL Server アプリケーション ロールを使用するアプリケーションがあります。アプリケーションのプロセスの 1 つ中にテーブルのインデックスを再作成する必要がありますが、明らかにアプリケーション ロールには DBCC DBREINDEX コマンドを実行する権限がないため、問題が発生します。それを有効にする方法を知っていますか?

表示されているエラーは次のとおりです。アドバイスをいただければ幸いです。

ユーザー 'UserX' には、オブジェクト 'TableX' に対して DBCC DBREINDEX を実行する権限がありません。

DBCC DBREINDEX が廃止されたことは知っていますが、アプリケーションは SQL Server 2005 インスタンスに対して実行され、データベースは SQL Server 2000 互換モードです。アプリケーションのベンダーは、SQL Server 2005 では一部のクエリが機能しないため、データベースを SQL Server 2000 互換モードに維持したいと考えています。

エラー #:-2147217900 - オブジェクト "dbo.TableX" が存在しないか権限がないため、見つかりません。

4

1 に答える 1

1

ボルから

呼び出し元は、テーブルを所有しているか、sysadmin 固定サーバー ロール、db_owner固定データベース ロール、または固定データベース ロールのメンバーである必要がありdb_ddladminます。

権利を変更します。ストアド プロシージャを使用して DBCC をラップし、EXECUTE ASを使用してコンテキストを変更できます。または動的 SQL ですら。これがアプリの役割と互換モードでどのように機能するかはわかりません。申し訳ありません。

于 2009-06-11T19:08:18.830 に答える