Создание проекта базы данных из командной строки

Хотя расширение База данных SQL Project предоставляет графический пользовательский интерфейс для создания проекта базы данных, интерфейс сборки командной строки также доступен для сред Windows, macOS и Linux. Процессы создания проекта из командной строки различаются для проектов SQL в стиле пакета SDK и предыдущего формата проекта SQL, не в стиле пакета SDK. В этой статье описаны предварительные требования и синтаксис, необходимые для создания dacpac из проекта SQL в командной строке для обоих типов проектов SQL.

Проекты SQL в стиле ПАКЕТА SDK (предварительная версия)

Использование Microsoft.Build.Sql с проектами SQL в стиле пакета SDK — это предпочтительный метод для работы с проектами SQL из командной строки.

Чтобы создать проект SQL в стиле пакета SDK из командной строки в Windows, macOS или Linux, используйте следующую команду:

dotnet build /p:NetCoreBuild=true

Примечание.

Проекты SQL в стиле пакета SDK в настоящее время находятся в предварительной версии.

Проекты SQL не в стиле пакета SDK

В следующем разделе описано, как работать с проектами SQL, не относящихся к пакету SDK, из командной строки в Windows, macOS и Linux.

Необходимые компоненты

  1. Установите и настройте расширение "Проекты Баз данных SQL".

  2. Для построения проекта базы данных SQL из командной строки на всех платформах, которые поддерживаются расширением Azure Data Studio, для проектов базы данных SQL необходимы следующие DLL-библиотеки .NET Core и целевой файл Microsoft.Data.Tools.Schema.SqlTasks.targets. Эти файлы создаются расширением во время первой сборки, выполненной в интерфейсе Azure Data Studio и помещенной в папку расширения в разделе BuildDirectory. Например, на Linux эти файлы помещаются в ~\.azuredatastudio\extensions\microsoft.sql-database-projects-x.x.x\BuildDirectory\. Скопируйте эти 11 файлов в новую и доступную папку или запишите их расположение. Это расположение будет обозначаться в документе как DotNet Core build folder.

    • Microsoft.Data.SqlClient.dll
    • Microsoft.Data.Tools.Schema.Sql.dll
    • Microsoft.Data.Tools.Schema.SqlTasks.targets
    • Microsoft.Data.Tools.Schema.Tasks.Sql.dll
    • Microsoft.Data.Tools.Utilities.dll
    • Microsoft.SqlServer.Dac.dll
    • Microsoft.SqlServer.Dac.Extensions.dll
    • Microsoft.SqlServer.TransactSql.ScriptDom.dll
    • Microsoft.SqlServer.Types.dll
    • System.ComponentModel.Composition.dll
    • System.IO.Packaging.dll
  3. Если проект создан в Azure Data Studio, перейдите к разделу Сборка проекта из командной строки. Если проект создан в SQL Server Data Tools (SSDT), откройте его в расширении проекта Базы данных SQL для Azure Data Studio. При открытии проекта в Azure Data Studio файл sqlproj автоматически обновляется с тремя правками, приведенными ниже для сведений.

    1. Условия импорта
    <Import Condition="'$(NetCoreBuild)' == 'true'" Project="$(NETCoreTargetsPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets"/> 
    <Import Condition="'$(NetCoreBuild)' != 'true' AND '$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
    <Import Condition="'$(NetCoreBuild)' != 'true' AND '$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
    
    1. Справочник по пакетам
    <ItemGroup>
        <PackageReference Condition="'$(NetCoreBuild)' == 'true'" Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0" PrivateAssets="All"/>
    </ItemGroup>
    
    1. Очистите целевой объект, необходимый для поддержки двойного редактирования в SQL Server Data Tools (SSDT) и Azure Data Studio
    <Target Name="AfterClean">
        <Delete Files="$(BaseIntermediateOutputPath)\project.assets.json"/>
    </Target>
    

Сборка проекта из командной строки

В полной версии папки .NET используйте следующую команду:

dotnet build "<sqlproj file path>" /p:NetCoreBuild=true /p:NETCoreTargetsPath="<DotNet Core build folder>"

Например, из /usr/share/dotnet в Linux

dotnet build "/home/myuser/Documents/DatabaseProject1/DatabaseProject1.sqlproj" /p:NetCoreBuild=true /p:NETCoreTargetsPath="/home/myuser/.azuredatastudio/extensions/microsoft.sql-database-projects-x.x.x/BuildDirectory"  

Следующие шаги