首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sqlpackage.exe自定义Server数据工具(SSDT)包的部署,使其随环境的不同而有所不同

使用sqlpackage.exe自定义Server数据工具(SSDT)包的部署,使其随环境的不同而有所不同
EN

Stack Overflow用户
提问于 2019-08-20 04:45:42
回答 1查看 344关注 0票数 2

我有一个(SSDT) .sqlproj文件,其中包含如下表类型:

代码语言:javascript
复制
CREATE TYPE [dbo].[tableType] AS TABLE
(
    [id] uniqueidentifier INDEX [idx],
)
 WITH  
        (MEMORY_OPTIMIZED = ON); 

我正在将这个项目部署到Azure SQL中。问题是,我的测试数据库是Azure SQL标准(而不是高级或关键业务)。因此,它们不支持内存优化的表。因此,我试图找出一种方法来部署类型,而不需要测试中的内存优化,以及生产中的内存优化。命令行开关,env变量,什么都行。我正在使用sqlpackage.exe进行部署,但我愿意使用其他方法来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 08:40:39

由于这是针对特定环境的,我建议您选择以下方法之一:

你可以有三种方法:

  1. 正如@Lukasz建议的那样,您可以使用SQLCMD变量。定义SQLCMD变量并提及环境。根据环境,您可以决定在部署后脚本中执行哪个脚本。
代码语言:javascript
复制
IF '$(Environment)' = 'Prod'
        BEGIN
            :r .\ProdSpecificScript\Prod_TableTable.sql
        END
        ELSE
        BEGIN
           :r .\NonProdSpecificScript\NonProd_TableTable.sql
        END 
  1. 您可以使用以下信息更新Project文件,以便根据环境用不同的文件覆盖部署后脚本。您可以使用不同的TableType脚本拥有两个不同的部署后脚本。
代码语言:javascript
复制
<Target Name="BeforeBuild">
      <Message Text="Copy files task running for configuration: $(Configuration)" Importance="high" />
      <Copy Condition=" '$(Environment)' == 'Prod' " SourceFiles="Scripts\Post-Deployment\Default.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />
      <Copy Condition=" '$(Environment)' == 'NonProd' " SourceFiles="Scripts\Post-Deployment\Default.Script.PostDeployment.sql" DestinationFiles="Scripts\Post-Deployment\Script.PostDeployment.sql" OverwriteReadOnlyFiles="true" />      
  </Target>
  1. 您可以检查Azure服务层并相应地决定脚本。
代码语言:javascript
复制
DECLARE @ServiceTier VARCHAR(30)
SET @ServiceTier = (SELECT COALESCE(DATABASEPROPERTYEX(DB_NAME(), 'ServiceObjective'), 'N/A in v11') AS AzureTier FROM sys.database_service_objectives

IF @ServiceTier = 'P1'
BEGIN
    :r .\ProdSpecificScript\Prod_TableTable.sql
END
ELSE
BEGIN
   :r .\NonProdSpecificScript\NonProd_TableTable.sql
END
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57566846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档