Поделиться через


Импорт в проект базы данных

 

Функцию импорта можно использовать для заполнения проекта новыми объектами из активной базы данных или файла DACPAC либо для обновления имеющихся объектов в проекте новым определением из скрипта.Следует отметить некоторые приведенные ниже различия в поведении между этими тремя действиями.

Меню импорта

Меню импорта SSDT

Подразделы этого раздела

Источник импорта: база данных или приложение уровня данных (*.dacpac)

Источник импорта: скрипт (*.sql)

Импорт зашифрованных объектов

Источник импорта: база данных или приложение уровня данных (*.dacpac)

Возможность импорта схемы из базы данных или файла DACPAC доступна только в том случае, если в проекте еще не определены никакие объекты схемы.Это не относится к журналам рефакторинга или скриптам, выполняемым до и после развертывания.

При импорте определения объектов записываются в файлы проекта с использованием параметров организации по умолчанию SSDT для новых объектов: новых файлов объектов верхнего уровня, иерархических потомков, определенных в том же файле в качестве родительского элемента, ограничений таблицы или столбца, определенных встроенным образом, где это возможно.Чтобы обеспечить более целенаправленную видимость и управление для каждого объекта, воспользуйтесь не импортом, а функцией «Сравнение схемы».

Если источник импорта содержит скрипты, выполняемые до и после развертывания, журналы рефакторинга или определения переменных SQLCMD, то они будут импортированы в проект.Если проект уже содержит любой из этих объектов, то импортированные файлы будут добавлены в папку проекта Пропущенное при импорте.

Папка «Пропущенное при импорте»

Папка SSDT «Пропущенное при импорте»

Источник импорта: скрипт (*.sql)

Все объекты из источника импорта, которые на данный момент отсутствуют в проекте, будут добавлены, а все объекты в источнике импорта, которые уже есть в проекте, перезапишут соответствующие определения в проекте.

System_CAPS_noteПримечание

Известны две ошибки данного метода, которые будут исправлены в следующем выпуске:

  • Если ограничения таблицы или столбца определены за пределами инструкции CREATE TABLE в определении таблицы проекта, то при импорте определение таблицы будет перезаписано, так что ограничение будет встроенным.Однако внешнее ограничение останется, в результате чего в проекте будут повторяющиеся ограничения.

  • Главные ключи или ключи шифрования базы данных из скрипта-источника, уже имеющиеся в проекте, будут дублированы при импорте.Для сборки проекта удалите повторяющиеся элементы.

Процесс «Импорт из скрипта» не обрабатывает сценарии, выполняемые до или после развертывания, переменные SQLCMD и файлы журналов рефакторинга.Эти и другие неподдерживаемые конструкции, обнаруженные во время импорта, будут помещены в файл ScriptsIgnoredOnImport.sql в папке Скрипты проекта.

Дополнительные сведения см. на форуме разработчиков служб SSDT по адресу https://social.msdn.microsoft.com/Forums/en-US/ssdt/threads.

Импорт зашифрованных объектов

При импорте зашифрованных объектов в проект базы данных полный текст определения объекта не всегда может быть получен с сервера.Таким образом, поведение при импорте может быть различным при работе с данным классом объектов.

Если полный текст определения получить не удается, то в скрипт помещается верхний и нижний колонтитул объекта с фиктивным текстом.Такое поведение может возникнуть при импорте или сравнении схемы, когда источником является активная база данных или файл DACPAC, извлеченный из базы данных.

Скрипт с фиктивным текстом

Скрипт с фиктивным текстом

Если доступно и может быть получено полное определение объекта, операция импорта или сравнения схемы поместит его в проект полностью.Это происходит при обновлении проекта из скрипта, файла DACPAC, построенного на основе проекта базы данных, или другого проекта базы данных.