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

笔者用过两种方法:

1) 通过修改当前数据库的对象表:sysobjects。

sysobjects存储的是当前数据库中的表的基本信息,其中由一个字段:uid,记录的是表所有者的id号。如:uid为‘1’,一般表示所有者为dbo(一般是sa)。可以为表所有者更改为你所希望的表所有者的id。

需要注意的是,直接在sysobjects表中对数据进行的更新操作需要有权限允许。不然会更新不成功

2) 另外一种方式是通过sql脚本来完成的。

例如:exec sp_changeobjectowner 'cqadmin.authors', 111 将表'cqadmin.authors'的所有者改为111.

下面列出了网上搜索到的详细资料:

来自于:http://www.cnblogs.com/cnkenny/archive/2008/07/31/1257642.html

今天下午还原sql数据库以后,不管怎么样也无法登陆论坛,仔细检查才发现,sql server表还是以前建立的用户,而又无法删除,,这些表的权限都不是DBO, 后来在网上找了半天,才找到解决办法,这里先保存下来。用来解决大家在还原了sql数据库以后,无法删除原登陆用户的问题。

--执行这个语句,就可以把当前库的所有表的所有者改为dbo

exec sp_msforeachtable 'sp_changeobjectowner ''?'', ''dbo'''

--如果是要用户表/存储过程/视图/触发器/自定义函数一齐改,则用游标(不要理会错误提示)

declare tb cursor local for

select 'sp_changeobjectowner ''['+replace(user_name(uid),']',']]')+'].['

+replace(name,']',']]')+']'',''dbo'''

from sysobjects

where xtype in('U','V','P','TR','FN','IF','TF') and status>=0

open tb

declare @s nvarchar(4000)

fetch tb into @s

while @@fetch_status=0

begin

exec(@s)

fetch tb into @s

end

close tb

deallocate tb

go

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 // 数据库名.旧所有者.旧表名

运行完了就做完了,可以把旧表删掉,也可以留着。

更改SQL Server表所有者的操作方法相关推荐

  1. sql server 表索引碎片处理

    DBCC SHOWCONTIG (Transact-SQL) SQL Server 2005 其他版本 更新日期: 2007 年 9 月 15 日 显示指定的表或视图的数据和索引的碎片信息. 重要提示 ...

  2. ssis导入xml_使用SSIS包将XML文档导入SQL Server表

    ssis导入xml This article guides you through importing XML documents into SQL tables using SSIS package ...

  3. sql server表分区_介绍分区表SQL Server增量统计信息

    sql server表分区 If you are maintaining a very large database, you might be well aware of the pain to p ...

  4. sql server表分区_SQL Server 2016增强功能– SQL截断表和表分区

    sql server表分区 The idea behind this article is to discuss the importance and the implication of SQL P ...

  5. 使用SSIS包将多个Excel文件中的数据导入SQL Server表中

    This article explores an SSIS package for importing multiple Excel files data into SQL Server tables ...

  6. SQL Server 表分区实战系列(文章索引)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 前言(Introduction) 实战说明(In Action) 表分区逻辑结构图(Construction) 表分区学 ...

  7. 在一个SQL Server表中的多个列找出最大值

    在一个SQL Server表中一行的多个列找出最大值 有时候我们需要从多个相同的列里(这些列的数据类型相同)找出最大的那个值,并显示 这里给出一个例子 IF (OBJECT_ID('tempdb..# ...

  8. SQL Server 表分区注意事项(转载)

    在园子里看到 听风吹雨 关于SQL Server 表分区注意事项 ,总结的太好了.备忘,方便以后查询! http://www.cnblogs.com/gaizai/archive/2011/05/31 ...

  9. SQL Server 表和索引存储结构

    SQL Server 表和索引存储结构 杜飞 在上一篇文章中,我们介绍了SQL Server数据文件的页面类型,系统通过96个字节的头部信息和系统表从逻辑层面上将表的存储结构管理起来,具体到表的存储结 ...

最新文章

  1. Windows下MemCache多端口安装配置
  2. python电脑下载网址-python下载文件文件到本地电脑(基于requests)
  3. IT草根的江湖之路之六:曙光,第一次破例
  4. 辗转相除法的程序实现
  5. oracle手工收集awr报告_WHAT——什么是AWR?
  6. C语言的int, float,double相互转化 (从本质上理解可能的问题)
  7. 【Java】聊天机器人
  8. (转载)芹菜拌豆腐皮 降压小凉菜
  9. Linux上FTP服务的相关配置2:搭建FTPs及虚拟账号
  10. 汤家凤:历年真题怎么用?接力题典怎么配合?黄金十月拼命干,提高很多分数不是梦!...
  11. linux qt 多点触摸,Qt 4.6 添加 Multi-touch(多点触摸)支持
  12. 天数怎么换算成月_表格当中把天数换算成月怎么
  13. 给计算机老师的元旦祝福,送给老师的元旦祝福语(精选50句)
  14. 【史上最全】如何建立模型
  15. Python中import的用法总结
  16. 【Flink源码分析】Flink 命令启动全流程
  17. 会写Python代码的人工智能Kite宣布支持Linux,“程序猿”要失业了?
  18. 使用PowerShell获取Trustedinstaller权限
  19. AVOS Cloud Hackathon - SegmentFault
  20. ROS开发系列(1)- ROS基础知识

热门文章

  1. java生成dex_Java反编译Dex – jadx
  2. java 连接 postgresql_java如何连接数据库并对其操作(以PostgreSQL为例)
  3. git reset 怎么还原_git reset –hard后的恢复操作
  4. 域控限制软件安装_谷歌调整Android Q安装第三方APP策略,每次都需要手动解除限制...
  5. python request下载-Python使用requests下载文件问题
  6. 用于精准判断的贝叶斯定理
  7. 裸辞,迎接2019年的春天
  8. 全球及中国蔬菜泥配料行业竞争策略及投资潜力研究报告2021-2027年版
  9. vs2005制作安装包(自动安装.net framework 2.0)(小寿原创)
  10. 文件操作2-Day3