2016-11-13 20 views
25

私はこれを何十回も実行しましたが、最近このエラーが発生しました。ここで私はここで取得することによって行っている手順です。SSMS 2016エラーAzure SQL v12のインポートbacpac:パスワードのないマスターキーはサポートされていません

  1. と同じサーバー上で私AzureのSQLのV12データベースのコピーを作成します
  2. エクスポートコピー版(ユーザとの対話から、完全に不活性)へブロブストレージ
  3. は私のローカルドライブ
  4. SSMSで
  5. (2016年10月リリース)私のローカルSQL Serverインスタンスへのブロブストレージから.bacpacファイルをダウンロードし、右のデータベースをクリックして、「インポートデータ層アプリケーション」
  6. 最近、私の選択を選択してくださいbacpacファイルをダウンロードし、インポートを開始します

それが出爆撃するのはほんの数秒かかり、私はエラーを取得する:

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)も実行しています。私はこの問題を解決することになった

答えて

14

オーケーな方法は、次の操作を実行することでした。

  1. 以下を実行しているデータベースでは、元
  2. と同じサーバー上のSQL Azureのデータベースのコピーを作成します。スクリプト:

    ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = [password here]; 
    
  3. フォローはオリジナルのポストで2-5
ステップ10

私はこれに関する文書は見ていませんが、明らかにAzure SQLデータベースを作成すると、パスワードなしでデータベースマスターキー(DMK)が作成され、SQL Server 2016ではこれは問題ありません。うまくいけば、これは誰かを助けてくれるでしょう。

注:私は元のデータベースのデータが自分のローカル開発コピーをリフレッシュすることを望んでいたので、これを行うことができました - 私はこれの意味を完全には調べていません。

+0

明確にするために、ステップ1では、Azure SQLサーバー*またはローカルのオン・プレミアSQLサーバーにAzure SQLデータベース*のコピーを作成する必要がありますか? – Dai

+0

コピーはAzure SQL Serverで行う必要があります。そのコピーがブロブストレージにエクスポートされるとすぐに、コピーDBを削除することができます...オリジナルではなくコピーDBを削除してください! –

+0

PASSWORD = 'password'でマスターキーの暗号化を作成 –

32

私は同じ問題を抱えていました。 Azureのサポート担当者は、監査用のストレージ資格情報を暗号化するために空のデータベースマスターキーが作成されるため(監査はオプション設定)、問題が発生していることを確認しました。

データベース監査設定は、サーバー設定から継承されていることに注意してください。

とにかく、彼らの周りの仕事だった思い付いた:サーバー(またはデータベース)に

  1. 無効に監査を
  2. DROP MASTER KEYコマンドを使用して、データベースのマスターキーを削除します。

次に、エクスポートは正常に動作します。 Azureはすぐにこの問題を修正し、監査とエクスポートを連携させることを願っています。

アップデート2017年3月21日Better work-around From MS

As the fix will take some time to be deployed, they also suggested an alternative solution, which will not require any additional steps (like disabling auditing or the steps form the blog) on your side to avoid this issue. After auditing is enabled, please update the master key and set the password. Setting a password for the existing master key will mitigate the issue. Also, setting the password will not impact auditing and it will keep working. The syntax to add the password is as follows:

-- execute in the user database 
ALTER MASTER KEY ADD ENCRYPTION BY PASSWORD = ‘##############’; 

リンクはまた、あなたが.bacpacファイルから問題のあるSQL文を削除するために使用することができますPowerShellスクリプトを持っています。

+0

これをヒットしました。マスターキーを削除することで他にどのような影響が及ぼされるのか、さらに詳しい情報がありますか? – ChadT

+1

@ChadTはい私はいくつかの情報を得ました。私は上記の答えを更新しました。 –

+5

MSのブログ記事(詳細はhttps://blogs.msdn.microsoft.com/azuresqlemea/2017/03/30/exported-database-from-azure-sql-failed-to-be-imported-to-azure-sql) -or-to-local-sql-server/ – GraemeMiller

6

あなたが行う必要があります。それを実行し、マイクロソフトblogに公開this scriptがありBACPAC

から資格情報オブジェクトを削除BACPAC

  • からマスターキーオブジェクトを削除

    • 、および上記のすべてを行います。

      C:\PS> .\RemoveMasterKey.ps1 -bacpacPath "C:\BacPacs\Test.bacpac 
      
  • +2

    これは試してみるとうまくいかず、破損した.bacpacが無駄になってしまいました。私はそれが他の人のために働くと聞いて以来、なぜ私はなぜ分かりません。 –

    +0

    スクリプトは新しいパッチファイルを生成し、元のファイルは変更しません。この例のように、bacpacパスは完全パスである必要があり、 'Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass'というスクリプトをブロックするセキュリティ設定を無効にするには、PowerShell内から以下のコマンドを実行する必要があるかもしれません。 – Savage

    -1
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'; 
    
    +0

    これを実行する場所を指定する必要があります – Savage

    0

    マスターキーを削除することによって作成された壊れたBACPACを修正。

    スクリプトRemoveMasterKeyを実行するSugestionは、私のケースでは、複数の場所でmodel.xmlファイルにÂを挿入することで壊れたbacpacファイルを作成しました。

    は、ファイルをextractig model.xmlファイルに問題のある文字を削除し、ファイルがバックアップ

    が一度お越しに行わOrigin.xmlファイルの新しいチェックサムを生成することにより、BACPACを編集する方法があります拡張子.bacpacを指定すると、バックパックをインポートできます。で見出さ

    フィックス: http://inworksllc.com/editing-sql-database-azure-bacpac-files/

    チェックサム生成器:設け https://github.com/gertd/dac/tree/master/drop/debug

    ステップ:

    1)変性model.xml

    2のZIPファイルを更新)リネームbacpac拡張子を持つzipファイル

    3)dacchksum.exe

    によって提供される新しい値でBACPACファイルにdacchksum.exe /i:database.bacpac(database.bacpacはBACPACファイル名である)

    4)更新Origin.xmlを実行

    関連する問題