【发布时间】:2017-08-18 17:39:24
【问题描述】:
我们有一些自动化的 dacpac 部署代码,可以使用 Microsoft.SqlServer.Dac 正确处理 C# 中的 CreateNewDatabase 和直接更新数据库场景
现在在 CreateNewDatabase 案例中,我们希望能够在禁用部署前和部署后脚本的情况下运行 DacServices.Deploy()。 IE。在这种情况下不应执行它们。
我试图在 DacDeployOptions 和 DacServices 对象中找到合适的位置,但找不到任何可以做到这一点的东西。理想情况下
问题 1:我想要DacDeployOptions.IgnorePreDeploymentScript = true 之类的东西,有什么方法可以在运行时实现吗?
作为替代方案,前段时间我记得看到示例代码展示了如何遍历 dacpac 并在运行时创建新的 dacpac。我认为这种方法可以让我简单地创建一个新的 dacpac,我可以将它传递给 Deploy,并且不包括 Pre 和 Post Deployment 脚本。我不喜欢这个解决方案,但它可以让我实现我所需要的。
问题 2:谁能给我一些例子吗?
我的代码:
var dacService = new DacServices(ConstDefaultConnectionString);
using (var dacPackage = DacPackage.Load(dacPacFilePath))
{
var deployOptions = new DacDeployOptions
{
CreateNewDatabase = true,
IncludeTransactionalScripts = false
};
dacService.Deploy(dacPackage, TestDatabaseName, true, deployOptions);
}
问题涉及到:Create LocalDB for testing from Visual Studio SQL project
【问题讨论】:
标签: c# sql-server deployment sql-server-data-tools dacpac