Использование проектов SQL в стиле пакета SDK с расширением "Проекты Баз данных SQL" (предварительная версия)
В этой статье приведены проекты SQL в стиле ПАКЕТА SDK microsoft.Build.Sql в расширении проектов База данных SQL в Azure Data Studio или Visual Studio Code. Проекты SQL в стиле пакета SDK особенно подходят для приложений, поставляемых через конвейеры или встроенные в кроссплатформенные среды. Первоначальное объявление доступно в TechCommunity.
Примечание.
Microsoft.Build.Sql в настоящее время находится в предварительной версии.
Создание проекта базы данных в стиле пакета SDK
Проект базы данных в стиле пакета SDK можно создать из пустого проекта или из существующей базы данных.
Пустой проект
В представлении "Проекты базы данных" нажмите кнопку "Создать проект " и введите имя проекта в появившемся текстовом вводе. В появившемся диалоговом окне Выбор папки выберите каталог для папки проекта, файл .sqlproj
и другое необходимое содержимое.
По умолчанию флажок Проект в стиле пакета SDK (предварительная версия) установлен. После завершения диалогового окна пустой проект открывается и отображается в представлении проектов баз данных для редактирования.
из существующей базы данных;
В представлении проекта нажмите кнопку "Создать проект из базы данных " и подключитесь к SQL Server. После установки соединения выберите базу данных из списка доступных баз данных и задайте имя проекта. Выберите целевую структуру извлечения.
По умолчанию флажок Проект в стиле пакета SDK (предварительная версия) установлен. После закрытия диалогового окна откроется новый проект, содержащий скрипты SQL для содержимого выбранной базы данных.
Сборка и публикация
Из интерфейсов Azure Data Studio и Visual Studio Code создание и публикация проекта SQL в стиле ПАКЕТА SDK выполняется так же, как и предыдущий формат проекта SQL. Дополнительные сведения об этом процессе см. в разделе Сборка и публикация проекта.
Чтобы создать проект SQL в стиле пакета SDK из командной строки в Windows, macOS или Linux, используйте следующую команду:
dotnet build
Файл.dacpac
, полученный в результате создания проекта SQL в стиле ПАКЕТА SDK, совместим с инструментами, связанными с платформой приложений уровня данных (.dacpac
, включая .bacpac
SqlPackage и GitHub sql-action).
Возможности проекта
В проектах SQL существует несколько возможностей, которые можно указать в .sqlproj
файле, который влияет на модель базы данных в сборке или развертывании проекта. В следующих разделах описаны некоторые из этих возможностей, доступных для проектов Microsoft.Build.Sql.
Целевая платформа
Свойство целевой платформы содержится в DSP
теге .sqlproj
в файле под элементом <PropertyGroup>
. Целевая платформа используется во время сборки проекта для проверки поддержки функций, включенных в проект, и добавляется в .dacpac
файл в качестве свойства. По умолчанию во время развертывания целевая платформа проверяется на целевую базу данных, чтобы обеспечить совместимость. Если целевая платформа не поддерживается целевой базой данных, развертывание завершается ошибкой, если не указан параметр переопределения публикации.
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.1.12-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
</PropertyGroup>
Допустимые параметры целевой платформы:
Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlDwDatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlServerlessDatabaseSchemaProvider
Microsoft.Data.Tools.Schema.Sql.SqlDwUnifiedDatabaseSchemaProvider
Ссылки на базу данных
Проверка модели базы данных во время сборки может быть расширена после содержимого проекта SQL с помощью ссылок на базы данных. Ссылки на базы данных, указанные в .sqlproj
файле, могут ссылаться на другой проект SQL или .dacpac
файл, представляющий другую базу данных или несколько компонентов той же базы данных.
Следующие атрибуты доступны для ссылок на базы данных, представляющих другую базу данных:
- DatabaseSqlCmdVariable: значение — это имя переменной, используемой для ссылки на базу данных.
- Эталонный параметр:
<DatabaseSqlCmdVariable>SomeOtherDatabase</DatabaseSqlCmdVariable>
- Пример использования:
SELECT * FROM [$(SomeOtherDatabase)].dbo.Table1
- Эталонный параметр:
- ServerSqlCmdVariable: значение — это имя переменной, которая используется для ссылки на сервер, на который находится база данных. используется с DatabaseSqlCmdVariable, если база данных находится на другом сервере.
- Эталонный параметр:
<ServerSqlCmdVariable>SomeOtherServer</ServerSqlCmdVariable>
- Пример использования:
SELECT * FROM [$(SomeOtherServer)].[$(SomeOtherDatabase)].dbo.Table1
- Эталонный параметр:
- DatabaseVariableLiteralValue: значение является литеральным именем базы данных, используемой в проекте SQL, аналогично
DatabaseSqlCmdVariable
тому, что ссылка на другую базу данных является литеральным значением.- Эталонный параметр:
<DatabaseVariableLiteralValue>SomeOtherDatabase</DatabaseVariableLiteralValue>
- Пример использования:
SELECT * FROM [SomeOtherDatabase].dbo.Table1
- Эталонный параметр:
В файле проекта SQL ссылка на базу данных указывается как ArtifactReference
элемент с атрибутом, Include
заданным для пути к файлу .dacpac
.
<ItemGroup>
<ArtifactReference Include="SampleA.dacpac">
<DatabaseSqlCmdVariable>DatabaseA</DatabaseSqlCmdVariable>
</ArtifactReference>
</ItemGroup>
</Project>
Ссылки на пакеты
Ссылки на пакеты NuGet используются для ссылки на пакеты NuGet, содержащие .dacpac
файл, и используются для расширения модели базы данных во время сборки аналогично ссылке на базу данных.
В следующем примере из файла проекта SQL ссылается Microsoft.SqlServer.Dacpacs
на пакет для master
базы данных.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0" />
</ItemGroup>
</Project>
Помимо атрибутов, доступных для ссылок на базы данных, можно указать следующий DacpacName
атрибут, чтобы выбрать .dacpac
из пакета, содержащего несколько .dacpac
файлов.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0">
<DacpacName>msdb</DacpacName>
</PackageReference>
</ItemGroup>
</Project>
Переменные SqlCmd
Переменные SqlCmd можно определить в .sqlproj
файле и использовать для замены маркеров в объектах и скриптах SQL во время .dacpac
развертывания. В следующем примере из файла проекта SQL определяется переменная с именем EnvironmentName
, доступная для использования в объектах и скриптах проекта.
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>testing</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
IF '$(EnvironmentName)' = 'testing'
BEGIN
-- do something
END
При развертывании скомпилированного проекта SQL (.dacpac
) значение переменной заменяется значением, указанным в команде развертывания. Например, следующая команда развертывает AdventureWorks.dacpac
и задает значение переменной EnvironmentName
production
.
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production
Скрипты предварительного и после развертывания
Скрипты перед развертыванием и после развертывания — это скрипты SQL, включенные в проект, которые будут выполняться во время развертывания. Скрипты предварительного и после развертывания включаются в .dacpac
состав, но они не компилируются в объектную модель базы данных или не проверяются. Скрипт предварительного развертывания выполняется перед применением модели базы данных и скрипт после применения модели базы данных выполняется после применения модели базы данных. В следующем примере из файла проекта SQL файл добавляется populate-app-settings.sql
в качестве скрипта после развертывания.
<ItemGroup>
<PostDeploy Include="populate-app-settings.sql" />
</ItemGroup>
</Project>