Ms 数据库,表,存储过程等等相关所有者操作

本文介绍如何使用游标批量更改 SQL Server 中用户表、存储过程等对象的所有者为 dbo,同时也提供了单个对象所有者变更的方法。此外,还展示了如何通过执行 sp_changedbowner 存储过程来变更数据库的所有者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--修改所有用户表/存储过程/视图/触发器/自定义函数的所有者为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   

 

批量修改:
EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
单个修改:
exec sp_changeobjectowner '要改的表名','dbo'

只有所有者才能更改表的所有者

示例  
  下面的示例使用户   Albert   成为当前数据库的所有者,并将旧数据库所有者的现有别名映射到   Albert。  
   
  EXEC   sp_changedbowner   'Albert'   
    
执行了EXEC   sp_changedbowner   'Albert'   也没有反映  
  用了EXEC   sp_changeobjectowner   'authors',   'Corporate/GeorgeW'   

 

这是孤立用户  
  USE   aaa  
  go  
  EXEC   sp_change_users_login   'Auto_Fix',   'aaa',   NULL,   'password'  
  go   
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值