更改表的所有者

原创 2006年05月25日 13:28:00

更改表的所有者,目前我知道的有两种方法:

 1.  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 之前,编写现有权限的脚本。一旦更改了对象的所有权,可能要使用该脚本重新应用权限。在运行该脚本之前需要在权限脚本中修改对象所有者。有关编写数据库脚本的更多信息,请参见编写数据库文档和脚本。

可以使用 sp_changedbowner 更改数据库的所有者。

权限
只有 sysadmin 固定服务器角色和 db_owner 固定数据库角色成员,或既是 db_ddladmin 固定数据库角色又是 db_securityadmin 固定数据库角色的成员,才能执行 sp_changeobjectowner。

示例
下面的示例将 authors 表的所有者改为 Corporate/GeorgeW。

EXEC sp_changeobjectowner 'authors', 'Corporate/GeorgeW'


请参见
改变数据库所有者:sp_changedbowner

    ------------------------------以上摘自sql server 的联机丛书
注意:
使用sqlserver2000改变对象(object)(如Table,SP,View)的所有者(owner)时,需要注意一点:
如果对象改变前的owner为dbo,则直接用:exec sp_changeobjectowner 对象名,新的所有者名就可以成功。如果再需要改变该对象的所有者,则要用如下语法:
exec sp_changeobjectowner "[所有者].[对象名]",新的所有者。注意,双引号不可省略,否则提示objectname does not exist。

EXEC sp_changeobjectowner 'cqadmin.authors', 111

 

2.建与原表结构相同表,然后把数据从原表插入到新表,操作方法:

    在sql server企业管理器中选择原表点右键,选择“所有任务/生存SQL脚本”,保存生成的脚本,在脚本中把表的原所有者改成新所有者。然后再把该脚本运行一遍,数据库中就新生成了一个表,所有者是新所有者,原来的表还在数据库中没有被替换。新表和旧表 表名相同,所有者不同,此时的新表中没有数据。

  然后再运行下面的语句往新表中插入数据: 

INSERT INTO CQAdmin.m_actiondef   //新所有者.新表名
SELECT *
FROM RegaltecDefSchema. CQAdministrator.m_actiondef  // 数据库名.旧所有者.旧表名
运行完了就做完了,可以把旧表删掉,也可以留着。

在ORACLE数据库中如何修改表的所有者

在ORACLE数据库中如何修改表的所有者 例如:用户A有很多表,用户B也有很多表,我想把A下的表都移到B下,这样,原来A中表的所有者变成了用户B,从而可把用户A删除,求教各位高手,怎么做???...
  • happy2005
  • happy2005
  • 2004年07月28日 09:44
  • 4300

更改SQL Server表所有者的操作方法

更改SQL Server表所有者的操作方法 笔者用过两种方法:1)  通过修改当前数据库的对象表:sysobjects。sysobjects存储的是当前数据库中的表的基本信息,其中由一个字段:uid,...
  • lejuo
  • lejuo
  • 2009年02月11日 13:46
  • 5102

使用rename更改表名称时,不允许带所有者!

今天在CSDN上看到一位网友的问题:http://community.csdn.net/Expert/topic/4590/4590952.xml?temp=.9842798自己测试了一下:  SQL...
  • zhpsam109
  • zhpsam109
  • 2006年03月03日 17:32
  • 2023

更改表的所有者

--手动修改系统表--设备可以手动修改表exec sp_configure allow updates,1RECONFIGURE WITH OVERRIDE--更改对象所有者update sysobj...
  • sikychen
  • sikychen
  • 2006年08月31日 13:04
  • 626

更改表所有者

单个修改所有者sql语句如下:查询分析器输入:EXEC sp_changeobjectowner user.table, dbouser.table的意思为:所有者.表名,比如oblog.oblog_...
  • hblzg
  • hblzg
  • 2007年05月10日 22:13
  • 455

更改sqlserver的表所有者

更改sqlserver的表所有者如何更改sqlserver的表所有者----解决此对象 表名 无效的方法?当用sp_adduser 对数据库进行添加用户之后.却出现了此对象 表名 无效的现象?打开数据...
  • bluelazyboy
  • bluelazyboy
  • 2007年05月29日 21:33
  • 499

windows下批量修改文件(或文件夹)权限或所有者

 windows 2008下无法改变文件(文件夹)权限时,可以看一下其所有者。 强制将当前目录下的所有文件及文件夹、子文件夹下的所有者更改为管理员组(administrators)...
  • civilman
  • civilman
  • 2015年02月01日 11:37
  • 4020

Ubuntu下如何对文件的所有者进行修改

在Ubuntu系统下,我们的文件或文件夹我们可以修改其所有者和所有者的所在的群组 drwx------ 26 silence silence 4096 2011-08-06 07:04 test ...
  • silence_cdsn
  • silence_cdsn
  • 2012年12月26日 10:06
  • 4634

修改文件的所有者和权限

打开Linux系统,建立一个目录。建立目录命令为【mkdir】。并用【ls】命令查看目录相关信息,如图,我们知道test的权限为rwxr-xr-x。 chgrp:改变文件所属用户组...
  • selifecn
  • selifecn
  • 2017年05月31日 17:11
  • 385

更改SQL Server表所有者

单个修改所有者sql语句如下:查询分析器输入:EXEC sp_changeobjectowner user.table, dbouser.table的意思为:所有者.表名,比如oblog.oblog_...
  • vipxiaotian
  • vipxiaotian
  • 2007年07月27日 01:01
  • 638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:更改表的所有者
举报原因:
原因补充:

(最多只允许输入30个字)