我知道我不能让我的用户在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。但我真的不希望为每个索引视图引用的每个对象都这样做。
我当然愿意接受有关替代方法的建议。
感谢。
答案 0 :(得分:3)
无法在视图'...'上创建索引,因为底层对象 '...'拥有不同的所有者。
这是你要解决的真正问题,对吧?更改数据库所有者(通过运行ALTER AUTHORIZATION ON DATABASE::<dbname> TO <loginname>
来完成)只是一个红色的鲱鱼。
要解决此问题,您不太可能需要更改基础对象的所有者,您更有可能想要更改视图的所有者,并且可能正确的解决方案是创建视图与基础表相同的模式:
create view schema.indexedView
with schemabinding
as
select ...
from schema.table
where ...
请注意,我说'可能'和'可能',这不是我不确定解决方案的借口。这是因为只有你可以根据您网站的特定业务规则,审核设置和访问权限告诉我们所有者应该是谁。此外,一切都是数据库包含的事实(表,索引视图,包含表的模式和模式的所有者)这意味着这是一个RDS实例的事实是完全无关紧要的。