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.
Az SqlPackage egy parancssori segédprogram, amely automatizálja az adatbázis-fejlesztési feladatokat a nyilvános Data-Tier Application Framework (DacFx) API-k felfedésével. Az SqlPackage elsődleges használati esetei az adatbázis hordozhatóságára és az SQL Server, az Azure SQL és az Azure Synapse Analytics adatbáziscsaládjának üzembe helyezésére összpontosítanak. Az SqlPackage automatizálható az Azure Pipelines és a GitHub-műveletek vagy más CI/CD-eszközök használatával.
Töltse le a legújabb verziót. A legújabb kiadás részleteiért lásd a kibocsátási megjegyzéseit.
Megjegyzés:
Bár a Microsoft Entra ID az Azure Active Directory (Azure AD) új neve, a meglévő környezetek megzavarásának megakadályozása érdekében az Azure AD továbbra is megmarad néhány kódoltan rögzített elemben, például a felhasználói felület mezőiben, kapcsolatszolgáltatókban, hibakódokban és parancsmagokban. Ebben a cikkben a két név felcserélhető.
Hordozhatóság
Az adatbázis hordozhatósága lehetővé teszi az adatbázisséma és az adatok áthelyezését az SQL Server, az Azure SQL és az Azure Synapse Analytics különböző példányai között. Az adatbázis exportálása az Azure SQL Database-ből egy helyszíni SQL Server-példányba, vagy az SQL Serverről az Azure SQL Database-be az adatbázis hordozhatóságát szemlélteti. Az SqlPackage az exportálási és importálási műveletekkel támogatja az adatbázis hordozhatóságát, amely BACPAC-fájlokat hoz létre és használ fel. Az SqlPackage támogatja az adatbázisok hordozhatóságát a kinyerési és közzétételi műveleteken keresztül, amelyek DACPAC-fájlokat hoznak létre és használnak fel, amelyek közvetlenül tartalmazhatják az adatokat, vagy hivatkozhatnak az Azure Blob Storage-ban tárolt adatokra.
Exportálás: Csatlakoztatott SQL-adatbázis exportálása – beleértve az adatbázissémát és a felhasználói adatokat is – BACPAC-fájlba (.bacpac).
Importálási: A séma- és táblaadatokat egy BACPAC-fájlból importálja egy új felhasználói adatbázisba.
Telepítések
Az adatbázis-telepítések az adatbázisséma kívánt állapotnak megfelelő frissítésének folyamatai, például oszlopok hozzáadása egy táblához vagy egy tárolt eljárás tartalmának módosítása. Az SqlPackage a közzétételi és kinyerési műveletekkel támogatja az adatbázis-telepítéseket. A Közzététel művelet frissíti az adatbázissémát, hogy megfeleljen a forrás .dacpac fájl tartalmának, míg a Kivonat művelet létrehoz egy adatrétegű alkalmazásfájlt (.dacpac), amely egy csatlakoztatott SQL-adatbázis sémáját vagy sémáját és felhasználói adatait tartalmazza. Az SqlPackage lehetővé teszi az azonos összetevőből (.dacpac) származó új vagy meglévő adatbázisokon végzett központi telepítéseket úgy, hogy automatikusan létrehoz egy üzembehelyezési tervet, amely a szükséges módosításokat alkalmazza a céladatbázisra. Az üzembehelyezési terv áttekinthető, mielőtt a módosításokat a céladatbázisra alkalmazza a Szkript vagy a DeployReport művelettel.
Kinyerés: Létrehoz egy adatrétegű alkalmazásfájlt (.dacpac), amely tartalmazza az adott SQL-adatbázis kapcsolat sémáját vagy a sémát és a felhasználói adatokat.
Közzététel: Lépésenként frissíti az adatbázis sémát, hogy az megfeleljen a forrás .dacpac fájl sémájának. Ha az adatbázis nem létezik a kiszolgálón, a közzétételi művelet létrehozza azt. Ellenkező esetben egy meglévő adatbázis frissül.
DeployReport: Létrehoz egy XML-jelentést, amely a közzétételi művelet által végrehajtott módosításokat jelöli.
DriftReport: Létrehoz egy XML-jelentést, amely a regisztrált adatbázisra az utolsó regisztráció óta alkalmazott módosításokat jelöli.
szkript: Létrehoz egy Transact-SQL növekményes frissítési szkriptet, amely frissíti a cél sémáját a forrás sémájának megfelelően.
Command-Line szintaxis
Az SqlPackage a parancssorban megadott paraméterek, tulajdonságok és SQLCMD-változók használatával kezdeményezi a megadott műveleteket.
SqlPackage {parameters} {properties} {SQLCMD variables}
Az SqlPackage parancssori szintaxisáról további információt az SqlPackage parancssori felületének referencia - és egyéni műveleti oldalai tartalmaznak.
Segédprogramparancsok
verzió
Az sqlpackage verziót buildszámként jeleníti meg. Használható interaktív parancssorokban és automatizált folyamatokban.
SqlPackage /Version
Segítség
Az SqlPackage használati adatait /? vagy /help:Truehasználatával jelenítheti meg.
SqlPackage /?
Az adott műveletre vonatkozó paraméter- és tulajdonságinformációkhoz használja a súgóparamétert a művelet paraméterén kívül.
SqlPackage /Action:Publish /?
Hitelesítés
Az SqlPackage a SqlClientben elérhető módszereket használja a hitelesítéshez. A hitelesítési típus konfigurálása az egyes SqlPackage-műveletek kapcsolati sztringparamétereivel (/SourceConnectionString és /TargetConnectionString) vagy a kapcsolattulajdonságok egyedi paramétereivel végezhető el. A kapcsolati sztringben a következő hitelesítési módszerek támogatottak:
- SQL Server-hitelesítés
- Active Directory -hitelesítés (Windows)
-
Microsoft Entra hitelesítés
- Felhasználónév/jelszó
- Integrált hitelesítés
- Univerzális hitelesítés
- Felügyelt identitás
- Szolgáltatási főelem
Felügyelt identitás
Megjegyzés:
Microsoft Entra ID korábban Azure Active Directory (Azure AD) néven ismert.
Automatizált környezetekben a Microsoft Entra által felügyelt identitás az ajánlott hitelesítési módszer. Ez a módszer nem igényel hitelesítő adatok átadását az SqlPackage-nek futásidőben, mivel az SqlPackage felügyelt identitásokkal csatlakozik a Microsoft Entra-hitelesítést támogató adatbázisokhoz, valamint a Microsoft Entra-jogkivonatok beszerzéséhez hitelesítő adatok kezelése nélkül. Ha a felügyelt identitás arra a környezetre van konfigurálva, ahol az SqlPackage-művelet fut, az SqlPackage művelet ezt az identitást használhatja az Azure SQL-hitelesítéshez. A felügyelt identitás környezethez való konfigurálásáról további információt a Felügyelt identitás dokumentációjában talál.
A rendszer által hozzárendelt felügyelt identitást használó kapcsolati sztring például a következő:
Server=sampleserver.database.windows.net; Authentication=Active Directory Managed Identity; Database=sampledatabase;
A felügyelt identitások mind az Azure DevOps , mind a GitHub actions CI/CD-folyamatokban támogatottak.
Szolgáltatási főelem
Megjegyzés:
Microsoft Entra ID korábban Azure Active Directory (Azure AD) néven ismert.
A Microsoft Entra alkalmazásszolgáltatás-tagok olyan biztonsági objektumok egy Microsoft Entra-alkalmazásban, amelyek meghatározzák, hogy egy alkalmazás mit tehet egy adott bérlőben. Az azure portalon vannak beállítva az alkalmazásregisztrációs folyamat során, és úgy vannak konfigurálva, hogy hozzáférjenek az Azure-erőforrásokhoz, például az Azure SQL-hez. A szolgáltatásnév környezethez való konfigurálásáról további információt a szolgáltatásnév dokumentációjában talál.
Ha az SqlPackage-et szolgáltatási főazonosítóval használja, lekérhet egy hozzáférési jogkivonatot, és átadhatja azt az SqlPackage-nek. A hozzáférési jogkivonat az Azure PowerShell-modul vagy az Azure CLI használatával kérhető le. Ebben a folyamatban a hívó rendszer fenntartja a jogkivonatok frissítésének vagy érvénytelenítésének vezérlését. A hozzáférési jogkivonat a paraméterrel továbbítható az /at SqlPackage-nek.
# example export connecting using an access token associated with a service principal
$Account = Connect-AzAccount -ServicePrincipal -Tenant $Tenant -Credential $Credential
$AccessToken_Object = (Get-AzAccessToken -Account $Account -ResourceUrl "https://database.windows.net/")
$AccessToken = $AccessToken_Object.Token
SqlPackage /at:$AccessToken /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
# OR
SqlPackage /at:$($AccessToken_Object.Token) /Action:Export /TargetFile:"C:\AdventureWorksLT.bacpac" \
/SourceConnectionString:"Server=tcp:{yourserver}.database.windows.net,1433;Initial Catalog=AdventureWorksLT;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
Másik lehetőségként átadhatja a szolgáltatásnév ügyfélazonosítóját és titkos kódját az SqlPackage-nek a kapcsolati sztringben. A kapcsolati sztring formátuma a következő elemeket tartalmazza: Authentication=Active Directory Service Principal; és User Id=AppId; Password=<password>. Ha a szolgáltatásnév hitelesítő adatai a kapcsolati sztringben vannak átadva, a /at paraméter nem szükséges, és az SqlPackage szükség szerint frissíti a hitelesítést a művelet során.
A szolgáltatásnevek mind az Azure DevOpsban , mind a GitHub actions CI/CD-folyamatokban támogatottak.
Környezeti változók
Kapcsolatmegosztás
A kapcsolatkészletezés az SqlPackage által létrehozott összes kapcsolat esetében engedélyezhető a CONNECTION_POOLING_ENABLED környezeti változó Truebeállításával. Ez a beállítás ajánlott a Microsoft Entra felhasználónévvel és jelszókapcsolatokkal végzett műveletekhez, hogy elkerülje a Microsoft Authentication Library (MSAL) szabályozását.
Ideiglenes fájlok
Az SqlPackage-műveletek során a táblaadatok ideiglenes fájlokba kerülnek tömörítés előtt vagy kitömörítés után. Nagy adatbázisok esetén ezek az ideiglenes fájlok jelentős mennyiségű lemezterületet foglalnak el, de a helyük megadható. Az exportálási és kinyerési műveletek tartalmazzák az SqlPackage alapértelmezett értékének felülbírálásához megadható /p:TempDirectoryForTableData opcionális tulajdonságot.
A .NET API GetTempPath használatával határozható meg az SqlPackage alapértelmezett értéke.
Windows esetén a rendszer a következő környezeti változókat ellenőrzi a következő sorrendben, és a rendszer az első létező elérési utat használja:
- A környezeti változó által
TMPmegadott elérési út. - A környezeti változó által
TEMPmegadott elérési út. - A környezeti változó által
USERPROFILEmegadott elérési út. - A Windows könyvtár.
Linux és macOS esetén, ha az elérési út nincs megadva a TMPDIR környezeti változóban, a rendszer az alapértelmezett elérési utat /tmp/ használja.
SqlPackage és adatbázis-felhasználók
A tartalmazott adatbázis-felhasználók az SqlPackage-műveletek részét képezik. A definíció jelszórésze azonban az SqlPackage által véletlenszerűen létrehozott sztringre van állítva, a meglévő érték nem lesz átadva. Javasoljuk, hogy az új felhasználó jelszava biztonságos értékre legyen helyreállítva egy .bacpac importálást vagy egy .dacpac központi telepítést követően. Automatizált környezetben a jelszóértékek lekérhetők egy biztonságos kulcstárból, például az Azure Key Vaultból az SqlPackage-t követő lépésben.
Bővíthetőség
Az SqlPackage a felügyelt bővíthetőségi keretrendszeren (MEF) keresztül támogatja a bővíthetőséget, lehetővé téve a speciális forgatókönyveket egyéni összetevőkkel, úgynevezett közreműködőkkel. Ezek a bővítmények testre szabhatják, hogyan teszi közzé .dacpac az SqlPackage a fájlokat, így a csapatok szabványokat kényszeríthetnek ki, vagy automatizálhatják a projektspecifikus logikát. Az üzembehelyezési közreműködők végrehajtása a közzétételi folyamat részeként történik, az üzembehelyezési terv létrehozása után, de a végrehajtás előtt. Ezek a közreműködők egy DeploymentPlanModifier osztályobjektum használatával érhetik el és módosíthatják az üzembehelyezési tervet a lépések hozzáadásához, eltávolításához vagy átrendezéséhez. Az üzembe helyezés bővíthetőségének első lépéseit az adatbázis-létrehozás és -üzembe helyezés testreszabása az üzembe helyezés közreműködőinek használatával című témakörben talál.
Az SqlPackage felderíti és betölti a közreműködői szerelvényeket az SqlPackage végrehajtható könyvtárában található dinamikus csatolású kódtárak (.dll fájlok) és az opcionális parancssori tulajdonságon /p:AdditionalDeploymentContributorPathskeresztül megadott helyek keresésével. Bár ez lehetővé teszi a rugalmas testreszabást, fontos biztonsági szempontokat is figyelembe kell vennie.
Fontos
Mivel az SqlPackage MEF-et használ a dinamikus csatolású kódtárak (.dll fájlok) futásidőben történő dinamikus betöltésére, az SqlPackage végrehajtható fájl mellett elhelyezett összeállítások az üzembe helyezési folyamat részeként végrehajthatók. A rosszindulatú szereplők kihasználhatják ezt a viselkedést, ha illetéktelen vagy jogosulatlan bővítményeket vezetnek be, amelyek tetszőleges kódot hajtanak végre.
Az Ön felelőssége annak biztosítása, hogy az SqlPackage-hez használt lefordított bővítményfájlok biztonságosak legyenek, és megbízható forrásokból származzanak. Javasoljuk, hogy szabályozza az SqlPackage mappához való hozzáférést, és érvényesítse az összes egyéni vagy külső összetevő integritását.
Használati adatok gyűjtése
Az SqlPackage olyan internetes funkciókat tartalmaz, amelyek névtelen szolgáltatáshasználati és diagnosztikai adatokat gyűjthetnek és küldhetnek a Microsoftnak.
Az SqlPackage szabványos számítógép-, használati és teljesítményadatokat gyűjthet, amelyek továbbíthatók a Microsoftnak, és elemezhetők az SqlPackage minőségének, biztonságának és megbízhatóságának javítása érdekében.
Az SqlPackage nem gyűjt felhasználóspecifikus vagy személyes adatokat. Egy felhasználó diagnosztikai célú közelítéséhez az SqlPackage véletlenszerű GUID-azonosítót hoz létre minden számítógépen, amelyen fut, és ezt az értéket használja az összes általa küldött eseményhez.
További részletekért tekintse meg a Microsoft adatvédelmi nyilatkozatát és az SQL Server adatvédelmi kiegészítését.
Telemetriajelentés letiltása
A telemetriai adatgyűjtés és -jelentés letiltásához frissítse a környezeti változót DACFX_TELEMETRY_OPTOUT a következőre true : vagy 1.
Támogatás
A DacFx-kódtár és az SqlPackage CLI eszköz a Microsoft Modern Életciklus Szabályzatot követi. Minden biztonsági frissítés, javítás és új funkció csak a főverzió legújabb pontverziójában jelenik meg. Ha a DacFx- vagy SqlPackage-telepítéseket az aktuális verzióra állítja, azzal biztosíthatja, hogy időben megkapja az összes vonatkozó hibajavítást.
Segítségkérés az SqlPackage-hez, funkciókérések elküldése és jelentési problémák a DacFx GitHub-adattárban.
Támogatott SQL-ajánlatok
Az SqlPackage és a DacFx az SqlPackage/DacFx kiadás idején minden támogatott SQL-verziót támogat. Egy 2022. január 14-i SqlPackage-kiadás például 2022. január 14-én támogatja az SQL összes támogatott verzióját. Az SQL támogatási szabályzatokkal kapcsolatos további információkért tekintse meg az SQL támogatási szabályzatát.
Az SQL Server mellett az SqlPackage és a DacFx támogatja az Azure SQL Managed Instancet, az Azure SQL Database-t, az Azure Synapse Analyticset és a Fabric Data Warehouse-t.
Következő lépések
- További információ SqlPackage extract
- További információ az SqlPackage Publish
- További információ az SqlPackage Export
- További információ az SqlPackage Importálásról
- További információ az SqlPackage hibaelhárítási problémáiról
- Visszajelzés megosztása az SqlPackage-ről a DacFx GitHub-adattárban