任务 - 在 Azure Synapse Serverless SQL 中生成脚本

Posted

技术标签:

【中文标题】任务 - 在 Azure Synapse Serverless SQL 中生成脚本【英文标题】:Tasks - Generate Scripts in Azure Synapse Serverless SQL 【发布时间】:2021-03-21 03:13:34 【问题描述】:

我正在使用通过最新版本的 SSMS 连接的 Azure Synapse Serverless SQL 实例。我在 Azure Data Lake (Gen2) 的 parquet 文件上定义了几个外部表。

我的问题是如何使用典型的“Tasks-Generate Scripts” 来生成类似于我在 SQL Server 中使用的外部表定义?或者做一些类似的事情(批量导出外部表定义)......此时,我似乎需要逐个外部表去外部表(右键单击->脚本表作为->拖放并创建到->文件,等等)。

感谢任何建议,谢谢!

【问题讨论】:

【参考方案1】:

目前,SSMS 不支持此功能。 您可以像在 SSMS UI 中编写的那样对外部表进行一一编写脚本。

我们确实计划在未来为此提供支持。

您可以使用 PowerShell 编写多个外部表的脚本。 看看我们写的blog post 了解详情。

博文摘要:

    打开 PowerShell

    运行:Install-Module dbatools

    生成创建外部表的脚本

    如果您已在 Synapse SQL 中创建了一组外部表,并且您想要移动它们的 定义到另一个实例或在本地或某些源中保留创建脚本- 控制系统,您可以轻松创建创建所有外部表的脚本。

如果您安装了最新版本的 DbaTools,您可以使用以下脚本为您的一组表生成 CREATE EXTERNAL TABLE 脚本:

    $loginName = "<login>"
    $synapseSqlName = "<sql endpoint name>"
    $databaseName = "<database name>"
    $login = Get-Credential -Message "Enter your SQL serverless password" -UserName $loginName
    $script = Get-DbaDbTable -SqlInstance "$synapseSqlName.sql.azuresynapse.net" -Database $databaseName -SqlCredential $login | Export-DbaScript -Passthru | Out-String
    $script -replace ' NULL', ''

您需要输入 Synapse SQL 无服务器端点的名称而不是(例如 mysynapsesqlendpoint-ondemand)、用于连接到 Synapse SQL 数据库的登录名而不是 以及放置外部表的数据库的名称而不是。

运行此脚本后,您将在输出窗口中看到创建外部表的脚本。

Export-DbaScript 使您能够自定义脚本并在某些文件中导出 CREATE TABLE 语句、定义编码、省略架构等。您可以使用许多选项来自定义脚本生成。

在上面的示例中,我使用Get-DbaDbTable 命令从我的数据库中获取所有外部表。您还可以自定义此命令以从多个数据库中获取表或指定要导出的表集。

结论

DbaTools 是一组非常有用的 PowerShell 命令,可让您自动执行 Synapse SQL 数据库中的管理任务。在此示例中,您已经看到生成创建和删除表的脚本很热门,但您可以轻松修改此脚本以创建/删除用户、数据库等。

【讨论】:

【参考方案2】:

我相信这已经被添加了。我正在使用 SSMS v18.10,并且在任务菜单之外有一个生成脚本按钮。

【讨论】:

【参考方案3】:

默认情况下,可以从 SSMS 生成 Synapse Serverless 脚本。但是,它不像往常那样简单。执行以下操作以生成脚本:

从工具栏:

查看 > 对象资源管理器详细信息 > 数据库 > 选择您的数据库 > 视图

这里可以选择一个或多个视图,右击,然后选择Script View As > Create To > New Window

它将为您选择的所有视图编写脚本。我不确定他们为什么不只提供标准的“生成脚本”选项,但这是一种解决方法。

【讨论】:

以上是关于任务 - 在 Azure Synapse Serverless SQL 中生成脚本的主要内容,如果未能解决你的问题,请参考以下文章

Azure Synapse Sql 池未从 Azure Synapse Studio 数据流接收数据

Azure Synapse 专用 sql 池未在 Synapse Studio 中显示数据对象

Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字

如何在 Synapse (Azure SQL DW) 上检索视图定义?

通过 Synapse Pipelines 执行 Azure Synapse Notebook 时访问 Key Vault 时出错

在 Azure Synapse 中读取 JSON