MSSQL修改DBO

发布时间 2023-12-02 23:50:33作者: ucdos2023
DECLARE @NAME SYSNAME --表名变量
 
DECLARE CSR CURSOR --定义一个游标
FOR
SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U ' --在系统表SYSOBJECTS 中取[XTYPE = 'U '] ,即取用户表的表名
	OPEN CSR
	DECLARE @SCHEMATABLE VARCHAR (200) --定义一个字符串存放执行语句
		FETCH NEXT FROM CSR INTO @NAME --将游标向下移1行,获取的数据放入之前定义的变量@NAME中
			WHILE (@@FETCH_STATUS=0)  --判断是否成功获取数据
			BEGIN
			 --语句中的'HS.'是需要修改的架构名,'DBO'是目标架构名,可以修改
			   SET @NAME = 'bbs.' + @NAME
			 PRINT 'ALTER SCHEMA DBO TRANSFER ' + @NAME --输出执行语句内容
			   SET @SCHEMATABLE = 'ALTER SCHEMA DBO TRANSFER ' + @NAME --生成动态执行语句
			  EXEC (@SCHEMATABLE) --开始执行
		FETCH NEXT FROM CSR INTO @NAME --将游标向下移1行
		END
	CLOSE CSR --关闭游标
DEALLOCATE CSR --删除游标引用,释放了游标占用的内存空间