0

我有一个dev.profile.xml文件,用于设置用于构建 dacpac 等的环境级别值。我在此发布配置文件中定义了一个 sqlcmd 变量,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <!-- <IncludeTransactionalScripts>True</IncludeTransactionalScripts> -->
    <DeployScriptFileName>deploy.sql</DeployScriptFileName>
    <ExcludeUsers>True</ExcludeUsers>
    <ExcludeLogins>True</ExcludeLogins>
    <ExcludeDatabaseRoles>True</ExcludeDatabaseRoles>
    <CreateNewDatabase>False</CreateNewDatabase>
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
    <DropObjectsNotInSource>False</DropObjectsNotInSource>
    <DoNotDropLogins>True</DoNotDropLogins>
    <DoNotDropUsers>True</DoNotDropUsers>
    <DoNotDropRoleMembership>True</DoNotDropRoleMembership>
    <DoNotDropApplicationRoles>True</DoNotDropApplicationRoles>
    <DoNotDropDatabaseRoles>True</DoNotDropDatabaseRoles>
    <DoNotDropPermissions>True</DoNotDropPermissions>
    <TargetConnectionString>Data Source=xxxx;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False;Integrated Security=False;Trusted_Connection=False</TargetConnectionString>
    <TargetDatabaseName>xxxx</TargetDatabaseName>
    <TargetResourceGroup>xxxx</TargetResourceGroup>
    <ProfileVersionNumber>1</ProfileVersionNumber>
  </PropertyGroup>
  
  <ItemGroup>
    <SqlCmdVariable Include="ADLSSeedLocation">
      <DefaultValue>abfss://staging@xxxx.dfs.core.windows.net</DefaultValue>
      <Value>abfss://staging@xxxx.dfs.core.windows.net</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>

我使用这个变量来创建External Data Source如下:

CREATE EXTERNAL DATA SOURCE [AzureDataLakeStorage]
    WITH (
    TYPE = HADOOP,
    LOCATION = N'$(ADLSSeedLocation)',
    CREDENTIAL = [dummycreds]
    );

但是每次我运行 build、driftreports 等时,我都会收到以下警告和错误:

*** The following SqlCmd variables are not defined in the target scripts: ADLSSeedLocation.
4

1 回答 1

0

each time I run build必须定义变量的第一个地方是项目属性(sqlproj)。

在此处输入图像描述

Build 和 Schema 比较不使用 publish.xml:可以有多个发布配置文件,它们用于发布,而不是用于构建。请注意,当您从 VS 发布时,您使用特定的 publish.xml 文件,从命令行发布时,您将特定的 publish.xml 文件路径传递给 sqlpackage.exe

在 sqlproj 中定义变量后,可以使用 Visual Studio SSDT 发布对话框中的“加载变量”按钮将其导入任何 publish.xml。

于 2022-02-21T12:06:03.710 回答