友声网

 找回密码
 立即注册
搜索
查看: 63|回复: 0
收起左侧

[扩展] 更改SQLServer数据库所有者

[复制链接]
卡卡北 发表于 2019-1-8 18:34 | 显示全部楼层 |阅读模式
原帖地址 下面的操作存在风险 建议做好数据库备份 1 单个修改 exec sp_changeobjectowner '[所有者].[对象名]', 'dbo' 例子: exec sp_changeobjectowner '[test].[dnt_users]', 'dbo' 执行后 数据库中dnt_users表的所有者从test变为dbo 2 批量修改 2.1 现在查询分析其中执行 下面的sql语句 建立名为changename存储过程
  1. CREATE PROCEDURE dbo.changename
  2. @OldOwner as NVARCHAR(128),--参数原所有者
  3. @NewOwner as NVARCHAR(128)--参数新所有者
  4. AS
  5. DECLARE @Name as NVARCHAR(128)
  6. DECLARE @Owner as NVARCHAR(128)
  7. DECLARE @OwnerName as NVARCHAR(128)
  8. DECLARE curObject CURSOR FOR
  9. select 'Name' = name,
  10. 'Owner' = user_name(uid)
  11. from sysobjects
  12. where user_name(uid)=@OldOwner
  13. order by name
  14. OPEN curObject
  15. FETCH NEXT FROM curObject INTO @Name, @Owner
  16. WHILE(@@FETCH_STATUS=0)
  17. BEGIN
  18. if @Owner=@OldOwner
  19. begin
  20. set @OwnerName = @OldOwner + '.' + rtrim(@Name)
  21. exec sp_changeobjectowner @OwnerName, @NewOwner
  22. end
  23. FETCH NEXT FROM curObject INTO @Name, @Owner
  24. END
  25. close curObject
  26. deallocate curObject
  27. GO
复制代码

2.2 执行存储过程changename exec changename '原所有者名','新所有者名' 例如 exec changename 'test','dbo' 则当前数据库中所有对象所有者 从 test 变为 dbo
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|RSS|联系|友声网 ( 鲁ICP备15020090号 ) 知道创宇云安全

GMT+8, 2019-4-25 02:00 , Processed in 0.071292 second(s), 19 queries , MemCache On.

Powered by Discuz! X

©2019 Comsenz Inc.

快速回复 返回顶部 返回列表