批量修改数据库的结构者

CREATE TABLE #result
    (
   id INT IDENTITY(1, 1) ,
      objectid INT ,
      scemaid INT ,
      NAME VARCHAR(300)
    )
INSERT  INTO #result
        ( objectid ,
          scemaid ,
          NAME
        )
        SELECT  object_id ,
                schema_id ,
                name
        FROM    sys.objects
        WHERE   schema_id = 6
                AND type = 'P'

CREATE TABLE #result2
    (
      id INT IDENTITY(1, 1) ,
      objectid INT ,
      scemaid INT ,
      NAME VARCHAR(300)
    )

INSERT  INTO #result2
        ( objectid ,
          scemaid ,
          NAME
        )
        SELECT  sys.objects.object_id ,
                sys.objects.schema_id ,
                sys.objects.name
        FROM    sys.objects
                INNER JOIN #result ON #result.name = sys.objects.name
                                      AND sys.objects.schema_id = 1
                                      AND sys.objects.type = 'P'
                                     
DECLARE @tempid INT,@MaxId INT
SET @tempid=1

SELECT @MaxId=MAX(id) FROM #result2

WHILE @tempid<=@MaxId
BEGIN
DECLARE @spname VARCHAR(300)
SELECT @spname=NAME FROM #result2 WHERE id=@tempid
IF @spname IS NOT NULL
BEGIN
SELECT @spname='DROP PROC dbo.'+''+@spname+''
EXEC (''+@spname+'')
END
SET  @tempid=@tempid+1
END

SET @tempid=1

SELECT @MaxId=MAX(id) FROM #result

WHILE @tempid<=@MaxId
BEGIN
DECLARE @spname1 VARCHAR(300)
SELECT @spname1=NAME FROM #result WHERE id=@tempid
IF @spname1 IS NOT NULL
BEGIN
SELECT @spname1='ALTER SCHEMA dbo TRANSFER [dyoga36].'+''+@spname1+''
EXEC (''+@spname1+'')
END
SET  @tempid=@tempid+1
END

--ALTER SCHEMA dbo TRANSFER [dyoga36].UpdateSendPointWithPatch
--UPDATE sys.objects
--SET sys.objects.schema_id=1
--FROM sys.objects
--INNER JOIN #result ON #result.objectid = sys.objects.object_id

--exec Changename 'dyoga36','dbo' --将cwa1034所有者更改为dbo

 

转载于:https://www.cnblogs.com/scottpei/archive/2012/09/04/2670041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值