2

RDSのユーザーをシステム管理者にすることはできませんが、少なくともデータベースの所有者をrdsaから自分のユーザーに変更することはできますか?SSMSを使用して、データベースプロパティで所有者を変更すると、次のメッセージが表示されます。

The proposed new database owner is already a user or aliased in the database

ユーザーをdb_ownerロールに追加するだけでなく、これを実行したいのはなぜですか?

作成したいビューにインデックスを付けましたが、作成しようとするとエラーが発生します

Index cannot be created on view '...' because the underlying object '...' has a different owner.

https://dba.stackexchange.com/questions/9436/sql-server-2008-cannot-create-index-on-indexedで説明されているように、基になるオブジェクトで手動でALTER AUTHORIZATIONを使用して、これを許可できることを知っています。 -表示。しかし、インデックス付きビューのすべてによって参照されるすべてのオブジェクトに対して、これを実行したくはありません。

私は確かに別のアプローチについての提案を受け入れています。

ありがとう。

4

1 に答える 1

3

基になるオブジェクト'...'の所有者が異なるため、ビュー'...'にインデックスを作成できません。

これがあなたが解決しようとしている本当の問題ですよね?データベース所有者の変更(これは実行することによって行われますALTER AUTHORIZATION ON DATABASE::<dbname> TO <loginname>)は、単なるニシンです。

この問題を解決するために、基になるオブジェクトの所有者を変更する必要はほとんどなく、ビューの所有者を変更する可能性がはるかに高く、おそらく正しい解決策は、基になるテーブルと同じスキーマでビューを作成することです。

create view schema.indexedView
with schemabinding
as
select ... 
from schema.table
where ...

私が「可能性が高い」と「おそらく」と言うことに注意してください、これは私が解決策を確信していない言い訳ではありません。特定のビジネスルール、監査設定、およびサイトのアクセス許可に基づいて、所有者が誰であるかを私たちに伝えることができるのはあなただけだからです。また、すべてがデータベースに含まれているという事実(テーブル、インデックス付きビュー、テーブルを含むスキーマ、およびスキーマの所有者)は、これがRDSインスタンスであるという事実は完全に無関係であることを意味します。

于 2012-07-08T17:37:52.953 に答える