私はこれを何十回も行いましたが、最近このエラーに遭遇しました。ここに到達するまでに行った手順は次のとおりです。
それが爆撃するのに数秒しかかからず、エラーが表示されます:
Error SQL72014: .Net SqlClient Data Provider: Msg 33161, Level 15, State 1, Line 1 Database master keys without password are not supported in this version of SQL Server
Error SQL72045: Script execution error. The executed script: CREATE MASTER KEY;
1.5か月前に同じデータベースで同じプロセスを実行しましたが、すべてがうまくいきました...他の誰かがこれを経験していますか? SSDTバージョン14.0.61021.0がインストールされています-それが重要かどうかはわかりません。 SQL Server 2016 Developer Edition(v13.0.1722.0)も実行しています。
さて、この問題を解決する方法は次のとおりです。
そのデータベースで次のスクリプトを実行します。
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = [password here];
私はこれに関するドキュメントを見ていませんが、明らかにAzure SQLデータベースを作成するとパスワードなしでデータベースマスターキー(DMK)が作成され、SQL Server 2016ではこれは大丈夫ではありません。これが他の人の助けになることを願っています。
注:元のデータベースのデータがローカル開発コピーを更新することだけを望んでいたので、これを行うことができました-この影響を完全に調査していません。
同じ問題がありました。 Azureサポートに問い合わせたところ、監査用のストレージ資格情報を暗号化するために空のデータベースマスターキーが作成されたために問題が発生したことがわかりました(監査はオプションの設定です)。
データベース監査設定はサーバー設定から継承されることに注意してください。
とにかく、彼らが思いついた仕事は次のとおりでした:
DROP MASTER KEY
コマンドでデータベースマスターキーを削除します。その後、エクスポートは期待どおりに機能します。監査とエクスポートが連携して動作するように、Azureがこの問題をすぐに修正することを願っています。
2017年3月21日更新 MSからのより良い回避策
修正の展開には時間がかかるため、この問題を回避するために、追加の手順(監査の無効化やブログからの手順など)を必要としない代替ソリューションも提案しました。監査を有効にしたら、マスターキーを更新してパスワードを設定してください。既存のマスターキーにパスワードを設定すると、問題が軽減されます。また、パスワードの設定は監査に影響せず、機能し続けます。パスワードを追加する構文は次のとおりです。
-- execute in the user database
ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = ‘##############’;
リンクには、.bacpac
ファイルから問題のSQLステートメントを削除するために使用できるPowerShellスクリプトもあります。
マスターキーを削除して作成された破損したbacpacを修正します。
スクリプトRemoveMasterKeyを実行するためのSugestionは、複数の場所でmodel.xmlファイルにÂを挿入することにより、私の場合は破損したbacpacファイルも作成しました。
ファイルを抽出してbacpacを編集する方法があります。model.xmlファイルから問題のある文字を削除し、Origin.xmlファイルの新しいチェックサムを生成します。
拡張子.bacpacを使用してファイルを圧縮すると、backpacをインポートできます。
修正箇所: http://inworksllc.com/editing-sql-database-Azure-bacpac-files/
チェックサムジェネレーター: https://github.com/gertd/dac/tree/master/drop/debug
提供される手順:
1)変更されたmodel.xmlでZipファイルを更新します
2)Zipファイルの名前をbacpac拡張子に変更します
3)dacchksum.exe /i:database.bacpacを実行します(database.bacpacはbacpacファイルの名前です)
4)bacpacファイルのOrigin.xmlをdacchksum.exeによって提供される新しい値で更新します