4

SQL Azure データベースにデプロイするときのデータ層アプリケーション (DACPAC) のアップグレードに関して質問があります。ウィザード UI を使用して DACPAC を手動でアップグレードする場合、データ損失警告レポートを確認し、アクション レポートを HTML ファイルに保存する手順があります ( 「アップグレード計画ページの確認」の下のこちらを参照してください)。[アクション] 列には、アップグレードを実行するために実行される 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 展開でサポートされているかどうかは誰にもわかりませんか? これは近い将来サポートされる予定ですか?

事前にご協力いただきありがとうございます。

4

2 に答える 2

1

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を参照してください。

ところで、実はこの問題は SQL Azure だけの問題ではありません。タグを SQL Server に変更して、さらに提案を取得することもできます。

よろしくお願いします、

明徐。

于 2012-04-17T08:55:36.210 に答える
0

DAC @ Microsoftの所有者と連絡を取りました。彼が提案した解決策は、マネージドAPIを使用するか、SqlPackage.exeを使用することで可能です。

SqlPackage.exeには、展開レポートを作成するためのアクションがあります。データ損失の問題が検出された可能性がある場合は、レポートに含まれます。

参照: http: //msdn.microsoft.com/en-us/library/hh550080 (v = VS.103).aspx

于 2012-04-19T20:40:11.160 に答える