CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎样将表的所有者由普通用户改为DBO?

楼主hillgdcn(山人妙计)2004-12-02 12:42:55 在 MS-SQL Server / 基础类 提问

在创建表时指定表的所有者是user,怎样将所有者是改为dbo,请教各位高手!有100多张表!  
  问题点数:20、回复次数:9Top

1 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2004-12-02 12:45:34 得分 4

sp_changedbowner   [   @loginame   =   ]   'login'  
          [   ,   [   @map   =   ]   remap_alias_flag   ]Top

2 楼hillgdcn(山人妙计)回复于 2004-12-02 13:02:06 得分 0

sp_changedbowner     只能改变数据库的所有者,而不能改变表的哦!Top

3 楼yesyesyes()回复于 2004-12-02 13:12:25 得分 4

sp_changeobjectowner   [   @objname   =   ]   'object'   ,   [   @newowner   =   ]   'owner'  
   
  Top

4 楼ljial(数据库还真是越搞越不懂,越搞越有味道)回复于 2004-12-02 13:23:25 得分 4

update   sysobjects  
  set   uid=b.uid  
  from   sysobjects   a,sysusers   b  
  where   a.uid=b.uid   and   and   a.name="要改的表名"   and   b.name="要改的用户名'Top

5 楼hillgdcn(山人妙计)回复于 2004-12-02 13:28:45 得分 0

由所有者dbo   改普通用户,没问题:sp_changeobjectowner   'tb1','CITYRAY'  
  由普通用户的所有者,改为DBO所有者,不行:sp_changeobjectowner   'tb1','dbo'(服务器:   消息   15001,级别   16,状态   1,过程   sp_changeobjectowner,行   38  
  对象   'tb1'   不存在或不是对此操作有效的对象。)Top

6 楼l_xiaofeng(行到水窮處,坐看雲起時!)回复于 2004-12-02 13:43:00 得分 4

只有   sysadmin   伺服器的固定角色成員、db_owner   資料庫的固定角色,或是同時為   db_ddladmin   及   db_securityadmin   資料庫的固定角色成員才可執行   sp_changeobjectowner。Top

7 楼hillgdcn(山人妙计)回复于 2004-12-02 13:49:01 得分 0

update   sysobjects  
  set   uid=b.uid  
  from   sysobjects   a,sysusers   b  
  where   a.uid=b.uid   and   and   a.name="要改的表名"   and   b.name="要改的用户名'  
   
  此法行!但出错!(服务器:   消息   259,级别   16,状态   2,行   1  
  未启用对系统目录的特殊更新。系统管理员必须重新配置   SQL   Server   以允许这种操作。)  
   
  请问如何配置,才能启用对系统目录的特殊更新?Top

8 楼vinsonshen(为了明天)回复于 2004-12-02 14:03:30 得分 4

--假如你的用户帐号是“user1”  
   
  USE   你的数据库名  
  GO  
  set   nocount   on  
  declare   @objectname   sysname,@username   varchar(50),@str   varchar(1000)  
  declare   #cursor   cursor   for   select   o.name,u.name   from   sysobjects   o   join   sysusers   u   on   u.uid=o.uid     where   u.name='user1'  
  open   #cursor  
  fetch   next   from   #cursor   into   @objectname,@username  
  while   @@fetch_status=0  
  begin  
  set   @str=''''+@username+'.'+@objectname+''''  
  exec   sp_changeobjectowner   @str,   'dbo'  
  fetch   next   from   #cursor   into   @objectname,@username  
  end  
  close   #cursor  
  deallocate   #cursor  
  set   nocount   offTop

9 楼hillgdcn(山人妙计)回复于 2004-12-02 14:21:14 得分 0

谢谢各位大侠!Top

相关问题

  • 改变表的所有者
  • 改变表的所有者
  • 数据表所有者问题
  • 如何更改表的所有者?
  • 如何修改表的所有者?
  • 数据库表所有者的问题
  • 怎么更改表的所有者?
  • 请问大虾,怎样更改数据库所有者!或表的所有者!
  • sql server怎么修改表的所有者?
  • sql server怎么修改表的所有者?

关键词

  • 用户
  • 普通
  • 角色
  • 系统
  • db
  • 所有者
  • changeobjectowner
  • 表
  • 改为
  • dbo

得分解答快速导航

  • 帖主:hillgdcn
  • l_xiaofeng
  • yesyesyes
  • ljial
  • l_xiaofeng
  • vinsonshen

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo