Disclaimer: I’m actually waiting to hear back from the customer’s DBA so they can tell us if they upgraded their sql database recently and so we can look at their database. I’m thinking a sql 2000 to sql 2005 conversion might have hosed our scripts if our applications’s database login was converted to a schema,because we were referencing
dbo
in a few places in the update script.
无论如何,我一直在尝试找到一个更好的解释数据库所有权和角色,以及它如何影响一个数据库对象实际分配的所有者,当您没有明确指定T-sql语句中的所有者.例如,我们的更新脚本通常只是做CREATE TABLE foo而不是CREATE TABLE dbo.foo或其他东西,但是我发现了一些明确使用dbo的文件,那些是造成问题的那一刻(只有这一个客户).
我发现this article(特定于sql Server 2000),但该页面上的表令人困惑.它提到db_owner和“拥有数据库”是用户可以拥有的角色的两个不同的可能性.
例如,表格指出,如果用户sam(db_owner角色中的谁)运行查询CREATE TABLE [test3](abc int),它将由sam拥有.
然后它提到,如果另一个用户sue,谁拥有数据库(sic),运行相同的查询,它将由dbo拥有.
db_owner和“拥有数据库”不一样吗?该表意味着“在db_owner角色”中实际上是“作为数据库的所有者”之间存在差异.但是,如果这是真的,如果它不是db_owner角色的成员,那么“拥有数据库”是什么意思?