Megosztás a következőn keresztül:


SDK-stílusú SQL-projektek használata az SQL Database Projects bővítményével (előzetes verzió)

Ez a cikk a Microsoft.Build.Sql for SDK típusú SQL-projekteket mutatja be az Azure Data Studio vagy a Visual Studio Code SQL Database Projects bővítményében. Az SDK-stílusú SQL-projektek különösen előnyösek a folyamatokon keresztül vagy platformfüggetlen környezetekbe épített alkalmazások esetében. A kezdeti bejelentés elérhető a TechCommunity-ben.

Feljegyzés

A Microsoft.Build.Sql jelenleg előzetes verzióban érhető el.

SDK-stílusú adatbázisprojekt létrehozása

SDK-stílusú adatbázisprojektet üres projektből vagy meglévő adatbázisból is létrehozhat.

Üres projekt

Az Adatbázisprojektek nézetben válassza az Új projekt gombot, és adja meg a projekt nevét a megjelenő szövegbevitelben. A megjelenő Mappa kiválasztása párbeszédpanelen válassza ki a projekt mappájának, .sqlproj fájljának és egyéb tartalmának könyvtárát.

Alapértelmezés szerint az SDK-stílusú projekt (előzetes verzió) kijelölése be van jelölve. Amikor a párbeszédpanel elkészült, az üres projekt megnyílik és látható lesz az Adatbázisprojektek nézetben szerkesztésre.

Egy meglévő adatbázisból

A Project nézetben válassza a Projekt létrehozása adatbázisból gombot, és csatlakozzon egy SQL Serverhez. A kapcsolat létrejötte után válasszon ki egy adatbázist az elérhető adatbázisok listájából, és adja meg a projekt nevét. Válassza ki a kinyerés célstruktúráját.

Alapértelmezés szerint az SDK-stílusú projekt (előzetes verzió) kijelölése be van jelölve. A párbeszédpanel befejezése után megnyílik az új projekt, és SQL-szkripteket tartalmaz a kijelölt adatbázis tartalmához.

Létrehozás és közzététel

Az Azure Data Studio és a Visual Studio Code felületéről az SDK-stílusú SQL-projekt létrehozása és közzététele ugyanúgy történik, mint az előző SQL-projektformátumban. A folyamatról további információt a Projekt létrehozása és közzététele című témakörben talál.

Ha SDK-stílusú SQL-projektet szeretne létrehozni a parancssorból Windows, macOS vagy Linux rendszeren, használja a következő parancsot:

dotnet build

Az .dacpac SDK-stílusú SQL-projekt készítéséből származó fájl kompatibilis az adatrétegű alkalmazás-keretrendszerhez (.dacpac, .bacpacbeleértve az SqlPackage-t és a GitHub sql-actiont) társított eszközökkel.

Projektképességek

SQL-projektekben számos olyan képesség adható meg a .sqlproj fájlban, amelyek hatással vannak az adatbázismodellre a projekt összeállításakor vagy üzembe helyezésekor. A következő szakaszok a Microsoft.Build.Sql-projektekhez elérhető képességek némelyikét ismertetik.

Célplatform

A célplatform tulajdonság az DSP elem alatti <PropertyGroup> fájl címkéjében .sqlproj található. A célplatform a projekt összeállítása során a projektben szereplő funkciók támogatásának ellenőrzésére szolgál, és tulajdonságként hozzáadódik a .dacpac fájlhoz. Alapértelmezés szerint az üzembe helyezés során a rendszer ellenőrzi a célplatformot a céladatbázison a kompatibilitás biztosítása érdekében. Ha a célplatformot a céladatbázis nem támogatja, az üzembe helyezés meghiúsul, hacsak nincs megadva felülbírálási közzétételi lehetőség .

<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>

A célplatform érvényes beállításai a következők:

  • 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

Adatbázis-hivatkozások

Az adatbázismodell összeállításkor történő érvényesítése az SQL-projekt tartalmán túlra is kiterjeszthető adatbázis-hivatkozásokon keresztül. A fájlban .sqlproj megadott adatbázis-hivatkozások hivatkozhatnak egy másik SQL-projektre vagy fájlra .dacpac , amely egy másik adatbázist vagy ugyanazon adatbázis több összetevőjét jelöli.

A következő attribútumok érhetők el egy másik adatbázist képviselő adatbázis-hivatkozásokhoz:

  • DatabaseSqlCmdVariable: az érték annak a változónak a neve, amely az adatbázisra hivatkozik
    • Referenciabeállítás: <DatabaseSqlCmdVariable>SomeOtherDatabase</DatabaseSqlCmdVariable>
    • Használati példa: SELECT * FROM [$(SomeOtherDatabase)].dbo.Table1
  • ServerSqlCmdVariable: az érték annak a változónak a neve, amely arra a kiszolgálóra hivatkozik, ahol az adatbázis található. a DatabaseSqlCmdVariable használatával használható, ha az adatbázis egy másik kiszolgálón található.
    • Referenciabeállítás: <ServerSqlCmdVariable>SomeOtherServer</ServerSqlCmdVariable>
    • Használati példa: SELECT * FROM [$(SomeOtherServer)].[$(SomeOtherDatabase)].dbo.Table1
  • DatabaseVariableLiteralValue: az érték az adatbázisnak az SQL-projektben használt literális neve, hasonló DatabaseSqlCmdVariable ahhoz, de a más adatbázisra való hivatkozás egy literális érték
    • Referenciabeállítás: <DatabaseVariableLiteralValue>SomeOtherDatabase</DatabaseVariableLiteralValue>
    • Használati példa: SELECT * FROM [SomeOtherDatabase].dbo.Table1

Egy SQL-projektfájlban az adatbázis-hivatkozás elemként ArtifactReference van megadva, és az Include attribútum a .dacpac fájl elérési útjára van állítva.

  <ItemGroup>
    <ArtifactReference Include="SampleA.dacpac">
      <DatabaseSqlCmdVariable>DatabaseA</DatabaseSqlCmdVariable>
    </ArtifactReference>
  </ItemGroup>
</Project>

Csomaghivatkozások

A csomaghivatkozások fájlokat tartalmazó .dacpac NuGet-csomagokra hivatkoznak, és az adatbázismodell buildelési idejének meghosszabbítására szolgálnak, hasonlóan az adatbázis-referenciához.

Az alábbi példa egy SQL-projektfájlból az Microsoft.SqlServer.Dacpacs adatbázis csomagra hivatkozik master .

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0" />
  </ItemGroup>
</Project>

Az adatbázis-hivatkozásokhoz elérhető attribútumok mellett az alábbi DacpacName attribútum is megadható egy .dacpac több .dacpac fájlt tartalmazó csomag kiválasztásához.

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0">
      <DacpacName>msdb</DacpacName>
    </PackageReference>
  </ItemGroup>
</Project>

SqlCmd-változók

Az SQLCmd változók definiálhatók a .sqlproj fájlban, és az SQL-objektumokban és szkriptekben lévő tokenek cseréjére használhatók az üzembe helyezés során .dacpac . Az ALÁBBI példa egy SQL-projektfájlból egy olyan változót EnvironmentName határoz meg, amely a projekt objektumaiban és szkriptjeiben használható.

  <ItemGroup>
    <SqlCmdVariable Include="EnvironmentName">
      <DefaultValue>testing</DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>
IF '$(EnvironmentName)' = 'testing'
BEGIN
    -- do something
END

Lefordított SQL-projekt (.dacpac) üzembe helyezésekor a változó értékét a rendszer lecseréli az üzembe helyezési parancsban megadott értékre. Az alábbi parancs például a változó értékét helyezi üzembe AdventureWorks.dacpac és állítja be a EnvironmentName következőre production: .

SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production

Üzembe helyezés előtti/utáni szkriptek

Az üzembe helyezés előtti és utáni szkriptek olyan SQL-szkriptek, amelyek az üzembe helyezés során végrehajtandó projekt részét képezik. Az üzembe helyezés előtti/utáni szkriptek szerepelnek a .dacpac fájlban, de azok nem adatbázis-objektummodellbe vannak lefordítva vagy érvényesítve. A rendszer az adatbázismodell alkalmazása előtt végrehajt egy üzembe helyezés előtti szkriptet, és egy üzembe helyezés utáni szkriptet az adatbázismodell alkalmazása után. A következő példa egy SQL-projektfájlból az üzembe helyezés utáni szkriptként adja hozzá a fájlt populate-app-settings.sql .

  <ItemGroup>
    <PostDeploy Include="populate-app-settings.sql" />
  </ItemGroup>
</Project>

Következő lépések