Amazon RDS SQL Server更改数据库所有者

时间:2012-06-26 17:23:08

标签: sql-server amazon-rds

我知道我不能让我的用户在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-view。但我真的不希望为每个索引视图引用的每个对象都这样做。

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

感谢。

1 个答案:

答案 0 :(得分:3)

  

无法在视图'...'上创建索引,因为底层对象   '...'拥有不同的所有者。

这是你要解决的真正问题,对吧?更改数据库所有者(通过运行ALTER AUTHORIZATION ON DATABASE::<dbname> TO <loginname>来完成)只是一个红色的鲱鱼。

要解决此问题,您不太可能需要更改基础对象的所有者,您更有可能想要更改视图的所有者,并且可能正确的解决方案是创建视图与基础表相同的模式:

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

请注意,我说'可能'和'可能',这不是我不确定解决方案的借口。这是因为只有可以根据您网站的特定业务规则,审核设置和访问权限告诉我们所有者应该是谁。此外,一切都是数据库包含的事实(表,索引视图,包含表的模式和模式的所有者)这意味着这是一个RDS实例的事实是完全无关紧要的。