Séma-összehasonlítás áttekintése

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

A séma-összehasonlító eszköz lehetővé teszi két adatbázis-definíció összehasonlítását. Az összehasonlítás forrásaként és céljaként használhatja a csatlakoztatott adatbázis, az SQL Database-projekt vagy .dacpac a fájl bármilyen kombinációját. Amikor az összehasonlítás befejeződött, az eredmények olyan műveletek halmazaként jelenik meg, amelyek a célt a forrással azonosvá teszik. Az adatbázismodellek közötti különbségek hasonló módon jelennek meg, mint a forráskövetési diff. Ha a séma-összehasonlítási cél egy SQL-projekt vagy egy adatbázis, frissítheti a célértéket közvetlenül a séma-összehasonlító felületről, vagy létrehozhat egy ugyanolyan hatású frissítési szkriptet.

Képernyőkép a csomag és az adatbázis fogalma közötti különbségekről.

A Séma összehasonlítása a következő funkciókat biztosítja:

  • Két .dacpac fájl, adatbázis vagy SQL-projekt sémáinak összehasonlítása.
  • Az eredményeket a forrással egyező célnak megfelelő műveletkészletként tekintheti meg.
  • Az eredményekben felsorolt műveletek szelektív kizárása.
  • Adja meg az összehasonlítás hatókörét vezérlő beállításokat.
  • A módosításokat közvetlenül a célra alkalmazhatja, vagy létrehozhat egy szkriptet a módosítások későbbi alkalmazásához.
  • Mentse el az összehasonlítást.

Functionality

A forrás és a cél közötti különbségek egy rácsban jelennek meg az egyszerű áttekintés érdekében. Az alábbi lehetőségek bármelyikéből származó adatbázismodellek közötti összehasonlítása mindkét irányban lehetséges:

  • csatlakoztatott adatbázis
  • SQL Database-projekt
  • .dacpac fájl

A séma-összehasonlításban részletezheti és áttekintheti az egyes különbségeket az eredményrácsban vagy szkript formájában, ahol a módosítások részletei soronként érhetők el. A cél frissítése előtt szelektíven is kizárhat bizonyos különbségeket. A séma-összehasonlító eszköz a Visual Studióban, a Visual Studio Code-ban és a parancssorban érhető el.

Séma-összehasonlítási lehetőségek

A séma-összehasonlítási beállítások a DacFx .NET könyvtárban elérhető üzembehelyezési beállításokon alapulnak. Ezek a lehetőségek a következők:

  • Üres tér figyelmen kívül hagyása
  • Partíciós sémák figyelmen kívül hagyása
  • Oszlopsorrend figyelmen kívül hagyása
  • A forrásban nem szereplő indexek eldobása
  • Lehetséges adatvesztés blokkolása

Az összehasonlításban szereplő objektumtípusokat is konfigurálhatja. Ezek az objektumok többek között táblákat, tárolt eljárásokat, indexeket, engedélyeket, felhasználó által definiált típusokat tartalmaznak.

Séma-összehasonlítási fájlok

A séma-összehasonlítási definíciót fájlként, más néven .scmp mentheti. Ez a fájl a séma-összehasonlítással kapcsolatos információkat tárolja XML-ben, és a következőket tartalmazza:

  • Forrás- és célkapcsolati információk
  • Összehasonlítási lehetőségek
  • Kizárt objektumtípusok

Megnyithat egy .scmp fájlt a Visual Studio, hogy később ugyanazt az összehasonlítást futtassa, vagy megoszthatja az összehasonlítást másokkal.

A séma összehasonlítás indítása és használata

  1. A Visual Studio Eszközök menüjében válassza az SQL Server, majd az Új séma összehasonlítása lehetőséget.

    Másik lehetőségként kattintson a jobb gombbal a TradeDev projektre a Megoldáskezelőben, és válassza a Séma összehasonlítása lehetőséget.

    Megnyílik a Séma összehasonlítása ablak, és a Visual Studio automatikusan hozzárendel egy nevet, például SqlSchemaCompare1.

    A Séma összehasonlítása ablak eszköztár alatt két legördülő lista menü jelenik meg, amelyek között zöld nyíl látható. Ezek a menük lehetővé teszik adatbázis-definíciók kiválasztását az összehasonlító forráshoz és a célhoz.

  2. A Forrás kiválasztása legördülő listában válassza a Forrás kiválasztása lehetőséget, és megnyílik a Forrásséma kiválasztása párbeszédpanel.

    Ha a projekt nevére a jobb gombbal kattintva megnyitja a Séma összehasonlítása ablakot, a forrásséma már fel van töltve, és továbbléphet a 4. lépésre.

    Képernyőkép a Séma-összehasonlító forrás kiválasztásának párbeszédpaneléről a Visual Studióban.

  3. Fejezze be a séma-összehasonlító forrás kiválasztását a Project, az Adatbázis-kapcsolat vagy a .dacpac fájl kiválasztásával. A forrás az adatbázis definíciója, amelyet a cél módosításának alapjául szeretne használni.

  4. A Séma összehasonlítása ablakCél kiválasztása legördülő listájában válassza a Cél kiválasztása lehetőséget. Megnyílik a Célséma kiválasztása párbeszédpanel. Fejezze be a séma-összehasonlító cél kiválasztását a Project, az Adatbázis-kapcsolat vagy a .dacpac fájl kiválasztásával. A cél az az adatbázisdefiníció, amelyet ki szeretne értékelni, és amelyen esetleg módosításokat szeretne alkalmazni.

  5. Válassza a Séma összehasonlítása ablak eszköztár beállításai lehetőséget, és adja meg, hogy mely objektumokat hasonlítja össze, milyen típusú különbségeket hagy figyelmen kívül, és egyéb beállításokat.

  6. Az összehasonlítási folyamat elindításához válassza a Séma összehasonlítása ablak eszköztár Összehasonlítás gombját.

    Ha az összehasonlítás befejeződött, a projekt és az adatbázis közötti szerkezeti különbségek az ablak felső részén, az Eredmények panelen jelennek meg. Alapértelmezés szerint az összehasonlítási eredmények művelet szerint vannak csoportosítva (például Törlés, Módosítás vagy Hozzáadás). Az Eredmények panel minden adatbázis-objektumhoz megjelenít egy sort, amely különbözik az adatbázis-definícióktól. Minden sor azonosítja a forrás- vagy célséma objektumát (vagy mindkettőt), valamint azt a műveletet, amelyet a célsémában hajtanak végre, hogy a célobjektum megegyezik a forrásobjektuméval. Ha egy objektum újrabontása megtörtént, és átnevezték vagy áthelyezték egy új sémába, a forrás- és célnevek eltérőek, és a forrásnév félkövér betűtípussal jelenik meg a különbség kiemeléséhez.

    Képernyőkép a Visual Studio séma-összehasonlító felületéről, amely egy adatbázist hasonlít össze egy projekttel.

    Az eredménylista alapértelmezés szerint elrejti a két sémában azonos vagy frissítésre nem támogatott objektumokat, például a beépített objektumokat. Válassza ki az eszköztár megfelelő szűrőbeállításait az objektumok megjelenítéséhez.

    A csoportosítási beállítás módosításához válassza a Csoporteredmények legördülő listát az eszköztáron. Válassza a Típus lehetőséget az eredmények objektumtípus (például táblák, nézetek vagy tárolt eljárások) szerinti csoportosításához.

  7. Alapértelmezés szerint az update target művelet hatóköre minden különbséget tartalmaz. Kizárhatja a nem szinkronizálni kívánt különbségeket. Ehhez törölje a jelet a Művelet oszlopból az egyes sorok közepén. Másik lehetőségként kattintson a jobb gombbal egy sorra a Séma panelen, és válassza az Kizárás lehetőséget. A sor azonnal szürkítve jelenik meg. Ha séma-összehasonlítást használ a céladatbázis frissítéséhez, a rendszer nem veszi figyelembe ezt a sort a függőben lévő módosítások esetében.

    A jobb gombbal egy csoportsorra is kattinthat, és kiválaszthatja az Összes kizárása vagy az Összes belefoglalása lehetőséget, ami egyenértékű a csoport összes különbségének jelölésének vagy ellenőrzésének megszüntetésével. Ha sémák szerint csoportosítja az eredményeket, a jobb gombbal a csoportsorra való kattintással belefoglalhatja vagy kizárhatja egy adott séma összes módosítását.

    Ha a kizárt sornak vannak függő objektumai (például egy Nézetsor által hivatkozott táblázatsor), a kizárt sor le van tiltva, de a jelölőnégyzete nincs törölve. Ha az attól függő összes sor nincs bejelölve, a letiltott sor nincs bejelölve. Ezenkívül, ha egy sort átszerveznek (átneveznek vagy áthelyeznek egy másik sémába), akkor az adott sor és a függő gyermeksorok jelölőnégyzete letiltásra kerül.

    Ha frissíti az összehasonlítást, a kihagyni kívánt különbségek figyelmen kívül lesznek hagyva.

A cél sémájának frissítéséhez két lehetősége van. A cél közvetlenül a Séma összehasonlítása ablakból frissíthető, ha a cél adatbázis vagy projekt, vagy létrehozhat egy frissítési szkriptet, ha a cél egy adatbázis vagy egy adatbázisfájl. Megjelenik egy létrehozott szkript a Transact-SQL-szerkesztőben, amelyből megvizsgálhatja és végrehajthatja a szkriptet egy adatbázison.

Note

A grafikus séma összehasonlítása részben elérhető az SDK-stílusú SQL-projektek előzetes verziójában a Visual Studióban. A séma-összehasonlítások a csatlakoztatott adatbázisokhoz és .dacpac fájlokhoz érhetők el, az SQL-adatbázisprojektek még nem érhetők el.

  1. A Visual Studio Eszközök menüjében válassza az SQL Server, majd az Új séma összehasonlítása lehetőséget.

    Másik lehetőségként kattintson a jobb gombbal a TradeDev projektre a Megoldáskezelőben, és válassza a Séma összehasonlítása lehetőséget.

    Megnyílik a Séma összehasonlítása ablak, és a Visual Studio automatikusan hozzárendel egy nevet, például SqlSchemaCompare1.

    A Séma összehasonlítása ablak eszköztár alatt két legördülő lista menü jelenik meg, amelyek között zöld nyíl látható. Ezek a menük lehetővé teszik adatbázis-definíciók kiválasztását az összehasonlító forráshoz és a célhoz.

  2. A Forrás kiválasztása legördülő listában válassza a Forrás kiválasztása lehetőséget, és megnyílik a Forrásséma kiválasztása párbeszédpanel.

    Ha a projekt nevére a jobb gombbal kattintva megnyitja a Séma összehasonlítása ablakot, a forrásséma már fel van töltve, és továbbléphet a 4. lépésre.

    Képernyőkép a Séma-összehasonlító forrás kiválasztásának párbeszédpaneléről a Visual Studióban.

  3. Fejezze be a séma-összehasonlító forrás kiválasztását a Project, az Adatbázis-kapcsolat vagy a .dacpac fájl kiválasztásával. A forrás az adatbázis definíciója, amelyet a cél módosításának alapjául szeretne használni.

  4. A Séma összehasonlítása ablakCél kiválasztása legördülő listájában válassza a Cél kiválasztása lehetőséget. Megnyílik a Célséma kiválasztása párbeszédpanel. Fejezze be a séma-összehasonlító cél kiválasztását a Project, az Adatbázis-kapcsolat vagy a .dacpac fájl kiválasztásával. A cél az az adatbázisdefiníció, amelyet ki szeretne értékelni, és amelyen esetleg módosításokat szeretne alkalmazni.

  5. Válassza a Séma összehasonlítása ablak eszköztár beállításai lehetőséget, és adja meg, hogy mely objektumokat hasonlítja össze, milyen típusú különbségeket hagy figyelmen kívül, és egyéb beállításokat.

  6. Az összehasonlítási folyamat elindításához válassza a Séma összehasonlítása ablak eszköztár Összehasonlítás gombját.

    Ha az összehasonlítás befejeződött, a projekt és az adatbázis közötti szerkezeti különbségek az ablak felső részén, az Eredmények panelen jelennek meg. Alapértelmezés szerint az összehasonlítási eredmények művelet szerint vannak csoportosítva (például Törlés, Módosítás vagy Hozzáadás). Az Eredmények panel minden adatbázis-objektumhoz megjelenít egy sort, amely különbözik az adatbázis-definícióktól. Minden sor azonosítja a forrás- vagy célséma objektumát (vagy mindkettőt), valamint azt a műveletet, amelyet a célsémában hajtanak végre, hogy a célobjektum megegyezik a forrásobjektuméval. Ha egy objektum újrabontása megtörtént, és átnevezték vagy áthelyezték egy új sémába, a forrás- és célnevek eltérőek, és a forrásnév félkövér betűtípussal jelenik meg a különbség kiemeléséhez.

    Képernyőkép a Visual Studio séma-összehasonlító felületéről, amely egy adatbázist hasonlít össze egy projekttel.

    Az eredménylista alapértelmezés szerint elrejti a két sémában azonos vagy frissítésre nem támogatott objektumokat, például a beépített objektumokat. Válassza ki az eszköztár megfelelő szűrőbeállításait az objektumok megjelenítéséhez.

    A csoportosítási beállítás módosításához válassza a Csoporteredmények legördülő listát az eszköztáron. Válassza a Típus lehetőséget az eredmények objektumtípus (például táblák, nézetek vagy tárolt eljárások) szerinti csoportosításához.

  7. Alapértelmezés szerint az update target művelet hatóköre minden különbséget tartalmaz. Kizárhatja a nem szinkronizálni kívánt különbségeket. Ehhez törölje a jelet a Művelet oszlopból az egyes sorok közepén. Másik lehetőségként kattintson a jobb gombbal egy sorra a Séma panelen, és válassza az Kizárás lehetőséget. A sor azonnal szürkítve jelenik meg. Ha séma-összehasonlítást használ a céladatbázis frissítéséhez, a rendszer nem veszi figyelembe ezt a sort a függőben lévő módosítások esetében.

    A jobb gombbal egy csoportsorra is kattinthat, és kiválaszthatja az Összes kizárása vagy az Összes belefoglalása lehetőséget, ami egyenértékű a csoport összes különbségének jelölésének vagy ellenőrzésének megszüntetésével. Ha sémák szerint csoportosítja az eredményeket, a jobb gombbal a csoportsorra való kattintással belefoglalhatja vagy kizárhatja egy adott séma összes módosítását.

    Ha a kizárt sornak vannak függő objektumai (például egy Nézetsor által hivatkozott táblázatsor), a kizárt sor le van tiltva, de a jelölőnégyzete nincs törölve. Ha az attól függő összes sor nincs bejelölve, a letiltott sor nincs bejelölve. Ezenkívül, ha egy sort átszerveznek (átneveznek vagy áthelyeznek egy másik sémába), akkor az adott sor és a függő gyermeksorok jelölőnégyzete letiltásra kerül.

    Ha frissíti az összehasonlítást, a kihagyni kívánt különbségek figyelmen kívül lesznek hagyva.

A cél sémájának frissítéséhez két lehetősége van. A cél közvetlenül a Séma összehasonlítása ablakból frissíthető, ha a cél adatbázis vagy projekt, vagy létrehozhat egy frissítési szkriptet, ha a cél egy adatbázis vagy egy adatbázisfájl. Megjelenik egy létrehozott szkript a Transact-SQL-szerkesztőben, amelyből megvizsgálhatja és végrehajthatja a szkriptet egy adatbázison.

A Visual Studio Code séma-összehasonlításával kapcsolatos részletesebb információk a Séma összehasonlítása című cikkben találhatók.

  1. A Visual Studio Code-ban a parancskatalógusban (ctrl/cmd+shift+P) keresse meg és válassza ki az MSSQL: Schema Compare parancsot.

    Másik lehetőségként kattintson a jobb gombbal egy adatbázisprojektre az Adatbázisprojektek nézetben vagy egy adatbázisra az Object Explorerben, és válassza a Séma összehasonlítása lehetőséget.

    Képernyőkép a Visual Studio Code objektumkezelő Séma-összehasonlítás menüeleméről.

    Ekkor megnyílik a Séma összehasonlítása ablak, és előfordulhat, hogy egy forrás vagy cél előre van állítva az indítási pont alapján.

    A Séma összehasonlítása ablak eszköztára alatt két három pontot tartalmazó gomb jelenik meg, köztük egy nyíllal. Ezek a menük lehetővé teszik adatbázis-definíciók kiválasztását az összehasonlító forráshoz és a célhoz.

  2. Ha a forrás vagy cél kettőspont gombját választja, megnyílik egy párbeszédpanel, ahol mindkettő frissíthető. Fejezze be a séma-összehasonlító forrás kiválasztását a Project, az Adatbázis-kapcsolat vagy a .dacpac fájl kiválasztásával. A forrás az adatbázis definíciója, amelyet a cél módosításának alapjául szeretne használni. A cél az az adatbázisdefiníció, amelyet ki szeretne értékelni, és amelyen esetleg módosításokat szeretne alkalmazni.

    Képernyőkép a Séma-összehasonlító forrás kiválasztásának párbeszédpaneléről a Visual Studio Code-ban.

    A kijelölés befejezése után az OK gombra kattintva zárja be a párbeszédpanelt, és térjen vissza a Séma összehasonlítása ablakhoz.

  3. A Séma összehasonlítása ablak eszköztár Beállítások gombjára kattintva megadhatja, hogy mely objektumokat hasonlítja össze, milyen típusú különbségeket hagy figyelmen kívül, és egyéb beállításokat.

  4. Az összehasonlítási folyamat elindításához válassza a Séma összehasonlítása ablak eszköztár Összehasonlítás gombját.

    Ha az összehasonlítás befejeződött, a projekt és az adatbázis közötti szerkezeti különbségek az ablak felső részén, az Eredmények panelen jelennek meg. Alapértelmezés szerint az összehasonlítási eredmények művelet szerint vannak csoportosítva (például Törlés, Módosítás vagy Hozzáadás). Az Eredmények panel minden adatbázis-objektumhoz megjelenít egy sort, amely különbözik az adatbázis-definícióktól. Minden sor azonosítja a forrás- vagy célséma objektumát (vagy mindkettőt), valamint azt a műveletet, amelyet a célsémában hajtanak végre, hogy a célobjektum megegyezik a forrásobjektuméval. Ha egy objektum újrabontása megtörtént, és átnevezték vagy áthelyezték egy új sémába, a forrás- és célnevek eltérőek, és a forrásnév félkövér betűtípussal jelenik meg a különbség kiemeléséhez.

    Képernyőkép a Visual Studio Code séma-összehasonlító felületéről, amely egy adatbázist hasonlít össze egy projekttel.

  5. Alapértelmezés szerint az update target művelet hatóköre minden különbséget tartalmaz. Kizárhatja a nem szinkronizálni kívánt különbségeket. Ehhez törölje a jelet a Művelet oszlopból az egyes sorok közepén. Ha séma-összehasonlítást használ a céladatbázis frissítéséhez, a rendszer nem veszi figyelembe ezt a sort a függőben lévő módosítások esetében.

    Ha a kizárt sornak vannak függő objektumai (például egy Nézetsor által hivatkozott táblázatsor), a kizárt sor le van tiltva, de a jelölőnégyzete nincs törölve. Ha az attól függő összes sor nincs bejelölve, a letiltott sor nincs bejelölve. Ezenkívül, ha egy sort átszerveznek (átneveznek vagy áthelyeznek egy másik sémába), akkor az adott sor és a függő gyermeksorok jelölőnégyzete letiltásra kerül.

    Ha frissíti az összehasonlítást, a kihagyni kívánt különbségek figyelmen kívül lesznek hagyva.

A cél sémájának frissítéséhez két lehetősége van. A cél közvetlenül a Séma összehasonlítása ablakból frissíthető az Alkalmaz gombbal, ha a cél egy adatbázis vagy projekt, vagy létrehozhat egy frissítési szkriptet, ha a cél egy adatbázis a Szkript létrehozása gombbal. Megjelenik egy létrehozott szkript a Transact-SQL-szerkesztőben, amelyből megvizsgálhatja és végrehajthatja a szkriptet egy adatbázison.

A SQL Server Management Studio a Séma összehasonlítása eszközzel összehasonlíthatja az adatbázisokat, projekteket vagy .dacpac fájlokat.

  1. Az SQL Server Management Studio alkalmazásban csatlakozzon ahhoz az adatbázishoz, amelyet össze szeretne hasonlítani.

  2. A Object Explorer kattintson a jobb gombbal az adatbázisra, és válassza a Feladatok>séma összehasonlítása (előzetes verzió) lehetőséget.

  3. A Séma-összehasonlítás ablakban végezze el a séma-összehasonlító cél kiválasztását egy Project, adatbázis-kapcsolat vagy .dacpac fájl kiválasztásával.

  4. Válassza az Összehasonlítás lehetőséget az összehasonlítás elindításához.

    Ha az összehasonlítás befejeződött, a projekt és az adatbázis közötti szerkezeti különbségek az ablak felső részén, az Eredmények panelen jelennek meg. Alapértelmezés szerint az összehasonlítási eredmények művelet szerint vannak csoportosítva (például Törlés, Módosítás vagy Hozzáadás). Az Eredmények panel minden adatbázis-objektumhoz megjelenít egy sort, amely különbözik az adatbázis-definícióktól. Minden sor azonosítja a forrás- vagy célséma objektumát (vagy mindkettőt), valamint azt a műveletet, amelyet a célsémában hajtanak végre, hogy a célobjektum megegyezik a forrásobjektuméval. Ha egy objektum újrabontása megtörtént, és átnevezték vagy áthelyezték egy új sémába, a forrás- és célnevek eltérőek, és a forrásnév félkövér betűtípussal jelenik meg a különbség kiemeléséhez.

  5. Alapértelmezés szerint az update target művelet hatóköre minden különbséget tartalmaz. Kizárhatja a nem szinkronizálni kívánt különbségeket. Ehhez minden sorban törölje a Tartalmazza oszlop jelölését. Ha séma-összehasonlítást használ a céladatbázis frissítéséhez, a rendszer nem veszi figyelembe ezt a sort a függőben lévő módosítások esetében.

    Ha a kizárt sornak vannak függő objektumai (például egy Nézetsor által hivatkozott táblázatsor), a kizárt sor le van tiltva, de a jelölőnégyzete nincs törölve. Ha az attól függő összes sor nincs bejelölve, a letiltott sor nincs bejelölve.

    Ha frissíti az összehasonlítást, a kihagyni kívánt különbségek figyelmen kívül lesznek hagyva.

A cél sémájának frissítéséhez két lehetősége van. A cél közvetlenül a Séma összehasonlítása ablakból frissíthető az Alkalmaz gombbal, ha a cél egy adatbázis vagy projekt, vagy létrehozhat egy frissítési szkriptet, ha a cél egy adatbázis a Szkript létrehozása gombbal. Megjelenik egy létrehozott szkript a Transact-SQL-szerkesztőben, amelyből megvizsgálhatja és végrehajthatja a szkriptet egy adatbázison.

A Séma összehasonlítása SQL Server Management Studio, Visual Studio vagy a Visual Studio Code MSSQL-bővítményén keresztül érhető el.