SQL Server 2000中“db_owner”和“拥有数据库的用户”有什么区别?

前端之家收集整理的这篇文章主要介绍了SQL Server 2000中“db_owner”和“拥有数据库的用户”有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力更好地了解为什么我们的数据库更新脚本在特定的客户站点上无法正常工作,并将其缩小(我想)到数据库所有权和角色.

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角色的成员,那么“拥有数据库”是什么意思?

解决方法

不,db_owner和数据库的所有者不一样. dbo是一个用户,db_owner是一个数据库角色.数据库登录拥有.无论登录拥有数据库是否在数据库中作为dbo别名.您可以使用sp_changedbowner系统存储过程更改数据库所有者.

数据库中的所有对象都由用户拥有.作为db_owner角色成员以及其他权限的用户可以创建dbo拥有的对象.如果用户不是db_owner的成员,但是具有一些创建权限(例如创建表),那么它们创建的任何对象将由创建它们的用户拥有.您可以使用sp_changeobjectowner系统存储过程更改对象的所有权.

猜你在找的MsSQL相关文章