如何在 T-SQL 中将表移动到模式中
如何将表移动到T-SQL中的架构
你可以使用以下代码将表移动到另一个架构中:
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 collection),可以省略Object关键字。
有人对我的答案进行了负评,请和被接受的答案进行对比,它们是相同的,而且被接受的答案已经获得了257个赞(包括我的)。
感谢你确认了数据仍然存在,这样我就不用担心了...
你在被接受的答案之后6年才回答的,而且你自己的评论中说“它们是相同的”。
- 谢谢你的观察:)我确实补充了一些对很多人来说可能很重要的内容,原始的被接受的答案没有提到这一点,即“我可以确认表中的数据仍然存在”。
为什么表中的数据在移动到不同的架构容器中时不会丢失呢?
好吧,我可以在我的服务器上运行一些DDL,并创建一个与你的服务器上完全相同的表。但是我的表里没有你的数据。现在你在你的服务器上运行一些DDL来将表移动到不同的架构中。它的数据还在吗?我确认它仍然存在,“这可能非常重要:)”
哦,我在6年之后给被接受的答案点了个赞。看来这也是无效的:|
附注:请参考meta.stackexchange.com/questions/23996/… - 绝大多数人都认为回答老问题是个好主意。
好名字变了。回答旧问题是很好的,只要它们对现有答案有所补充。
问题:如何在T-SQL中将表移动到模式中?
原因:用户想要将表移动到不同的模式中,以便更好地组织和管理数据库对象。
解决方法:可以使用T-SQL中的ALTER SCHEMA语句来将表移动到不同的模式中。以下是一些解决方法:
1. 将单个表移动到目标模式中:
ALTER SCHEMA TargetSchema TRANSFER SourceSchema.TableName;
2. 将所有表移动到新模式中(使用未记录的存储过程):
exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"
参考资料:
- ALTER SCHEMA官方文档:ALTER SCHEMA
- Stack Overflow上的相关问题:SQL 2008: How do I change db schema to dbo