如何在自动化测试构建期间使用BACPAC还原Azure数据库?

时间:2017-08-17 06:44:28

标签: c# sql-server azure azure-devops build-automation

我有一组编码的UI测试,每天通过VSTS运行。此测试计划的一个先决条件是将BACPAC导入SQL服务器。为了满足这个要求,我创建了一个测试方法,它使用 Microsoft.SqlServer.Dac.DacServices.ImportBacpac 方法导入BACPAC,将测试包含在测试套件中,然后通过一个测试套件执行在构建定义中运行功能测试任务。

最近,数据库已移至Azure,因此此测试失败,并显示以下消息:

  

Microsoft.SqlServer.Dac.DacServicesException:无法将数据导入目标,因为它包含一个或多个用户对象。应该对新的空数据库执行导入。   错误SQL0:无法将数据导入目标,因为它包含一个或多个用户对象。应该对新的空数据库执行导入。

向退伍军人提出的要求

在我提出问题之前,我想提一下,我对Azure的体验目前为零,如果我提出任何本应明显的事情,我希望你能原谅我。

问题

我有办法以编程方式将BACPAC导入Azure(类似于我现有的方法)吗?或者使用 Azure SQL数据库部署任务更好吗?或者你会推荐另一种方法吗?

2 个答案:

答案 0 :(得分:1)

更好更简单的方法是使用Azure SQL Database Deployment task将bacpac部署到azure数据库,它可以自动添加和删除防火墙规则。

另一方面,您可以参考下面的这个主题,为您的测试机器添加防火墙规则到azure SQL服务器,或者您可以手动添加它:

Deploy Dacpac packages via power shell script to Azure SQL Server

更新(构建任务):

  1. Visual Studio构建任务以构建数据库项目(MSBuild参数:/p:OutDir=$(Build.ArtifactStagingDirectory)
  2. Azure SQL数据库部署任务(DACPAC文件:$(build.artifactstagingdirectory)\**\*.dacpac
  3. 如果要在发行版中部署数据库:

    构建任务:

    1. Visual Studio构建任务以构建数据库项目(MSBuild参数:/p:OutDir=$(Build.ArtifactStagingDirectory)
    2. 发布构建工件(发布路径:$(build.artifactstagingdirectory)
    3. 将发布工件链接到该版本
    4. 发布任务:

      1. Azure SQL数据库部署任务(DACPAC文件:$(System.DefaultWorkingDirectory)\**\*.dacpac

答案 1 :(得分:0)

--Backup And Restoring BACPAC File In Azure Portal
--Step :-
1)Go to Database  >>Task >>Export Data
This Will Create A BACPAC File.

2)connect to Azure Portal Right CLick On Database >> Import Data 
This will Import the Data Database In Azure Sql Portal
NOTE :- Azure Not Allow to Import data If The DataBase BACPAC File Contain
        Any Encryption Data/File.

--=====For Blob Data in Azure Portal >>Download Microsoft Azure Storage Tools>>======
--Step  
--1)Create Storage Account And Credential Of Azure Account
--2)Go to Data IN Storage Account And Import the Bacpac file
--This will upload the BACPAC File ON Azure Portal