重命名多个表

Tec*_*ndz 2 sql-server sql-server-2008

在SQL Server中,我有一个数据库abc.在这个数据库中,我有数百个表.调用这些表中的每一个xyz.table

我想更改要调用的所有表abc.table.

我们是否有办法将所有名称从数据库中更改xyz.table为?abc.tableabc

我可以通过将每个表的架构更改为abc来手动更改名称

mar*_*c_s 7

您可以在xyz模式中的所有表上运行游标,并将所有这些表移动到abc模式中:

DECLARE TableCursor CURSOR FAST_FORWARD 
FOR
    -- get the table names for all tables in the 'xyz' schema
    SELECT t.Name
    FROM sys.tables t 
    WHERE schema_id = SCHEMA_ID('xyz')

DECLARE @TableName sysname

OPEN TableCursor

FETCH NEXT FROM TableCursor INTO @TableName

-- iterate over all tables found    
WHILE @@FETCH_STATUS = 0
BEGIN
    DECLARE @Stmt NVARCHAR(999)

    -- construct T-SQL statement to move table to 'abc' schema
    SET @Stmt = 'ALTER SCHEMA abc TRANSFER xyz.' + @TableName
    EXEC (@Stmt)

    FETCH NEXT FROM TableCursor INTO @TableName
END

CLOSE TableCursor
DEALLOCATE TableCursor
Run Code Online (Sandbox Code Playgroud)