由于数据分类声明,Azure DevOps DACPAC 部署失败

Sve*_*man 2 azure-sql-database azure-devops azure-pipelines

我使用数据分类敏感度标签对 Azure SQL 数据库中的一些列进行了分类。在数据库对应的SSDT项目中,存在如下SQL语句:

ADD SENSITIVITY CLASSIFICATION TO
    [dbo].[tablename].[UserName]
    WITH (LABEL = 'Confidential', LABEL_ID = 'guid1'
        , INFORMATION_TYPE = 'Credentials', INFORMATION_TYPE_ID = 'guid2');
Run Code Online (Sandbox Code Playgroud)

SSDT 项目在 VS 2019 以及 Azure DevOps 构建管道中的构建任务中构建良好。正如预期的那样,我不得不使用 VS 2019(托管)代理,因为以前版本的 SSDT 无法识别该 SQL 语法。

在管道中,该项目的 DACPAC 已成功构建。然后我尝试使用 Azure SQL 数据库部署任务部署该 DACPAC。它使用在托管代理上的 C:\Program Files\Microsoft SQL Server\150\DAC\bin\ 中找到的 SqlPackage.exe 版本。它显然无法识别这些 SQL 语句并且失败并出现以下错误:

元素或注释类 SqlSimpleColumn 不包含属性类 SensitivityLabel。

有没有办法将更新的 SqlPackage.exe 部署到托管构建代理,还是我一直在等待 Microsoft 更新映像?有没有办法将参数传递给 SqlPackage.exe 指示它忽略这些语句?

Mer*_*SFT 5

有没有办法将更新的 SqlPackage.exe 部署到托管构建代理,还是我一直在等待 Microsoft 更新映像?

不敢说,不,直到现在,我们还没有提供让用户SqlPackage.exe在运行时将最新版本安装到托管代理映像中的方法,即使是临时操作。

Sensitivity标签已被添加到SQL Azure的数据库,同时我们也提出了PR内部更新最新的SQL Package.exe在托管的图片:添加最新的SQL Package.exe和的MSBuild支持。我相信它很快就会被部署和更新。

有没有办法将参数传递给 SqlPackage.exe 指示它忽略这些语句?

据我所知,编译的 SqlPackage.exe 不存在这样的参数。在本文档中,我们列出了所有支持的参数。详细可以参考这个。到目前为止,它不适用于Sensitivity classificationin release 工作,我们建议您Sensitivity classification暂时删除used 来发布项目。或者您可以构建一个私有代理,在其中安装 SqlPackage.exe。然后从本地计算机上的位置运行 SqlPackage.exe 命令。

我将监控这个内部 PR 流程,一旦 PR 完成并部署了新图像,我将在此处更新我的答案,让您和其他 SO 用户知道。