Добавление существующих файлов в проект SQL
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
В качестве концепции после создания проекта SQL объекты можно добавлять в него одновременно или в массовом режиме. Добавление объектов в один раз просто, при этом можно выполнить массовое добавление объектов из содержимого .dacpac
файла или одного или нескольких скриптов SQL. В этой статье объясняется, как добавить содержимое скриптов dacpac или SQL в проект SQL и компромиссы между источниками.
Импорт из .dacpac
файла
.dacpac
Файл является скомпилированной моделью базы данных и требует определенного средства для чтения и применения файла. .dacpac
Файл можно создать в виде артефакта сборки проекта SQL или из существующей базы данных, и вы можете предоставить один из них без доступа к источнику. Помимо множества инструментов, которые могут применяться .dacpac
к базе данных, SQL Server Data Tools (SSDT) в Visual Studio может импортировать содержимое .dacpac
файла непосредственно в проект. Возможность импорта схемы из базы данных или файла DACPAC доступна только в том случае, если в проекте еще не определены никакие объекты схемы.
При импорте определения объектов скриптируются в файлы проекта с использованием организационных значений SSDT по умолчанию для новых объектов: новые файлы для объектов верхнего уровня, иерархические дочерние элементы, определенные в том же файле, что и родительский, табличный или столбец ограничения, определенные в соответствии с возможными параметрами. Чтобы обеспечить более целенаправленную видимость и управление для каждого объекта, воспользуйтесь не импортом, а функцией «Сравнение схемы». Если источник импорта содержит определения переменных Pre- и Post-Deployment, RefactorLogs или SQLCMD, они импортируются в проект. Если проект уже содержит один из этих артефактов, импортированные файлы добавляются в папку "Импорт" в проекте.
Если Visual Studio и SQL Server Data Tools недоступны, можно либо:
- Используйте расширение "Сравнение схем" в Azure Data Studio, чтобы сравнить содержимое
.dacpac
файла с проектом, а затем выборочно применить изменения к проекту. - Используйте служебную программу командной строки SqlPackage , чтобы импортировать содержимое
.dacpac
файла в базу данных, а затем создать проект из базы данных.
Импорт из скриптов SQL
Скрипты T-SQL можно импортировать в проект SQL двумя способами: добавив файлы скриптов в каталог проекта или обрабатывая содержимое скриптов в Visual Studio. Выбор метода зависит от типа проекта и требуемого уровня управления процессом импорта. В обоих случаях синтаксис файлов скрипта должен быть допустимым.
Добавление файлов в проект
С помощью проектов SQL в стиле ПАКЕТА SDK можно добавить существующие скрипты SQL в проект, поместив их в каталог проекта, так как Microsoft.Build.Sql автоматически включает все *.sql
файлы в проект. Если вы используете проект, отличный от пакета SDK, необходимо импортировать существующие скрипты SQL в проект, используя обработку скриптов в Visual Studio. Файлы *.sql
, автоматически включенные в проект, включаются в сборку модели базы данных как объекты SQL.
Файл, добавленный в папку проекта, содержащую повторяющееся определение объекта в объект, который уже присутствует в проекте, приводит к сбою сборки проекта. Необходимо вручную устранить конфликт, удалив повторяющийся объект или переименовав один из объектов.
Чтобы добавить файл в проект в качестве скрипта предварительного или после развертывания, помимо добавления файла в каталог проекта, необходимо также включить файл в файл проекта. Например, чтобы добавить файл с именем Pre-DeploymentScript.sql
скрипта предварительного развертывания, добавьте в файл проекта следующее:
<ItemGroup>
<PreDeploy Include="Pre-DeploymentScript.sql" />
</ItemGroup>
Дополнительные сведения о сценариях предварительного и последующего развертывания см. в документации по проектам SQL.
Обработка содержимого файлов
Sql Server Data Tools (SSDT) в Visual Studio также имеет возможность обрабатывать содержимое скриптов SQL при добавлении их в исходный проект стиля. Во время этой обработки, если скрипт содержит объект, уже определенный в проекте, определение объекта обновляется, чтобы соответствовать скрипту. Если скрипт содержит объект, который еще не определен в проекте, для объекта создается новый файл.
Существуют известные проблемы, из-за которых обработка скрипта может привести к повторяющимся ограничениям и операторам ключа шифрования. Если вы столкнулись с этими проблемами, используйте окно вывода сборки, чтобы определить источник дубликатов и вручную удалить их из проекта.
Процесс импорта из скрипта не включает скрипты предварительного и после развертывания, переменные SQLCMD или файлы RefactorLog. Эти и другие неподдерживаемые конструкции, обнаруженные при импорте, помещаются в файл ScriptsIgnoredOnImport.sql в папку Scripts в проекте.