我想移动一个表到一个特定的模式使用T-SQL?我使用的是SQL Server 2008。


当前回答

ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

如果你想把所有的表都移动到一个新的模式中,你可以使用没有文档的sp_MSforeachtable存储过程(在某些时候会被弃用,但不太可能!):

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

参考:ALTER SCHEMA

SQL 2008:如何将数据库模式更改为dbo

其他回答

ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

如果你想把所有的表都移动到一个新的模式中,你可以使用没有文档的sp_MSforeachtable存储过程(在某些时候会被弃用,但不太可能!):

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

参考:ALTER SCHEMA

SQL 2008:如何将数据库模式更改为dbo

简短的回答:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

我可以确认表中的数据保持完整,这可能是相当重要的:)

根据MSDN文档,答案很长,

ALTER SCHEMA schema_name 
   TRANSFER [ Object | Type | XML Schema Collection ] securable_name [;]

如果它是一个表(或者Type或XML Schema集合之外的任何东西),您可以省略单词Object,因为这是默认的。