任务 - 在 Azure Synapse 无服务器中生成脚本 SQL

Tasks - Generate Scripts in Azure Synapse Serverless SQL

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

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

感谢任何建议,谢谢!

目前 SSMS 不支持此功能。 您可以像从 SSMS UI.

中编写的那样,一个接一个地编写外部表脚本。

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

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

博客摘要post:

  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 数据库的登录名而不是 ,以及放置外部表的数据库的名称,而不是 .

一旦你运行这个脚本,你将在输出中看到创建外部表的脚本window。

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

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

结论

DbaTools 是一组非常有用的 PowerShell 命令,可让您自动执行 Synapse SQL 数据库中的管理任务。在这个例子中你已经看到热生成创建和删除表的脚本,但是你可以很容易地修改这个脚本来create/drop 用户、数据库等

我相信现在已经添加了。我使用的是 SSMS v18.10,在“任务”菜单外有一个生成脚本按钮。

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

从工具栏:

查看 > 对象资源管理器详细信息 > 数据库 > {select 你的数据库} > 视图

在这里您可以select一个或多个视图,right-click,然后select脚本视图为>创建到>新建Window

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