Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Az adatbázis és az SQL-projekt objektumdefiníciós különbségeinek megértése értékes betekintést nyújthat az adatbázis és a projekt állapotába, beleértve a folyamatban lévő fejlesztés vagy regressziós hibaelhárítás során is. Az SQL-projektek magukban foglalják a különbségek vizualizációjának eszközét, az adatbázis frissítéséhez szükséges módosítások elemzését, az adatbázis módosításainak SQL-projektfájlkészletbe való importálását, valamint a projektnek megfelelő adatbázis frissítéséhez végrehajtandó T-SQL-szkriptek áttekintését.
Ez a cikk egy adatbázis és egy SQL-projekt különböző megközelítések használatával történő összehasonlításának módszereit ismerteti:
- A séma összehasonlítása segítségével megjelenítheti az adatbázisok és/vagy projektek közötti különbségeket. Ez az összehasonlítás segíthet azonosítani az adatbázis és a projekt között szinkronizálandó módosításokat.
- Üzembe helyezési jelentésselösszegzheti és automatizálhatja az adatbázis frissítéséhez szükséges módosítások áttekintését.
- A séma-összehasonlítás vagy az SqlPackage-kivonat használatával módosításokat importálhat egy adatbázisból egy SQL-projektfájlkészletbe.
- Az SqlPackage üzembe helyezési szkriptjének vagy sémájának összehasonlításávaláttekintheti a projektnek megfelelő adatbázis frissítéséhez végrehajtott T-SQL-utasításokat .
Séma összehasonlítása: különbségek megjelenítése
Prerequisites
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 vagy a Visual Studióval.
A séma-összehasonlításhoz grafikus eszközre, például Visual Studióra vagy a Visual Studio Code MSSQL-bővítményére van szükség.
Summary
A séma-összehasonlítás vizuálisan leggazdagabb felületet biztosít az adatbázis és a projekt közötti különbségek megértéséhez. A séma-összehasonlítás egyik fő képessége, hogy az összehasonlítás iránya megfordítható. Ennek eredményeképpen séma-összehasonlítással megismerheti az adatbázisba üzembe helyezendő projekt módosításait, illetve az adatbázis módosításait, hogy hozzáadjanak egy projektet. Séma-összehasonlítással azonosíthatja az objektumdefiníciók, például táblák, nézetek, tárolt eljárások és függvények közötti különbségeket.
A teljes különbségkészlet vagy egy kijelölt részhalmaz használható a módosítások adatbázisra vagy projektre való alkalmazásához. A séma-összehasonlítás olyan üzembehelyezési szkriptet is létrehozhat, amely futtatáskor hatékonyan alkalmazza a módosításokat egy adatbázisra.
További információ a séma-összehasonlításról a séma-összehasonlítás áttekintésében.
Jelentés üzembe helyezése: módosítások áttekintése
A jelentések üzembe helyezéséhez az SqlPackage parancssori felületre van szükség.
dotnet tool install -g Microsoft.SqlPackage
Summary
Az üzembe helyezési jelentés összefoglalja az adatbázis projektnek megfelelő frissítéséhez szükséges módosításokat. Az SqlPackage CLI üzembe helyezési jelentést hoz létre egy forrásmodell (.dacpac SQL-projekt buildelési összetevőjének vagy adatbázisának) a céladatbázissal való összehasonlításával. Például a következő parancs létrehoz egy üzembe helyezési jelentést egy MyDatabase nevű adatbázishoz egy MyProject nevű SQL-projektből.
dotnet build MyProject.sqlproj
sqlpackage /Action:deployreport /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /OutputPath:deployreport.xml
A létrehozott XML az üzembe helyezési terv egyszerűsített formája, amely összegzi azokat a műveleteket, amelyeket az adatbázis-telepítés futtatásakor hajtanak végre. A műveletek alábbi listája nem teljes:
CreateAlterDropRefreshUnbindSchemaBindingUnbindFulltextIndexTableDataMotionSPRenameEnableChangeTrackingDatabaseDisableChangeTrackingDatabase
Az üzembe helyezési jelentések áttekinthetők egy szövegszerkesztőben vagy a Visual Studióban, és az alábbihoz hasonlóan néznek ki:
<?xml version="1.0" encoding="utf-8"?>
<DeploymentReport xmlns="http://schemas.microsoft.com/sqlserver/dac/DeployReport/2012/02">
<Alerts />
<Operations>
<Operation Name="Create">
<Item Value="[CO].[Products].[IX_Products_CategorySlug]" Type="SqlIndex" />
</Operation>
<Operation Name="Alter">
<Item Value="[CO].[Brands]" Type="SqlTable" />
<Item Value="[CO].[AddProductImage]" Type="SqlProcedure" />
</Operation>
<Operation Name="Refresh">
<Item Value="[CO].[SelectStarView]" Type="SqlView" />
</Operation>
</Operations>
</DeploymentReport>
Az üzembe helyezési jelentésekkel áttekintheti a módosításokat, valamint figyelheti a potenciálisan nagy hatású eseményeket, például az adatmozdulást vagy a fürtözött indexek létrehozását/elvetést. Ezek az események az elem alatti Alerts üzembehelyezési jelentésben lesznek felsorolva.
A jelentés XML-műveletének egyik előnye, hogy automatizálható az adatbázis frissítéséhez szükséges módosítások felülvizsgálata. Az XML elemezhető és használható jelentés létrehozásához vagy riasztások aktiválásához a felsorolt műveletek vagy objektumnevek alapján.
Módosítások importálása adatbázisból
Ahogy a séma-összehasonlítás szakaszban is említettük, a séma összehasonlítása használható az adatbázis módosításainak SQL-projektfájl-készletbe való alkalmazásához. Az SQL-projektek módosításainak alkalmazása gyakori forgatókönyv, ha egy közvetlenül aktívan fejlesztett adatbázissal rendelkezik, és egy SQL-projekt használatával kezeli az adatbázis-objektumokat a forrásvezérlőben. A művelet Visual Studióval vagy Azure Data Studióval történő manuális végrehajtása időigényes lehet, különösen akkor, ha az adatbázis sok objektumot vagy szórványos módosítást végez. Ebben a szakaszban áttekintjük, hogyan automatizálható az objektumdefiníciók kinyerése egy adatbázisból egy SQL-projektfájlkészletbe.
Prerequisites
Az automatizálásra összpontosítva az SqlPackage CLI használatával kinyerjük az objektumdefiníciókat egy adatbázisból egy SQL-projektfájl-készletbe. A Microsoft.Build.Sql.Templates .NET-sablonok egy SQL-projektfájl létrehozására szolgálnak, amely nem kötelező lépés.
# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage
# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates
Summary
Az SqlPackage kivonat parancs egy forrásadatbázist használ, és létrehoz egy kimeneti adatbázismodellt .dacpac fájlként vagy SQL-szkriptek halmazaként.
Az SqlPackage alapértelmezés szerint létrehoz egy .dacpac fájlt, de a /p:ExtractTarget= tulajdonság használható SQL-szkriptek halmazának megadására. Az alábbi parancs kinyeri az adatbázist MyDatabase egy SQL-projektfájlba a mappában MyDatabaseProject:
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
Ha egy mappa forrásvezérlés alatt áll, a kinyert objektumdefiníciók különbségeket mutatnak a forrásvezérlő eszközkészletben. Ha az SqlPackage használatával hozza létre a fájlokat, és ellenőrzi a forrásvezérlés eltéréseit, automatizálhatja az adatbázis módosításainak SQL-projektfájlkészletbe való importálását.
Három parancsból álló sorozatban eltávolíthatjuk az előző fájlkészletet, kinyerhetjük az adatbázist, és ellenőrizhetjük a forrásvezérlő eszköz különbségeit:
rm -rf MyDatabaseProject
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
git status --porcelain | wc -l
A kimenet a legújabb SqlPackage-kivonat által módosított fájlok száma. A parancs kimenete git status más automatizálási lépések indítására is használható. Ha ezt a fájlkészletet SQL-projektként szeretnénk használni, a Microsoft.Build.Sql.Templates .NET-sablonokkal létrehozhatunk egy SQL-projektfájlt a mappában MyDatabaseProject:
dotnet new sqlproj -n MyDatabaseProject -o MyDatabaseProject
Üzembehelyezési T-SQL-szkriptek áttekintése
Ahogy a séma-összehasonlítás szakaszban említettük, a séma összehasonlítása használható az adatbázisok SQL-projekttel való frissítéséhez szükséges T-SQL-szkriptek létrehozásához. Ebben a szakaszban áttekintjük, hogyan használható az SqlPackage a T-SQL szkriptek generálásának automatizálására, amelyek szükségesek egy adatbázis frissítéséhez úgy, hogy az megfeleljen egy SQL projektnek. Ezek a szkriptek folyamatként tárolhatók, hogy felülvizsgálatra és jóváhagyásra kerüljenek.
Prerequisites
dotnet tool install -g Microsoft.SqlPackage
Summary
Az SQL-projekt sqlpackage-beli üzembe helyezésének futtatása a közzétételi műveletet használja, de ha a végrehajtott T-SQL-szkripteket szeretnénk áttekinteni, használhatjuk a szkriptműveletet. A következő parancs létrehozza a szükséges T-SQL-szkripteket egy MyDatabase nevű adatbázis frissítéséhez, hogy az megfeleljen egy MyProject nevű SQL-projektnek.
dotnet build MyProject.sqlproj
sqlpackage /Action:Script /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /DeployScriptPath:Deployment.sql