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


Eredeti SQL-projekt átalakítása SDK-stílusú projektté

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Egy új SDK-stílusú SQL-projekt létrehozása gyors feladat. Ha azonban már rendelkezik SQL-projektekkel, átalakíthatja őket SDK-stílusú SQL-projektekké, hogy kihasználhassa az új funkciókat.

A projekt konvertálása után használhatja az SDK-stílusú projekt új funkcióit, például:

  • Platformfüggetlen buildtámogatás
  • egyszerűsített projektfájl formátuma
  • csomaghivatkozások

Az átalakítás gondos elvégzéséhez a következőt fogjuk elvégezni:

  1. Készítsen biztonsági másolatot az eredeti projektfájlról.
  2. Hozzon létre egy .dacpac fájlt az eredeti projektből összehasonlítás céljából.
  3. A projektfájlt módosítsa SDK-stílusú projektté.
  4. Hozzon létre egy .dacpac fájlt a módosított projektből összehasonlítás céljából.
  5. Ellenőrizze, hogy a .dacpac fájlok megegyeznek-e.

A Visual Studióban az SQL Server Data Tools (SSDT) nem támogatja az SDK-stílusú projekteket. A konvertálás után az alábbiak egyikével kell létrehoznia vagy szerkesztenie a projektet:

  • a parancssor
  • az SQL Database Projects bővítmény a Visual Studio Code-ban
  • az SQL Database Projects bővítmény az Azure Data Studióban
  • az SQL Server Data Tools, az SDK-stílusú előzetes verzió a Visual Studio 2022-ben

Note

Előfordulhat, hogy az SQL-projekt olyan testreszabást tartalmaz, amely kibővíti a szükséges módosításokat ezen lépéseken túl. A cikk mellett a DacFx GitHub-adattár is használható az eredeti SQL-projektről SDK-stílusú SQL-projektekre való frissítéshez szükséges módosítások megértéséhez.

Prerequisites

1. lépés: Az eredeti projektfájl biztonsági másolatának létrehozása

A projekt konvertálása előtt készítsen biztonsági másolatot az eredeti projektfájlról. Így szükség esetén visszatérhet az eredeti projekthez.

A Fájlkezelőben hozza létre a .sqlproj fájl projektjének a másolatát, amelyet .original hozzáfűzésével a fájlkiterjesztés végén szeretne konvertálni. MyProject.sqlproj például MyProject.sqlproj.originallesz.

2. lépés: Fájl létrehozása .dacpac az eredeti projektből összehasonlítás céljából

Nyissa meg a projektet a Visual Studio 2022-ben. A .sqlproj fájl továbbra is az eredeti formátumban van, ezért az eredeti SQL Server Data Toolsban nyitja meg.

Hozza létre a projektet a Visual Studióban úgy, hogy a jobb gombbal az adatbázis-csomópontra kattint a Megoldáskezelőben , és válassza a Build lehetőséget.

Ha az eredeti projektből szeretne fájlt készíteni .dacpac , a Visual Studióban az eredeti SQL Server Data Tools (SSDT) eszközt kell használnia. Nyissa meg a projektfájlt a Visual Studio 2022-ben az eredeti SQL Server Data Tools telepítésével.

Hozza létre a projektet a Visual Studióban úgy, hogy a jobb gombbal az adatbázis-csomópontra kattint a Megoldáskezelőben , és válassza a Build lehetőséget.

Nyissa meg a projektmappát a VS Code-ban vagy az Azure Data Studióban. Az Database Projects VS Code vagy Azure Data Studio nézetében kattintson a jobb gombbal a projektcsomópontra, és válassza a Buildlehetőséget.

Az SQL-adatbázisprojektek a parancssorból hozhatók létre a dotnet build paranccsal.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

A létrehozási folyamat alapértelmezés szerint létrehoz egy .dacpac fájlt a bin\Debug projekt mappájában. A Fájlkezelővel keresse meg a build folyamat által létrehozott .dacpac-t, és másolja az új mappába, amely a projektkönyvtáron kívül helyezkedik el, mint original_project.dacpac. Ezt a .dacpac fájlt az összehasonlításhoz használjuk az átalakítás későbbi ellenőrzéséhez.

3. lépés: A projektfájl módosítása SDK-stílusú projektre

A projektfájl módosítása egy manuális folyamat, amely a legjobban egy szövegszerkesztőben végezhető el. Nyissa meg a .sqlproj fájlt egy szövegszerkesztőben, és végezze el a következő módosításokat:

Kötelező: Az SDK-referencia hozzáadása

A projektelemen belül adjon hozzá egy Sdk elemet, hogy hivatkozzon a Microsoft.Build.Sql-re és a legújabb verzióra abból a https://www.nuget.org/packages/Microsoft.build.sql forrásból, ahol a #.#.# szerepel az alábbi kódrészletben.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0">
  <Sdk Name="Microsoft.Build.Sql" Version="#.#.#" />
...

Kötelező: Távolítsa el a build célpont szükségtelen importjait

Az eredeti SQL-projektek több buildcélra és tulajdonságra hivatkoznak importálási utasításokban. <Import/> A kifejezetten hozzáadott elemek kivételével, amely egyedi és szándékos módosítás, távolítsa el azokat a sorokat, amelyek a következővel <Import ...>kezdődnek: Eltávolítandó példák, ha a .sqlproj-ben szerepel:

...
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Condition="..." Project="...\Microsoft.Data.Tools.Schema.SqlTasks.targets"/>
<Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
...

Kötelező: Tulajdonságok mappa eltávolítása

Az eredeti SQL-projektek rendelkeznek egy olyan mappához tartozó Properties bejegyzéssel, amely a megoldáskezelőben a projekttulajdonságokhoz való hozzáférést jelentette. Ezt az elemet el kell távolítani a projektfájlból.

Példa az eltávolításra, ha jelen van a következő szöveghelyen: .sqlproj.

<ItemGroup>
  <Folder Include="Properties" />
</ItemGroup>

Kötelező: Az alapértelmezett buildelemek eltávolítása

Az eredeti SQL-projektek a projektfájlban kifejezetten adatbázis-objektumokat képviselő összes .sql fájlt elemekként <Build Include="..." /> sorolják fel. Az SDK-stílusú SQL-projektekben a projektmappafa (.sql) minden **/*.sql fájlja alapértelmezés szerint szerepel, ezért a buildelési teljesítményproblémák elkerülése érdekében el kell távolítani a <Build Include="...." /> fájlok elemeit.

A projektfájlból eltávolítandó sorok, például:

  <Build Include="SalesLT/Products.sql" />
  <Build Include="SalesLT/SalesLT.sql" />
  <Build Include="SalesLT/Categories.sql" />
  <Build Include="SalesLT/CategoriesProductCount.sql" />

Nem szabad eltávolítania a <PreDeploy Include="..." /> vagy <PostDeploy Include="..." /> elemeket, mert ezek a csomópontok specifikus viselkedést diktálnak azokhoz a fájlokhoz. Az SQL-projekt mappafáját nem tartalmazó fájlok elemeit sem szabad eltávolítania <Build Include="..." /> .

Nem kötelező: SSDT-hivatkozások eltávolítása

Az eredeti SQL Server Data Tools (SSDT) további tartalmat igényelt a projektfájlban a Visual Studio telepítésének észleléséhez. Ezek a sorok szükségtelenek az SDK-stílusú SQL-projektekben, és eltávolíthatók:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
    <!-- Default to the v11.0 targets path if the targets file for the current VS version is not found -->
    <SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>
    <VisualStudioVersion Condition="'$(SSDTExists)' == ''">11.0</VisualStudioVersion>
  </PropertyGroup>

Nem kötelező: Az alapértelmezett buildbeállítások eltávolítása

Az eredeti SQL-projektek két nagy blokkot tartalmaznak a kiadási és hibakeresési buildbeállításokhoz, míg az SDK-stílusú SQL-projektekben ezek alapértelmezett beállításait az SDK ismeri. Ha nem rendelkezik testreszabással a buildbeállításokhoz, távolítsa el az alábbi blokkokat:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>bin\Release\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <DefineDebug>false</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>bin\Debug\</OutputPath>
    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>
    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <DefineDebug>true</DefineDebug>
    <DefineTrace>true</DefineTrace>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

A projekttulajdonságok hivatkozása felsorolja az elérhető tulajdonságokat és azok alapértelmezett beállításait.

4. lépés: Megoldásfájlok

Előfordulhat, hogy a projektfájlra egy megoldásfájl (c0) hivatkozik. Ha rendelkezik megoldásfájllal, frissítenie kell, hogy hivatkozzon az új SDK-stílusú projektfájlra. Ha nem rendelkezik megoldásfájllal, kihagyhatja ezt a szakaszt, és továbbléphet az 5. lépésre.

1. lehetőség: Új megoldásfájl létrehozása

Olyan megoldásfájl esetén, amely csak az SQL-projektet tartalmazza, egyszerűbb eltávolítani a megoldásfájlt, és létrehozni egy új megoldásfájlt az SDK-stílusú projekttel.

dotnet new sln --name MySolution
dotnet sln MySolution.sln add MyDatabaseProject\MyDatabaseProject.sqlproj

2. lehetőség: A megoldásfájl szerkesztése

Ha egy megoldásfájl több projektet tartalmaz, frissítenie kell a megoldásfájlt, hogy hivatkozzon az új SDK-stílusú projektfájlra. Szerkesztheti a megoldásfájlt egy szövegszerkesztőben, és módosíthatja a projekthivatkozást az új SDK-stílusú projektfájlra. A megoldásfájlban lévő projekthivatkozásnak így kell kinéznie:

Project("{PROJECT_TYPE_GUID}") = "MyDatabaseProject", "MyDatabaseProject\MyDatabaseProject.sqlproj", "{PROJECT_GUID}"
EndProject

A PROJECT_TYPE_GUID Microsoft.Build.Sql projekt 42EA0DBD-9CF1-443E-919E-BE9C484E4577 értéke, és a PROJECT_GUID egy projekt fájlelemben, a <ProjectGuid> elemént található egyedi azonosító. Ha rendelkezik a projekttel egy megoldásfájllal, az PROJECT_GUID értéket nem kell módosítani, és változatlan marad, mint az eredeti projektfájlban. Az PROJECT_TYPE_GUID értéket a Microsoft.Build.Sql projekt guid típusára kell módosítani.

5. lépés: Fájl létrehozása .dacpac a módosított projektből összehasonlítás céljából

Az SQL-projekt már nem kompatibilis a Visual Studio 2022-vel. A projekt létrehozásához vagy szerkesztéséhez a következő egyiket kell használnia:

  • a parancssor
  • az SQL Database Projects bővítmény a Visual Studio Code-ban
  • az SQL Database Projects bővítmény az Azure Data Studióban
  • az SQL Server Data Tools, az SDK-stílusú előzetes verzió a Visual Studio 2022-ben

A projektfájl már SDK-stílusú, de a Visual Studio 2022-ben való megnyitásához telepítenie kell az SQL Server Data Tools SDK-stílusát (előzetes verzió). Nyissa meg a projektet a Visual Studio 2022-ben az SQL Server Data Tools SDK-stílusú (előzetes verzió) telepítésével.

Nyissa meg a projektmappát a VS Code-ban vagy az Azure Data Studióban. Az Database Projects VS Code vagy Azure Data Studio nézetében kattintson a jobb gombbal a projektcsomópontra, és válassza a Buildlehetőséget.

Az SQL-adatbázisprojektek a parancssorból hozhatók létre a dotnet build paranccsal.

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

A létrehozási folyamat alapértelmezés szerint létrehoz egy .dacpac fájlt a bin\Debug projekt mappájában. A Fájlkezelővel keresse meg a .dacpac buildelési folyamat által létrehozott fájlt, és másolja a projektkönyvtáron kívüli új mappába. Ezt a .dacpac fájlt az összehasonlításhoz használjuk az átalakítás későbbi ellenőrzéséhez.

6. lépés: Ellenőrizze, hogy a .dacpac fájlok azonosak-e

Az átalakítás sikerességének ellenőrzéséhez hasonlítsa össze az .dacpac eredeti és a módosított projektekből létrehozott fájlokat. Az SQL-projektek séma-összehasonlító képességei lehetővé teszik, hogy vizualizáljuk az adatbázismodellek közötti különbséget a két .dacpac fájl között. Másik lehetőségként a DacpacVerify parancssori segédprogram használható a két .dacpac fájl összehasonlítására, beleértve az üzembe helyezés előtti/utáni szkripteket és a projektbeállításokat.

A DacpacVerify dotnet-eszközként telepíthető. Az eszköz telepítéséhez futtassa a következő parancsot:

dotnet tool install --global Microsoft.DacpacVerify --prerelease

A DacpacVerify szintaxisa két fájl fájljának fájlútvonalát .dacpac adja meg.dacpacverify <source DACPAC path> <target DACPAC path> A két .dacpac fájl összehasonlításához futtassa a következő parancsot:

DacpacVerify original_project.dacpac modified_project.dacpac

A Visual Studio vagy az Azure Data Studio séma-összehasonlító eszközével összehasonlíthatja a .dacpac fájlokban lévő objektumokat.

Indítsa el a Visual Studiót projekt betöltése nélkül. Nyissa meg az Eszközök>SQL Server>új séma-összehasonlítását. Válassza ki az eredeti .dacpac fájlt forrásként, a módosított .dacpac fájlt pedig célként. A Schema Compare Visual Studióban való használatáról további információt a különböző adatbázis-definíciók összehasonlítása érdekében a séma összehasonlítása című témakörben talál.

A grafikus séma összehasonlítása még nem érhető el az SDK-stílusú SQL-projektek előzetes verziójában a Visual Studióban. A sémák összehasonlítása az Azure Data Studióval.

A séma-összehasonlítás nem érhető el a Visual Studio Code-ban. A sémák összehasonlítása az Azure Data Studióval vagy a Visual Studióval.

Ha még nincs telepítve, telepítse az SQL Server Schema Compare bővítményt az Azure Data Studióban. Nyisson meg egy új séma-összehasonlítást a parancskatalógusból a parancskatalógus megnyitásával és beírásával Ctrl/Cmd+Shift+PSchema Compare.

Válassza ki az eredeti .dacpac fájlt forrásként, a módosított .dacpac fájlt pedig célként.

A grafikus sémák összehasonlítása a Visual Studióban és az Azure Data Studióban érhető el.

A séma-összehasonlítás futtatásakor nem jelenik meg eredmény. A különbségek hiánya azt jelzi, hogy az eredeti és a módosított projektek egyenértékűek, és ugyanazt az adatbázismodellt állítják elő a .dacpac fájlban.

Note

A fájlok séma-összehasonlításon keresztüli .dacpac összehasonlítása nem ellenőrzi az üzembe helyezés előtti/utáni szkripteket, az újrabontási naplókat vagy más projektbeállításokat. Csak az adatbázismodellt ellenőrzi. A DacpacVerify parancssori segédprogrammal ellenőrizheti, hogy a két .dacpac fájl egyenértékű-e.