• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

学无止境

学习的记录
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

批量修改SQLServer中Table的owner

问题提出的背景——
用户给我们数据库操作建立了单独的帐号,来限制我们操作的数据库。(因为数据库服务器上有很多客户公司其他系统的数据库)。
我们备份还原客户的数据来测试或者检查问题,内部的数据库都是sa的帐号,为了省事,就需要把原来的用户全部修伽为sa。

发现很好用的一段程序,运行也超级快地。

细细分析这段代码:
1、存储过程
   sp_changeobjectowner 
2、系统表
   SYSOBJECTS  

非常清晰的代码非常的有用。

DECLARE
 @T_Name VARCHAR(100),@T_Owner VARCHAR(50),@SQL VARCHAR(500),@T_Old VARCHAR(50),@T_New VARCHAR(50)
SET @T_Old='OldOwner'
SET @T_New='dbo'
DECLARE t_owner CURSOR FOR
SELECT [NAME],User_NAME(uid) AS UserName  FROM SYSOBJECTS  WHERE XTYPE<>'S'
OPEN t_owner
FETCH NEXT FROM t_owner INTO @T_Name,@T_Owner
WHILE @@FETCH_STATUS=0
BEGIN
   
IF UPPER(@T_Owner)=UPPER(@T_Old)
       
BEGIN
           
SET @SQL=' sp_changeobjectowner '''+@T_Old+'.'+@T_Name+''','''+@T_New+''''
          
--PRINT @SQL
          EXEC(@SQL)
       
END
   
FETCH NEXT FROM t_owner INTO @T_Name,@T_Owner
END
CLOSE t_owner
DEALLOCATE t_owner

posted on 2007-11-14 09:49  littlebamboo  阅读(300)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3