批量修改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 阅读(295) 评论(0) 编辑 收藏 举报