2

Azure をデータベースから V12 プレビューに移行した後、SqlPackage.exe を使用して DB をエクスポートし、ローカル マシンにインポートすると、次のエラーが表示されます。

Error SQL72014: .Net SqlClient Data Provider: Msg 2760, Level 16, State 1, Line 1

The specified schema name "sys" either does not exist or you do not have permission to use it.


Error SQL72045: Script execution error.  The executed script:
CREATE TYPE [sys].[script_deployment_databases] AS TABLE (
    [logical_server] [sysname] NOT NULL,
    [database_name]  [sysname] NOT NULL,
    UNIQUE NONCLUSTERED ([database_name] ASC, [logical_server] ASC));

実際、Management Studio には、削除できないユーザー定義のテーブル タイプがあります。

の解き方?

このスクリプトを使用して、すべてのオプションでエクスポートしてみました。

4

2 に答える 2

1

他の人が最近この問題を抱えていました(リンク)

問題は、Microsoft による特定のデータベースの移行により、誤って「誤ったオブジェクト」が作成されたことでした。sys.script_deployment_databasesこれは、sys スキーマを使用するが、メタデータでマークされたテーブル型定義ですis_user_defined = 1。それが「ユーザー定義」であるという事実により、bacpacs にそれが含まれます。bacpac を sys の下に作成しようとするため、bacpac を復元しようとすると失敗します。

Microsoft は最近、DacFx および SSDT ツール (および Azure portal) を更新して、bacpac のエクスポート/インポート時にこの誤ったオブジェクトを明らかに無視するようにしました。

関連するメモ: 影響を受けるデータベースをアップグレードするために dacpacs を展開すると、同様の問題が発生します。展開の試行時に、すべての「ユーザー定義テーブル タイプ」を削除して再作成しようとし、script_deployment_databasessys の下にあるために失敗します。ただし、現在、dacpacs 用のツールはまだ修正されていません。

オブジェクトを削除する方法の 1 つscript_deployment_databasesは、 を使用してデータベースを直接コピーしCREATE DATABASE [X] AS COPY OF [Y]、名前を変更してコピーがオリジナルを置き換えることです。オブジェクトは明らかにコピーから除外されています。

于 2015-03-05T20:39:44.020 に答える
0

解決策は、Microsoft SQL Server Data-Tier Application Framework の更新プログラムをインストールすることです。ここで見つけることができます

Microsoft からのスレッドと応答は、次のリンクにあります。

Raul Garcia - MS からの応答は次のとおりです。

更新 (2015 年 3 月 2 日現在):

V12 にアップグレードされた Azure SQL データベース サーバーから bacpac をエクスポートおよびインポートするための修正がデプロイされました。Azure portal を介して正常にエクスポート/インポートできるはずです。また、この更新されたバージョンの DacFx をインストールして、SSMS、SSDT、SqlPackage.exe、または DacFx API を介してエクスポート/インポートすることができます。

http://www.microsoft.com/en-us/download/details.aspx?id=45886

(注: x64 マシンを使用している場合は、MSI の x64 バージョンと x86 バージョンの両方をインストールする必要があります。)

お待ちいただいてありがとうございます。-ラウル・ガルシア

于 2015-04-15T07:40:45.667 に答える