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.

我知道我可以在底层对象上手动使用 ALTER AUTHORIZATION 来允许这样做,如下所述:https ://dba.stackexchange.com/questions/9436/sql-server-2008-cannot-create-index-on-indexed -查看。但我真的不想对我的每个索引视图引用的每个对象都这样做。

我当然愿意接受有关替代方法的建议。

谢谢。

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 回答