繁体   English   中英

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

[英]Tasks - Generate Scripts in Azure Synapse Serverless SQL

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

我的问题是如何使用典型的“任务生成脚本”来生成类似于我在 SQL 服务器中使用的外部表定义? 或者做类似的事情(批量导出外部表定义)...在这一点上,看来我需要通过外部表来 go 外部表(右键单击 -> 脚本表为 -> 拖放并创建到 -> 文件, ETC。)。

任何建议表示赞赏,谢谢!

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

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

您可以使用 PowerShell 编写多个外部表的脚本。 请查看我们撰写的这篇文以了解详细信息。

博文摘要:

  1. 打开 PowerShell

  2. 运行: Install-Module dbatools

  3. 生成创建外部表的脚本

    如果您在 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 数据库的登录名,以及放置外部表的数据库的名称。

运行此脚本后,您将看到在 output window 中创建外部表的脚本。

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

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

结论

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

在此处输入图像描述

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

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

从工具栏:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM