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

306
我想使用T-SQL将一张表移动到特定的模式(Schema),我正在使用SQL Server 2008。

1
如果你需要将多个表移动到一个新模式中,请参考重命名多个表 - Tony
2个回答

523
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

如果您想将所有表移动到一个新的模式中,可以使用未记录(并且在某个时候可能会被弃用,但不太可能!)的sp_MSforeachtable存储过程:

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

参考: ALTER SCHEMA

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


24

简短回答:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

我可以确认表格中的数据仍然完整无损,这可能非常重要 :)

根据MSDN文档的长篇回答,

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

如果它是一个表格(或除类型或XML模式集合以外的任何内容),您可以省略“对象”一词,因为那是默认值。


2
为什么我的正确答案被踩了?请将我的答案与已接受的答案进行比较,它们是相同的,并且已经有257个赞(包括我的)。 - Reversed Engineer
3
确认数据仍然完整,这保住了我的血压... :) 给你点赞。 - user593806
10
@DaveBoltnman:您在被接受的答案后六年回答,并根据您上面的评论“相同”,请问您想表达什么? - Mitch Wheat
4
为什么当表被移动到不同的架构容器中时,表中的数据不会保持完整? - Mitch Wheat
5
改名字很不错@DaveBoltman。回答旧问题是很好的,尤其是当它们对现有答案有所补充时。 - Mitch Wheat
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接