如何将表移动到T-SQL中的模式中

Luk*_*asz 262 t-sql sql-server schema sql-server-2008 sql-server-2016

我想使用T-SQL将表移动到特定的Schema中?我正在使用SQL Server 2008.

Mit*_*eat 450

ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;
Run Code Online (Sandbox Code Playgroud)

如果要将所有表移动到新模式中,可以使用未记录的(并且在某些时候不推荐使用,但不太可能!)sp_MSforeachtable存储过程:

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"
Run Code Online (Sandbox Code Playgroud)

参考: ALTER SCHEMA

SQL 2008:如何将db模式更改为dbo

  • 2018年仍然挽救了我的生命.非常感谢Mitch. (5认同)

Rev*_*eer 19

简短回答:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name
Run Code Online (Sandbox Code Playgroud)

我可以确认表中的数据保持不变,这可能非常重要:)

根据MSDN文档的长答案,

ALTER SCHEMA schema_name 
   TRANSFER [ Object | Type | XML Schema Collection ] securable_name [;]
Run Code Online (Sandbox Code Playgroud)

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

  • @DaveBoltnman:你已经在接受的答案后6年和你自己的评论上面写了一个答案"这是相同的". (5认同)
  • 为什么表中的数据不会因为将表移动到不同的模式容器而保持不变? (4认同)
  • 不错的改名@DaveBoltman。回答旧问题很棒,因为它们可以为现有答案添加一些内容。 (3认同)
  • 为什么我的正确答案遭到否决?请对照已接受的答案检查我的答案,该答案是相同的,并且已经有 257 票赞成(包括我的)。 (2认同)
  • 确认数据完整无缺,这才节省了我的血压... :) (2认同)