首页 > 解决方案 > 如何生成脚本以创建具有不同架构的所有表

问题描述

我在一个模式中有大约 200 个表。我需要使用自动过程在新的备份模式中复制这些表。

我想创建一个过程以在不同的架构上动态地重新创建架构中的所有表(可能是动态的表和列数)。

我可以循环所有表并创建SELECT * INTO dbo_b.TABLE FROM dbo.TABLE语句,但出现错误:

列“AMBIENTE”的数据类型不能参与列存储索引。

我创建了一个简单的视图SELECT * FROM TABLE,并尝试执行,SELECT * INTO dbo_b.TABLE from dbo.VIEW但我遇到了同样的问题。

它仅在我创建 dbo_b.Table 并将其插入时才有效:因此我需要生成一个脚本来自动循环我的架构中的所有表并生成一个脚本来在新架构中创建表。

这不是一次性的工作,它应该每天运行,所以我不能手动完成。

标签: sqlsql-serverssmsscriptreplicate

解决方案


接缝我们得到同样的问题。

您可以尝试以这种方式循环所有表并在新模式中创建表:

    IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME = 'YYYY' AND TABLE_SCHEMA = 'XXXX') 
 drop table [ZZZZ].[YYYY]  

CREATE TABLE [ZZZZ].[YYYY] 
WITH ( DISTRIBUTION = ROUND_ROBIN
,    HEAP ) as  
( SELECT * FROM XXXX.YYYY ) 

让我知道。BR


推荐阅读