Azure 突触部署失败

Azure synapse deployment failing

我正在尝试在 Azure Devops 管道中使用 PowerShell 脚本将 SQL 文件部署到 Azure Synapse Analytics 专用 SQL 池。

我有一个包含 SQL 个文件的文件夹,在定义文件数组后,我尝试 运行 数组的 foreach 循环并尝试 Invoke-Sqlcmd 部署文件,但首先 SQL 文件被部署(对象被创建)然后我得到错误:

Msg 104309, Level 16, State 1, Line 1 There are no batches in the input script.

下面是我的一段代码:

$files='$(Build.SourcesDirectory)\folder1\'

foreach ($s in $files)
{
Invoke-sqlcmd -ServerInstance $(server) -Database $(db) -InputFile $s -Credential $(cred)}

Azure Synapse Analytics 专用 SQL 池脚本对空批次敏感,例如此脚本会生成相同的错误:

Msg 104309, Level 16, State 1, Line 1 There are no batches in the input script.

-- xx
GO

但事实是您在 Synapse Studio 和 SQL Server Management Studio (SSMS) 中遇到了同样的错误,所以我建议您 运行 通过脚本并使用 SSMS 中的 Parse 按钮 (Ctrl+F5),它会解析脚本但 不会 [=30] =] 执行它。这将帮助您找出错误:

总而言之,没有不执行任何操作的批次。

我能够通过包含 dir 并使用 FullName 方法获取完整路径来添加一个简单的本地示例:

$files = dir "D:\temp\Powershell\*.sql"

foreach ($s in $files) {
    #$s.Name
    Invoke-Sqlcmd -ServerInstance '.\sql2019x' -Database 'tempdb' -InputFile $s.FullName
}