Použití projektů SQL ve stylu sady SDK s rozšířením SQL Database Projects (Preview)
Tento článek představuje projekty SQL ve stylu sady SDK microsoft.Build.Sql v rozšíření SQL Database Projects v nástroji Azure Data Studio nebo Visual Studio Code. Projekty SQL ve stylu sady SDK jsou zvláště výhodné pro aplikace dodávané prostřednictvím kanálů nebo integrovaných napříč platformami prostředí. Počáteční oznámení je k dispozici v TechCommunity.
Poznámka:
Microsoft.Build.Sql je aktuálně ve verzi Preview.
Vytvoření databázového projektu ve stylu sady SDK
Databázový projekt ve stylu sady SDK můžete vytvořit z prázdného projektu nebo z existující databáze.
Prázdný projekt
V zobrazení Databázové projekty vyberte tlačítko Nový projekt a zadejte název projektu do textového vstupu, který se zobrazí. V dialogovém okně Vybrat složku , které se zobrazí, zvolte adresář pro složku, .sqlproj
soubor a další obsah projektu, který se má nacházet.
Ve výchozím nastavení je zaškrtnuté políčko pro projekt ve stylu sady SDK (Preview). Po dokončení dialogového okna se prázdný projekt otevře a zobrazí v zobrazení Databázové projekty pro úpravy.
Ze stávající databáze
V zobrazení Projektu vyberte tlačítko Vytvořit projekt z databáze a připojte se k SQL Serveru. Po navázání připojení vyberte ze seznamu dostupných databází databázi a nastavte název projektu. Vyberte cílovou strukturu extrakce.
Ve výchozím nastavení je zaškrtnuté políčko pro projekt ve stylu sady SDK (Preview). Po dokončení dialogového okna se otevře nový projekt a obsahuje skripty SQL pro obsah vybrané databáze.
Sestavení a publikování
Z rozhraní Azure Data Studio a editoru Visual Studio Code se sestavení a publikování projektu SQL ve stylu sady SDK dokončí stejným způsobem jako předchozí formát projektu SQL. Další informace o tomto procesu najdete v tématu Sestavení a publikování projektu.
Pokud chcete vytvořit projekt SQL ve stylu sady SDK z příkazového řádku ve Windows, macOS nebo Linuxu, použijte následující příkaz:
dotnet build
Soubor.dacpac
, který je výsledkem sestavení projektu SQL ve stylu sady SDK, je kompatibilní s nástroji přidruženými k aplikační architektuře datové vrstvy (.dacpac
, .bacpac
včetně SqlPackage a akce SQL GitHubu).
Možnosti projektu
V projektech SQL existuje několik možností, které lze zadat v .sqlproj
souboru, které mají vliv na model databáze buď při sestavení projektu nebo nasazení. Následující části popisují některé z těchto funkcí, které jsou k dispozici pro projekty Microsoft.Build.Sql.
Cílová platforma
Vlastnost cílové platformy je obsažena ve DSP
značce v .sqlproj
souboru pod položkou <PropertyGroup>
. Cílová platforma se používá během sestavování projektu k ověření podpory funkcí zahrnutých v projektu a je přidána do .dacpac
souboru jako vlastnost. Ve výchozím nastavení se cílová platforma kontroluje u cílové databáze, aby se zajistila kompatibilita. Pokud cílová databáze nepodporuje cílovou platformu, nasazení selže, pokud není zadána možnost přepsání publikování.
<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>
Platná nastavení pro cílovou platformu jsou:
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
Odkazy na databáze
Ověření modelu databáze v době sestavení lze rozšířit o obsah projektu SQL prostřednictvím odkazů na databáze. Odkazy na databáze zadané v .sqlproj
souboru mohou odkazovat na jiný projekt SQL nebo .dacpac
soubor představující jinou databázi nebo více součástí stejné databáze.
Pro odkazy na databáze, které představují jinou databázi, jsou k dispozici následující atributy:
- DatabaseSqlCmdVariable: Hodnota je název proměnné, která se používá k odkazování na databázi.
- Nastavení odkazu:
<DatabaseSqlCmdVariable>SomeOtherDatabase</DatabaseSqlCmdVariable>
- Příklad použití:
SELECT * FROM [$(SomeOtherDatabase)].dbo.Table1
- Nastavení odkazu:
- ServerSqlCmdVariable: Hodnota je název proměnné, která se používá k odkazování na server, kde se databáze nachází. používá se s DatabaseSqlCmdVariable, pokud je databáze na jiném serveru.
- Nastavení odkazu:
<ServerSqlCmdVariable>SomeOtherServer</ServerSqlCmdVariable>
- Příklad použití:
SELECT * FROM [$(SomeOtherServer)].[$(SomeOtherDatabase)].dbo.Table1
- Nastavení odkazu:
- DatabaseVariableLiteralValue: hodnota je název literálu databáze, jak se používá v projektu SQL, podobně jako
DatabaseSqlCmdVariable
odkaz na jinou databázi je hodnota literálu.- Nastavení odkazu:
<DatabaseVariableLiteralValue>SomeOtherDatabase</DatabaseVariableLiteralValue>
- Příklad použití:
SELECT * FROM [SomeOtherDatabase].dbo.Table1
- Nastavení odkazu:
V souboru projektu SQL je odkaz na databázi určen jako ArtifactReference
položka s atributem Include
nastaveným na cestu k .dacpac
souboru.
<ItemGroup>
<ArtifactReference Include="SampleA.dacpac">
<DatabaseSqlCmdVariable>DatabaseA</DatabaseSqlCmdVariable>
</ArtifactReference>
</ItemGroup>
</Project>
Odkazy na balíčky
Odkazy na balíčky se používají k odkazování na balíčky NuGet, které obsahují .dacpac
soubor, a slouží k rozšíření modelu databáze v době sestavení podobně jako odkaz na databázi.
Následující příklad ze souboru projektu SQL odkazuje na Microsoft.SqlServer.Dacpacs
balíček pro master
databázi.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0" />
</ItemGroup>
</Project>
Kromě atributů dostupných pro odkazy na databáze je možné zadat následující DacpacName
atribut, který vybere .dacpac
z balíčku, který obsahuje více .dacpac
souborů.
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0">
<DacpacName>msdb</DacpacName>
</PackageReference>
</ItemGroup>
</Project>
Proměnné SqlCmd
Proměnné SqlCmd lze definovat v .sqlproj
souboru a slouží k nahrazení tokenů v objektech a skriptech SQL během .dacpac
nasazování. Následující příklad ze souboru projektu SQL definuje proměnnou s názvem EnvironmentName
, která je k dispozici pro použití v objektech a skriptech projektu.
<ItemGroup>
<SqlCmdVariable Include="EnvironmentName">
<DefaultValue>testing</DefaultValue>
<Value>$(SqlCmdVar__1)</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
IF '$(EnvironmentName)' = 'testing'
BEGIN
-- do something
END
Při nasazení zkompilovaného projektu SQL (.dacpac
) se hodnota proměnné nahradí hodnotou zadanou v příkazu nasazení. Například následující příkaz nasadí AdventureWorks.dacpac
a nastaví hodnotu EnvironmentName
proměnné na production
.
SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production
Skripty před nasazením/po nasazení
Skripty před nasazením jsou skripty SQL, které jsou součástí projektu, které se mají spustit během nasazení. Skripty před nasazením jsou součástí .dacpac
skriptů před nasazením, ale nejsou zkompilovány nebo ověřeny pomocí modelu databázového objektu. Před nasazením se spustí skript před nasazením databázového modelu a po použití databázového modelu se spustí skript po nasazení. Následující příklad ze souboru projektu SQL přidá soubor populate-app-settings.sql
jako skript po nasazení.
<ItemGroup>
<PostDeploy Include="populate-app-settings.sql" />
</ItemGroup>
</Project>