Sdílet prostřednictvím


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, .bacpacvč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
  • 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
  • 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

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>

Další kroky