更改SQL数据库的所有者和更改SQL表的所有者

一、更改SQL数据库的所有者
  sp_changedbowner
    更改当前数据库的所有者。
    语法
    sp_changedbowner  [  @loginame  =  ]  'login'
        [  ,  [  @map  =  ]  remap_alias_flag  ]
    参数[@loginame  =]  'login'当前数据库新所有者的登录  ID。login  的数据类型为  sysname,没有默认值。login  必须是已存在的  Microsoft®  SQL  Server™  登录或  Microsoft  Windows  NT®  用户。如果  login  通过当前数据库内的现有别名或用户安全帐户已拥有访问该数据库的权限,则不能成为该数据库的所有者。为了避免这种情况,应先除去当前数据库中的别名或用户。[@map  =]  remap_alias_flag值为  true  或  false,表示旧数据库所有者  (dbo)  的现有别名是映射到当前数据库的新所有者还是要除去。remap_alias_flag  的数据类型为  varchar(5),默认值为  NULL,表示旧  dbo  的任何现有别名均映射到当前数据库的新所有者。false  表示除去旧数据库所有者的现有别名。
    返回代码值
    0(成功)或  1(失败)
    注释
    执行  sp_changedbowner  之后,新所有者称为数据库中的  dbo  用户。dbo  拥有执行数据库中所有活动的暗示性权限。不能更改  master、model  或  tempdb  系统数据库的所有者。若要显示有效  login  值的列表,请执行  sp_helplogins  存储过程。执行只有  login  参数的  sp_changedbowner  会将数据库所有权改为  login,并将先前别名为  dbo  的用户别名映射到新数据库所有者。
    权限
    只有  sysadmin  固定服务器角色成员的成员或当前数据库的所有者才能执行  sp_changedbowner。
    示例
    下面的示例使用户  Albert  成为当前数据库的所有者,并将旧数据库所有者的现有别名映射到  Albert。    EXEC  sp_changedbowner  'Albert'
    二、更改数据库表的所有者
  sp_changeobjectowner
    更改当前数据库中对象的所有者。
    语法
    sp_changeobjectowner  [  @objname  =  ]  'object'  ,  [  @newowner  =  ]  'owner'    参数
    [@objname  =]  'object'当前数据库中现有的表、视图或存储过程的名称。object  的数据类型为  nvarchar(517),没有默认值。object  可用现有对象所有者限定,格式为  existing_owner.object。[@newowner  =]  'owner'即将成为对象的新所有者的安全帐户的名称。owner  的数据类型为  sysname,没有默认值。owner  必须是当前数据库中有效的  Microsoft®  SQL  Server™  用户或角色或  Microsoft  Windows  NT®  用户或组。指定  Windows  NT  用户或组时,请指定  Windows  NT  用户或组在数据库中已知的名称(用  sp_grantdbaccess  添加)。
    返回代码值
    0(成功)或  1(失败)
    注释
    对象所有者(或拥有对象的组或角色的成员)对对象有特殊的权限。对象所有者可以执行任何与对象有关的  Transact-SQL  语句(例如  INSERT、UPDATE、DELETE、SELECT  或  EXECUTE),也可以管理对象的权限。如果拥有对象的安全帐户必须要除去,但同时要保留该对象,请使用  sp_changeobjectowner  更改对象所有者。该过程从对象中删除所有现有权限。在运行  sp_changeobjectowner  之后,需要重新应用要保留的任何权限。由于这个原因,建议在运行  sp_changeobjectowner  之前,编写现有权限的脚本。一旦更改了对象的所有权,可能要使用该脚本重新应用权限。在运行该脚本之前需要在权限脚本中修改对象所有者。有关编写数据库脚本的更多信息,请参见编写数据库文档和脚本。
    1、单个修改所有者sql语句如下:

    查询分析器输入:EXEC sp_changeobjectowner 'user.table', 'dbo'

    user.table的意思为:所有者.表名,比如oblog.oblog_user,以前的语句表示将table这张表的所有者由

user改成dbo

    2、批量修改所有者语句如下:

    查询分析器输入:exec sp_msforeachtable 'sp_changeobjectowner ''?'', ''dbo'''

    即可把当面表的所有所有者换成dbo
最后编辑xiaoyaoyou 最后编辑于 2009-10-12 17:05:55
网易游戏各种序列号,新手卡免费领,QQ85579045
推荐倩女幽魂1888至尊序列号,大唐无双豪杰序列号,战歌无忧序列,大话西游2老朋友序列号