【发布时间】:2017-10-03 06:31:13
【问题描述】:
我想在我们的 CI 服务器上自动化我的数据库部署。我编写了一个 powershell 脚本来将 dacpac 文件部署到 sql server 上的数据库中。但是现在我处于一个奇怪的位置,我有两个单独的 dacpac 文件,并希望将它们部署到单个数据库(由于我们的软件设计,我不能使用单个 dacpac)。如果我一个一个地部署它们,它会删除从第一个 dacpac 创建的对象。因此,非常感谢这里的任何帮助。
如果有其他方法可以合并两个 dacpac 文件并使用任何命令或脚本部署它们,请回复您的建议。
我正在使用以下 powershell 脚本将单个 dacpac 部署到数据库。
$sqlPackagePath = "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\Microsoft.SqlServer.Dac.dll";
$sqlServer = "localhost";
$dacpacPath = "mydatabase.dacpac"
$database = "TestDatabase"
add-type -path $sqlPackagePath
$dacService = new-object Microsoft.SqlServer.Dac.DacServices "server=$sqlServer"
$dp = [Microsoft.SqlServer.Dac.DacPackage]::Load($dacpacPath)
$dacService.deploy($dp, $database, "True")
【问题讨论】:
-
如果您先部署第一个,然后再部署第二个,该怎么办。是覆盖吗??或者它是否满足您的需求。然后我们可以考虑一些逻辑
-
是的,它会移除第一个 dacpac 创建的对象,只保留第二个 dacpacc 中的对象。但我想保留两者。我可以每次都创建整个新数据库,因为它只是用于集成测试,并且每次都必须从新实例开始。
-
那么为什么不创建两个单独的对象并将其部署在单个数据库中。用两个 dacpac 运行一个 foreach 并部署它,
标签: sql-server powershell continuous-integration continuous-deployment dacpac