How do I change db schema to dbo

前端 未结 11 2507
无人共我
无人共我 2020-12-02 05:38

I imported a bunch of tables from an old sql server (2000) to my 2008 database. All the imported tables are prefixed with my username, for example: jonathan.MovieData

11条回答
  •  甜味超标
    2020-12-02 05:49

    Use this code if you want to change all tables, views, and procedures at once.

    BEGIN
    DECLARE @name NVARCHAR(MAX)
            , @sql NVARCHAR(MAX)
            , @oldSchema NVARCHAR(MAX) = 'MyOldSchema'
            , @newSchema NVARCHAR(MAX) = 'dbo'
            
    DECLARE objCursor CURSOR FOR
            SELECT  o.name
            FROM    sys.objects o
            WHERE   type IN ('P', 'U', 'V')
    
    OPEN    objCursor
            FETCH NEXT FROM objCursor INTO @name
            WHILE   @@FETCH_STATUS = 0
            BEGIN
                SET @sql = 'ALTER SCHEMA '+ @newSchema +' TRANSFER '+ @oldSchema + '.' +  @name         
                BEGIN TRY
                    exec(@sql)
                    PRINT 'Success: ' + @sql
                END TRY
                BEGIN CATCH
                    PRINT 'Error executing: ' + @sql
                END CATCH
                FETCH NEXT FROM objCursor INTO @name
            END
    CLOSE   objCursor
    DEALLOCATE  objCursor
    

    END

    It will execute a code like this

    ALTER SCHEMA dbo TRANSFER MyOldSchema.xx_GetUserInformation
    

提交回复
热议问题