数据库所有者 (dbo)

数据库所有者 (dbo)

  dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin
的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外,由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。

  例如,如果用户 Andrew 是固定服务器角色 sysadmin 的成员,并创建表 T1,则表 T1 属于 dbo,并以 dbo.T1 而不是 Andrew.T1 进行限定。相反,如果 Andrew 不是固定服务器角色 sysadmin 的成员,而只是固定数据库角色 db_owner 的成员,并创建表 T1,则 T1 属于 Andrew,并限定为
Andrew.T1。该表属于 Andrew,因为该成员没有将表限定为 dbo.T1。

  无法删除 dbo 用户,且此用户始终出现在每个数据库中。

  只有由 sysadmin 固定服务器角色成员(或 dbo 用户)创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户(包括 db_owner 固定数据库角色成员)创建的对象:

  属于创建该对象的用户,而不是 dbo。

  用创建该对象的用户名限定。

  DBO(即设计、建设、运营)——污水处理行业最新出现的DBO模式

  DBO是个非常好的想法,因为市场化后,谁投资谁负责建设、运营,让投资人自己选择工艺,可以将投资、建设、运营一揽子考虑,政府已经选定的工艺可不一定就是造价最低、运营最优的工艺。 

 

-------------------------------------------------------------------------------------------

固定服务器角色

固定服务器角色也是服务器级别的主体,其作用范围是整个服务器。固定服务器角色已经具备了执行指定操作的权限,可以把其他登录名作为成员添加到固定服务器角色中,这样该登录名可以继承固定服务器角色的权限。

 什么是固定服务器角色

固定服务器角色也是服务器级别的主体,已经具备了执行指定操作的权限。Microsoft SQL Server
2008系统提供了9个固定服务器角色,这些角色及其功能如表4-1所示。

表4-1  固定服务器角色


固定服务器角色


描    述


bulkadmin


块数据操作管理员,拥有执行块操作的权限,

即拥有ADMINISTER BULK OPERATIONS权限,

例如执行BULK INSERT操作


dbcreator


数据库创建者,拥有创建数据库的权限,即拥有

CREATE DATABASE权限


diskadmin


磁盘管理员,拥有修改资源的权限,即拥有

ALTER RESOURCE权限


processadmin


进程管理员,拥有管理服务器连接和状态的权限,

即拥有ALTER ANY CONNECTION、

ALTER SERVER STATE权限


securityadmin


安全管理员,拥有执行修改登录名的权限,

即拥有ALTER ANY LOGIN权限


serveradmin


服务器管理员,拥有修改端点、资源、服务器状态

等权限,即拥有ALTER ANY ENDPOINT、ALTER

RESOURCES、ALTER SERVER STATE、ALTER

SETTINGS、SHUTDOWN和VIEW SERVER STATE权限


setupadmin


安装程序管理员,拥有修改链接服务器权限,

即拥有ALTER ANY LINKED SERVER权限


sysadmin


系统管理员,拥有操作SQL Server系统的所有权限


public


公共角色,没有预先设置的权限,用户可以向该角色授权

固定服务器角色的权限是固定不变的(public角色除外),既不能被删除,也不能增加。在这些角色中,sysadmin固定服务器角色拥有的权限最多,可以执行系统中的所有操作。可以在SQL Server Management Studio的【对象资源管理器】窗口的【安全性】|【服务器角色】节点中查看这些固定服务器角色的名称,如图4-10所示。右击某个固定服务器角色,从弹出的快捷菜单中选择【属性】命令,可以查看该角色的成员等信息。

1、bulkadmin服务器级权限已授予:ADMINISTERBULKOPERATIONS

2、dbcreator服务器级权限已授予:CREATEDATABASE

3、diskadmin服务器级权限已授予:ALTERRESOURCESSqlServer2005固定服务器角色:

4、processadmin服务器级权限已授予:ALTERANYCONNECTION、ALTERSERVERSTATE

5、securityadmin服务器级权限已授予:ALTERANYLOGIN6、serveradmin服务器级权限已授予:ALTERANYENDPOINT、ALTERRESOURCES、ALTERSERVERSTATE、ALTERSETTINGS、SHUTDOWN、VIEWSERVERSTATE

7、setupadmin服务器级权限已授予:ALTERANYLINKEDSERVERSqlServer2005固定服务器角色:

8、sysadmin服务器级权限已使用GRANT选项授予:CONTROLSERVER

8的等级最高,相当于sqlserver的sa账户和Oracle的sysadmin,可以做一切操作,包括以下七种角色,事实上一般以下七种角色的权限都是他来指派的,企业中一般严禁这个账户登陆的,因为一旦误操作将会造成灾难性损失。

1管理数据库大小,数据空间大小以及数据日志大小等

2拥有建立数据库的权限

3对已经分配磁盘空间进行分配

4可以管理进程,比如剔除一些非法进程

5可以管理连接权限,用户权限等。

6这个可以启动服务器,对服务器的属性进行分配(连接池、cpu、内存空间等),貌似是sqlserver特有

7这个角色很多数据库是没有的,比如sqlserver就是没有的,oracle8以前好像也是没有的,可以安装数据库以及删除数据库(在非常安全控制地方这种账户是没有连接权限的,也就是说只能安装,但是不能读取里面的数据)

这些权限各不相同,所以很难说是对服务器的还是数据库的,比如7这种,根本说不上是不是服务器级别的,因为它只有安装权限,可以认为是系统级别的,事实上,只有sqlserver存在服务器和数据库的区别,一般的诸如db2和oracle中的所谓服务器指的是那台机器而不是一个sqlserver意义上的服务器,具体情况具体对待

时间: 2024-08-26 14:10:11

数据库所有者 (dbo)的相关文章

Sqlserver 中添加数据库登陆账号并授予数据库所有者权限

USE master GO --通过sp_addlogin创建登录名 --DEMO:登陆账号 --123456:登陆密码 execute sp_addlogin 'DEMO','123456' --切换数据库 USE dbtest go --在数据库dbtest里创建数据库Demo账号 --每一个DEMO为登陆名 --第二个DEMO为账号 execute sp_grantdbaccess 'DEMO','DEMO' --将DEMO账号添加到数据库角色为数据库所有者 execute sp_addr

sql2008拒绝了对对象 (数据库 ,架构'dbo')的SELECT权限

连接sql2008的时候,出现了这种一直报权限错误:错误截图如下: 所见效果描述:在windows身份验证的 情况下登陆进去数据库的表都是可以打开的,当换到sa或者别的账号登陆进去的时候这个时候我们点击我们的数据库就会报错: 解决方法如下: 1.首先我们要用windows身份登陆进去进行设置,因为你的sa等账号登陆进去设置都是无效的[这一步很重要]. 2.找到对应的库下面的安全性->架构->dbo->右键属性[权限]->搜索->浏览[public]->确定,在右边的具有

SQL Server 数据库的安全管理(登录、角色、权限)

---数据库的安全管理 --登录:SQL Server数据库服务器登录的身份验证模式:1)Windows身份验证.2)Windows和SQL Server混合验证 --角色:分类:1)服务器角色.服务器角色是固定的服务器功能,用户不能创建和修改服务器角色.可以将服务器的登录账号添加服务器角色中,使其具备服务器角色的权限.2)数据库角色.数据库角色的作用对象是某一个数据库,用来将登录数据库的用户添加到数据库角色中,使其具备数据库角色的功能. --数据库角色包括固定数据库角色.标准数据库角色和应用程

dbo是默认用户也是架构

dbo是默认用户也是架构 dbo作为架构是为了更好的与2000兼容, 在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名, 在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名, 这样2000中的代码移植到2005中就不会报错(dbo在2005中是默认的架构,创建表时,如不指定架构,则默认为属于dbo为个架构). 在2000中: dbo 是 database owner 的缩写, 是数据库对象所有者SQL SE

Sql Server 添加外部程序集基本操作

原文:Sql Server 添加外部程序集基本操作 简介:有时候Sql Server的内置函数没有那么好用的时候,可以引用一下外部程序集,下面献下丑,做下添加外部程序集操作 1.准备程序,编译出一个MyCLR的DLL. public class CLRClass { [Microsoft.SqlServer.Server.SqlFunction] public static int MyFun(int a, int b) //必须使用静态方法,非静态方法会报错. { return a <= b

针对程序集 &#39;SqlServerTime&#39; 的 ALTER ASSEMBLY 失败,因为程序集 &#39;SqlServerTime&#39; 未获授权(PERMISSION_SET = EXTERNAL_ACCESS)

错误: 针对程序集 'SqlServerTime' 的 ALTER ASSEMBLY 失败,因为程序集 'SqlServerTime' 未获授权(PERMISSION_SET = EXTERNAL_ACCESS). 当符合以下两个条件之一时,将对程序集授权: 数据库所有者(DBO)具有 EXTERNAL ACCESS ASSEMBLY 权限,而且数据库的 TRUSTWORTHY 属性处于打开状态:或者,程序集签名时所使用的证书或非对称密钥所对应的登录名具有 EXTERNAL ACCESS ASS

此数据库没有有效所有者“的解决,我很受用

之前用数据库创建关系图,结果报了这个错误.然后搜索之. 转自http://www.cnblogs.com/muer/archive/2010/04/14/1711778.html 此数据库没有有效所有者,因此无法安装数据库关系图支持对象.若要继续,请首先使用"数据库属性"对话框的"文件"页或Alter AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象.  按照第一种方式更改怎么也不行,并且文件的所有者也是sa.在csdn中

Sql Server 出现此数据库没有有效所有者问题

在新建数据库或附加数据库后,想添加关系表,结果出现下面的错误: 此数据库没有有效所有者,因此无法安装数据库关系图支持对象.若要继续,请首先使用“数据库属性”对话框的“文件”页或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象. 按照第一种方式更改怎么也不行,并且文件的所有者也是sa.网友给出了一种方法,运行以下命令: ALTER AUTHORIZATION ON database::mydbname TO sa 把mydbname修改为实际

SQL Server 2012笔记分享-38:了解系统数据库

master 数据库 记录 SQL Server 实例的所有系统级信息. master 数据库记录 SQL Server 系统的所有系统级信息.这包括实例范围的元数据(例如登录帐户).端点.链接服务器和系统配置设置.此外,master 数据库还记录了所有其他数据库的存在.数据库文件的位置以及 SQL Server 的初始化信息.因此,如果 master 数据库不可用,则 SQL Server 无法启动.在 SQL Server 中,系统对象不再存储在 master 数据库中,而是存储在 Reso