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
, .bacpac
beleé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
- Referenciabeállítás:
- 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
- Referenciabeállítás:
- 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
- Referenciabeállítás:
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>