【问题标题】:How to generate a script to create all tables with different schema如何生成脚本以创建具有不同架构的所有表
【发布时间】:2021-11-22 12:05:48
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 您使用的是哪个 dbms? (不同的产品有不同的工具。)
  • Synapse 通过 SQL Server management Studio 2019
  • 你搜索过 Stack Overflow 吗?例如generate-sql-create-scripts-for-existing-tables-with-query
  • 试过这个,给我一个错误“FOR 附近的语法不正确”
  • 也许您和 power83 可以合作解决same question。 “备份”对我来说意味着您需要一个源代码控制系统和一个开发过程,该过程将捕获您随时间所做的任何架构更改。

标签: sql sql-server ssms script replicate


【解决方案1】:

接缝我们遇到了同样的问题。

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

    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

【讨论】:

  • 这很有魅力!谢谢@power83!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多