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


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

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

Меню "Импорт"

Меню

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

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

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

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

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

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

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

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

Пропущенное при импорте

Папка SSDT

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

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

Примечание

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

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

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

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

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

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

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

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

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