在部署到 SQL Azure 数据库时,我有一个关于数据层应用程序 (DACPAC) 升级的问题。当我们通过向导 UI 手动升级 DACPAC 时,有一个步骤可以让我们查看数据丢失警告报告并能够将操作报告保存到 HTML 文件中(请参阅“查看升级计划页面”下的 here )。 Action 列显示将运行以执行升级的操作,例如 Transact-SQL 语句。如果关联的操作可能会删除数据,则数据丢失列将包含警告。
现在,我正在使用 Powershell 自动执行数据库升级过程,到目前为止它运行良好。不幸的是,我找不到生成相同数据丢失警告报告的方法 .
我的 Powershell 升级脚本的摘录如下:
## Generate the database change list (database drift) and upgrade script and save them to file.
$dacChanges = $dacStore.GetDatabaseChanges($dataTierAppNameToUpgrade) | Out-File -Filepath .\DatabaseChanges.txt
## Getting the DAC incremental upgrade script for data-tier application
$dacStore.GetIncrementalUpgradeScript($dataTierAppNameToUpgrade, $nextDacType) | Out-File -Filepath .\DatabaseUpgrade.sql
DatabaseChanges.txt
GetDatabaseChanges()
生成的输出文件并没有真正提供信息,所以我们想知道是否有一种方法可以获得与我们手动完成升级向导时获得的报告文件相同的报告文件。在解决数据迁移问题时,此报告对部署团队有很大帮助,我们希望在部署到实时生产数据库时能够手动检查它。我们已经搜索了 MSDN 文档,但没有任何运气。
有谁知道 Powershell 部署是否支持此功能?
是否有计划在不久的将来支持此功能?
提前感谢您的帮助。
最佳答案
根据 http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.dac.dacupgradeoptions.aspx , 默认情况下 IgnoreDataLoss 为 false,这意味着如果检测到数据丢失,升级将失败。在 .NET 中,您可以处理 DacActionFinished 事件 (http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.dac.dacstore.dacactionfinished.aspx),它会在升级操作完成时触发.如果出现问题,事件 arg 的 Error 属性 (http://technet.microsoft.com/en-us/library/microsoft.sqlserver.management.dac.dacactioneventargs.error.aspx) 将包含详细的异常。它可能不是你想要的 html 报告,但它仍然会给你一些信息。您可以从 PowerShell 处理 CLR 事件。请引用http://blogs.msdn.com/b/powershell/archive/2008/05/24/wpf-powershell-part-3-handling-events.aspx对于 sample 。
顺便说一句,实际上这个问题不仅限于 SQL Azure。您还可以将标记修改为 SQL Server 以获得进一步的建议。
此致,
徐铭。
关于deployment - 使用 Powershell 部署到 SQL Azure - 有没有办法生成数据丢失警告报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10180359/