编辑:更新声明它没有挂起,只需要 AGES !
我正在尝试使用 dacpac 更新现有的 sql server 数据库。
我可以在 30 秒内使用下面的(精简)示例创建一个新的 SQL Server 数据库。我遇到的问题是使用相同的 dacpac,重新运行该过程(因此它正在更新现有数据库而不是重新创建)需要 20 分钟。
这种如果时差是可以预期的吗?全面使用了redgate的SqlCompare,我发现时间不合时宜。
deploy 方法的第三个参数是 UpgradeExisting ,我将其设置为 true - 这是我需要做的全部还是我错过了什么?
void Deploy(string TargetConnectionString, string TargetDatabaseName, string pathToSourceDACPAC)
{
DacServices dacServices = new DacServices(TargetConnectionString);
//Set up message and progress handlers
dacServices.Message += new EventHandler<DacMessageEventArgs>(dbServices_Message);
dacServices.ProgressChanged += new EventHandler<DacProgressEventArgs>(dbServices_ProgressChanged);
//Load the DACPAC
DacPackage dacpac = DacPackage.Load(pathToSourceDACPAC);
//Set Deployment Options
DacDeployOptions dacOptions = new DacDeployOptions();
dacOptions.AllowIncompatiblePlatform = true;
//Deploy the dacpac
dacServices.Deploy(dacpac, TargetDatabaseName, true, dacOptions);
}
//Event handlers...
void dbServices_Message(object sender, DacMessageEventArgs e)
{
OutputThis("DAC Message", e.Message.ToString());
}
void dbServices_ProgressChanged(object sender, DacProgressEventArgs e)
{
OutputThis(e.Status.ToString(), e.Message.ToString());
}
注意,程序消失在 dacServices.Deploy 行上的以太中。