如何将所有表、存储过程复制到 Synapse 数据仓库中的另一个模式?

How to copy all tables, stored procedures to another schema in Synapse data warehouse?

目前,我需要将所有表(DDL 和表中的数据)、存储过程转移到 Synapse 数据仓库中的另一个模式。我查看了下面的文档,但似乎我必须将它们一一移动。

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-schema-transact-sql?view=sql-server-ver15

有没有一种方法、命令或查询可以将一个模式的所有内容传输到 Synapse 数据仓库中的另一个模式?

亲切的问候,

没有执行此操作的内置方法,但根据您的技能,有许多不同的选项:

  • 使用 SQL Server Management Studio (SSMS) 内置脚本选项。较新版本的 SSMS(v18.x 及更高版本)能够为 Azure Synapse Analytics 生成 DDL。只需在对象资源管理器中指向您的对象(table、存储过程、视图等),右键单击它,然后查看脚本选项。例如,对于 tables,您将看到 'Script Table as'

  • SQL 服务器数据工具 (SSDT) - SSDT 现在支持 Azure Synapse Analytics,专用 SQL 池。因此,您可以导入您的架构,在项目中的 .sql 脚本中进行查找和替换,然后生成脚本。您还可以使用数据比较和模式比较功能。

  • 命令行选项 mssql-cli。这提供了强大的命令行脚本选项,但您需要下载并安装它:https://docs.microsoft.com/en-us/sql/tools/mssql-cli?view=sql-server-ver15

  • 使用CTAS传输架构和数据。创建一个简单的 CTAS 模板并 运行 为您的每个 tables:

     CREATE TABLE <new schema>.yourTable
     WITH
     (
         DISTRIBUTION = ROUND_ROBIN,
         CLUSTERED COLUMNSTORE INDEX
     )
     AS
     SELECT *
     FROM <old schema>.yourTable;
     OPTION ( LABEL = 'CTAS: copy yourTable to new schema' );
    

所以有几个选项供您选择。