SqlPackage.exe база данных экспорта / импорта

После миграции Azure в базу данных для предварительного просмотра V12 с помощью SqlPackage.exe для экспорта и импорта БД на локальную машину я получаю сообщение об ошибке:

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 есть тип пользовательской таблицы, который нельзя удалить.

Как решить?

Я попытался экспортировать со всеми параметрами, используя этот скрипт.

2 ответа

У других людей эта проблема возникла недавно (ссылка).

Проблема заключалась в том, что миграция Microsoft некоторых баз данных случайно создала "ошибочный объект" sys.script_deployment_databases: определение типа таблицы, которое использует схему sys, но помечено метаданными is_user_defined = 1, Тот факт, что он "определен пользователем", заставляет bacpacs содержать его. Попытки восстановить bacpac не удаются, потому что он пытается создать его под sys.

Microsoft недавно обновила свои инструменты DacFx и SSDT (а также портал Azure), чтобы, очевидно, игнорировать этот ошибочный объект при экспорте / импорте bacpac.

На заметку по теме: Развертывание dacpac для обновления такой поврежденной базы данных имеет аналогичную проблему, когда при попытке развертывания он пытается отбросить и заново создать все "определяемые пользователем типы таблиц" и завершается неудачно, потому что script_deployment_databases находится под системой. Тем не менее, в настоящее время инструмент не был исправлен для dacpacs.

Одна техника, чтобы удалить script_deployment_databases Объект должен скопировать базу данных напрямую, используя CREATE DATABASE [X] AS COPY OF [Y], затем переименуйте их так, чтобы копия заменяла оригинал. Объект, по-видимому, опущен из копий.

Решением является установка обновления для платформы приложений уровня данных Microsoft SQL Server. Это можно найти здесь

Нить и ответ от Microsoft можно найти по следующей ссылке

Вот ответ Рауля Гарсии - MS:

Обновление (по состоянию на 2015-март-2):

Внедрены исправления для экспорта и импорта bacpac с сервера базы данных SQL Azure, обновленной до версии V12. Вы сможете успешно экспортировать / импортировать через портал Azure, и вы можете установить эту обновленную версию DacFx для экспорта / импорта через SSMS, SSDT, SqlPackage.exe или DacFx API.

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

(Примечание. Необходимо установить ОБА версии MSI для x64 и x86, если вы работаете на компьютере с архитектурой x64.)

Спасибо за терпеливость. Рауль Гарсия

Другие вопросы по тегам