Sdílet prostřednictvím


Přehled porovnání schématu

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Nástroje pro porovnání schématu umožňují porovnat dvě definice databáze, kde zdroj a cíl porovnání mohou být libovolnou kombinací připojené databáze, projektu databáze SQL nebo .dacpac souboru. Po dokončení porovnání se výsledky porovnání zobrazí jako sada akcí, které cíl činí stejným jako zdroj. Rozdíly mezi modely databáze jsou prezentovány podobným způsobem jako rozdíl správy zdrojového kódu. Pokud je cílem porovnání schématu projekt SQL nebo databáze, můžete cíl aktualizovat přímo z rozhraní porovnání schématu nebo vygenerovat aktualizační skript, který má stejný účinek.

Snímek obrazovky s rozdíly mezi balíčkem a databází jako konceptem

Porovnání schémat poskytuje následující funkce:

  • Porovnejte schémata mezi dvěma .dacpac soubory, databázemi nebo projekty SQL.
  • Zobrazte výsledky jako sadu akcí, které odpovídají cíli vůči zdroji.
  • Selektivní vyloučení akcí uvedených ve výsledcích
  • Nastavte možnosti, které řídí rozsah porovnání.
  • Použijte změny přímo na cíl nebo vygenerujte skript pro pozdější použití změn.
  • Uložte porovnání.

Functionality

Rozdíly mezi zdrojem a cílem se zobrazí v mřížce pro snadnou kontrolu. Porovnání lze provést v obou směrech mezi modelem databáze odvozeným z některé z následujících možností:

  • připojená databáze
  • Projekt databáze SQL
  • Soubor .dacpac

Ve srovnání se schématem můžete přejít k podrobnostem a zkontrolovat každý rozdíl v mřížce výsledků nebo ve formuláři skriptu, kde jsou podrobnosti o změnách dostupné na úrovni jednotlivých řádků. Před aktualizací cíle můžete také selektivně vyloučit konkrétní rozdíly. Nástroje pro porovnání schématu jsou k dispozici v sadě Visual Studio, Azure Data Studio a příkazovém řádku.

Možnosti porovnání schématu

Možnosti porovnání schématu vycházejí z možností nasazení dostupných v knihovně DacFx .NET. K těmto možnostem patří:

  • ignorovat bílé místo
  • ignorovat schémata diskových oddílů
  • ignorovat pořadí sloupců
  • odstranit indexy, které nejsou ve zdroji
  • blokovat možnou ztrátu dat

Lze také nakonfigurovat typy objektů, které jsou součástí porovnání. Mezi tyto objekty patří tabulky, uložené procedury, indexy, oprávnění, uživatelem definované typy a další.

Porovnání souborů schématu

Definici porovnání pro porovnání schématu lze uložit jako .scmp soubor, který se označuje jako soubor porovnání schématu. Tento soubor ukládá informace o porovnání schématu v jazyce XML a obsahuje:

  • informace o zdrojovém a cílovém připojení
  • možnosti porovnání
  • vyloučené typy objektů

Soubor .scmp můžete otevřít v sadě Visual Studio nebo Azure Data Studio, aby bylo možné stejné porovnání snadno spustit později nebo sdílet porovnání s ostatními.

Spuštění a použití porovnání schémat

  1. V nabídce Nástroje v sadě Visual Studio vyberte SQL Server a pak vyberte Nové porovnání schématu.

    Případně klikněte pravým tlačítkem myši na projekt TradeDev v Průzkumníku řešení a vyberte Porovnat schéma.

    Otevře se okno Porovnání schématu a Visual Studio ho automaticky přiřadí jako název, například SqlSchemaCompare1.

    Pod panelem nástrojů okna Porovnání schématu se zobrazí dvě rozevírací nabídky se zelenou šipkou mezi nimi. Tyto nabídky umožňují vybrat definice databáze pro zdroj porovnání a cíl.

  2. V rozevíracím seznamu Vybrat zdroj zvolte Vybrat zdroj a otevře se dialogové okno Vybrat zdrojové schéma .

    Pokud jste otevřeli okno Porovnání schématu tak, že kliknete pravým tlačítkem myši na název projektu, zdrojové schéma je již vyplněné a můžete přejít ke kroku 4.

    Snímek obrazovky dialogového okna pro výběr zdroje porovnání schématu ve Visual Studio

  3. Výběrem souboru Project, Database connection nebo .dacpac dokončete výběry zdroje porovnání schématu. Zdroj je definice databáze, kterou chcete použít jako základ pro změny cíle.

  4. V rozevíracím seznamu Vybrat cíl v okně Porovnání schématu zvolte Vybrat cíl a otevře se dialogové okno Vybrat cílové schéma . Výběrem souboru Project, Database connection nebo .dacpac dokončete výběry cíle porovnání schématu. Cílem je definice databáze, na kterou chcete vyhodnotit a potenciálně použít změny.

  5. Můžete také vybrat tlačítko Možnosti na panelu nástrojů Okna porovnání schématu a určit, které objekty se porovnávají, jaké typy rozdílů se ignorují a další nastavení.

  6. Vyberte tlačítko Porovnat na panelu nástrojů okna Porovnání schématu a spusťte proces porovnání.

    Po dokončení porovnání se strukturální rozdíly mezi projektem a databází zobrazí v podokně Výsledky v horní části okna. Ve výchozím nastavení jsou rozdíly seskupeny podle akce (například Odstranit, Změnit nebo Přidat). V podokně Výsledky se zobrazí řádek pro každý databázový objekt, který se liší mezi definicemi databáze. Každý řádek identifikuje objekt ve zdrojovém nebo cílovém schématu (nebo obojím) a akci, která by byla provedena v cílovém schématu, aby cílový objekt byl stejný jako zdrojový objekt. Pokud byl objekt refaktorován a přejmenován nebo přesunut do nového schématu, zdrojové a cílové názvy se liší a zdrojový název se zobrazí tučně, aby se zvýrazňoval rozdíl.

    Snímek obrazovky s rozhraním pro porovnání schématu v sadě Visual Studio při porovnávání databáze s projektem

    Ve výchozím nastavení seznam výsledků skryje objekty, které jsou stejné v obou schématech nebo které nejsou podporovány pro aktualizaci (například předdefinované objekty). Na panelu nástrojů můžete vybrat příslušná tlačítka filtru, aby se tyto objekty zobrazily.

    Pokud chcete změnit předvolbu seskupení, vyberte na panelu nástrojů rozevírací seznam Výsledky skupiny . Výběrem možnosti Typ seskupíte výsledky podle typu objektu (například podle tabulek, zobrazení nebo uložených procedur).

  7. Ve výchozím nastavení jsou všechny rozdíly zahrnuté v oboru akce Cíl aktualizace. Můžete vyloučit rozdíly, které nechcete synchronizovat. Uděláte to tak, že zrušíte zaškrtnutí sloupce Akce uprostřed každého řádku. Případně klikněte pravým tlačítkem myši na řádek v podokně Schéma a vyberte Vyloučit. Řádek je okamžitě šedě zbarven. Jestliže se pro aktualizaci cílové databáze používá porovnání schématu, tento řádek se nepovažuje za součást žádných čekajících změn.

    Můžete také kliknout pravým tlačítkem myši na řádek skupiny a vybrat Vyloučit vše nebo Zahrnout vše, což odpovídá zrušení zaškrtnutí nebo kontrole všech rozdílů v této skupině. Když výsledky seskupíte podle schématu, můžete kliknutím pravým tlačítkem myši na řádek skupiny zahrnout nebo vyloučit všechny změny konkrétního schématu.

    Pokud má vyloučený řádek jakékoli závislé objekty (například řádek tabulky , na který odkazuje řádek zobrazení ), vyloučený řádek je zakázaný, ale jeho zaškrtávací políčko se nevymaže. Jakmile jsou všechny řádky, které na něm závisí, nezaškrtnuté, je zakázaný řádek nezaškrtnutý. Kromě toho, pokud je řádek refaktorován (přejmenován nebo přesunut do jiného schématu), je zaškrtávací políčko pro tento řádek a všechny jeho závislé podřízené řádky zakázané.

    Pokud porovnání aktualizujete, budou tyto rozdíly, které jste zvolili pro přeskočení, ignorovány.

Pokud chcete aktualizovat schéma cíle, máte dvě možnosti. Cíl můžete aktualizovat přímo z okna Porovnání schématu , pokud je cílem databáze nebo projekt, nebo můžete vygenerovat aktualizační skript, pokud je cílem databáze nebo soubor databáze. Vygenerovaný skript se zobrazí v editoru Transact-SQL, ze kterého můžete zkontrolovat spuštění skriptu v databázi.

Note

Porovnání grafického schématu je částečně dostupné ve verzi Preview projektů SQL ve stylu sady SDK v sadě Visual Studio. Porovnání schémat jsou k dispozici pro připojené databáze a .dacpac soubory, projekty databáze SQL zatím nejsou k dispozici.

  1. V nabídce Nástroje v sadě Visual Studio vyberte SQL Server a pak vyberte Nové porovnání schématu.

    Případně klikněte pravým tlačítkem myši na projekt TradeDev v Průzkumníku řešení a vyberte Porovnat schéma.

    Otevře se okno Porovnání schématu a Visual Studio ho automaticky přiřadí jako název, například SqlSchemaCompare1.

    Pod panelem nástrojů okna Porovnání schématu se zobrazí dvě rozevírací nabídky se zelenou šipkou mezi nimi. Tyto nabídky umožňují vybrat definice databáze pro zdroj porovnání a cíl.

  2. V rozevíracím seznamu Vybrat zdroj zvolte Vybrat zdroj a otevře se dialogové okno Vybrat zdrojové schéma .

    Pokud jste otevřeli okno Porovnání schématu tak, že kliknete pravým tlačítkem myši na název projektu, zdrojové schéma je již vyplněné a můžete přejít ke kroku 4.

    Snímek obrazovky dialogového okna pro výběr zdroje porovnání schématu ve Visual Studio

  3. Výběrem souboru Project, Database connection nebo .dacpac dokončete výběry zdroje porovnání schématu. Zdroj je definice databáze, kterou chcete použít jako základ pro změny cíle.

  4. V rozevíracím seznamu Vybrat cíl v okně Porovnání schématu zvolte Vybrat cíl a otevře se dialogové okno Vybrat cílové schéma . Výběrem souboru Project, Database connection nebo .dacpac dokončete výběry cíle porovnání schématu. Cílem je definice databáze, na kterou chcete vyhodnotit a potenciálně použít změny.

  5. Můžete také vybrat tlačítko Možnosti na panelu nástrojů Okna porovnání schématu a určit, které objekty se porovnávají, jaké typy rozdílů se ignorují a další nastavení.

  6. Vyberte tlačítko Porovnat na panelu nástrojů okna Porovnání schématu a spusťte proces porovnání.

    Po dokončení porovnání se strukturální rozdíly mezi projektem a databází zobrazí v podokně Výsledky v horní části okna. Ve výchozím nastavení jsou všechny rozdíly seskupené podle akce (například Odstranit, Změnit nebo Přidat). V podokně Výsledky se zobrazí řádek pro každý databázový objekt, který se liší mezi definicemi databáze. Každý řádek identifikuje objekt ve zdrojovém nebo cílovém schématu (nebo obojím) a akci, která by byla provedena v cílovém schématu, aby cílový objekt byl stejný jako zdrojový objekt. Pokud byl objekt refaktorován a přejmenován nebo přesunut do nového schématu, zdrojové a cílové názvy se liší a zdrojový název se zobrazí tučně, aby se zvýrazňoval rozdíl.

    Snímek obrazovky s rozhraním pro porovnání schématu v sadě Visual Studio při porovnávání databáze s projektem

    Ve výchozím nastavení seznam výsledků skryje objekty, které jsou stejné v obou schématech nebo které nejsou podporovány pro aktualizaci (například předdefinované objekty). Na panelu nástrojů můžete vybrat příslušná tlačítka filtru, aby se tyto objekty zobrazily.

    Pokud chcete změnit předvolbu seskupení, vyberte na panelu nástrojů rozevírací seznam Výsledky skupiny . Výběrem možnosti Typ seskupíte výsledky podle typu objektu (například podle tabulek, zobrazení nebo uložených procedur).

  7. Ve výchozím nastavení jsou všechny rozdíly zahrnuté v oboru akce Cíl aktualizace. Můžete vyloučit rozdíly, které nechcete synchronizovat. Uděláte to tak, že zrušíte zaškrtnutí sloupce Akce uprostřed každého řádku. Případně klikněte pravým tlačítkem myši na řádek v podokně Schéma a vyberte Vyloučit. Řádek je okamžitě šedě zbarven. Jestliže se pro aktualizaci cílové databáze používá porovnání schématu, tento řádek se nepovažuje za součást žádných čekajících změn.

    Můžete také kliknout pravým tlačítkem myši na řádek skupiny a vybrat Vyloučit vše nebo Zahrnout vše, což odpovídá zrušení zaškrtnutí nebo kontrole všech rozdílů v této skupině. Když výsledky seskupíte podle schématu, je to užitečný způsob, jak zahrnout nebo vyloučit všechny změny konkrétního schématu.

    Pokud má vyloučený řádek jakékoli závislé objekty (například řádek tabulky , na který odkazuje řádek zobrazení ), vyloučený řádek je zakázaný, ale jeho zaškrtávací políčko se nevymaže. Jakmile jsou všechny řádky, které na něm závisí, nezaškrtnuté, je zakázaný řádek nezaškrtnutý. Kromě toho, pokud je řádek refaktorován (přejmenován nebo přesunut do jiného schématu), je zaškrtávací políčko pro tento řádek a všechny jeho závislé podřízené řádky zakázané.

    Pokud porovnání aktualizujete, budou tyto rozdíly, které jste se rozhodli přeskočit, ignorovány.

Pokud chcete aktualizovat schéma cíle, máte dvě možnosti. Cíl můžete aktualizovat přímo z okna Porovnání schématu , pokud je cílem databáze nebo projekt, nebo můžete vygenerovat aktualizační skript, pokud je cílem databáze nebo soubor databáze. Vygenerovaný skript se zobrazí v editoru Transact-SQL, ze kterého můžete zkontrolovat spuštění skriptu v databázi.

Podrobnější informace o porovnání schématu v editoru Visual Studio Code najdete v článku Porovnání schématu.

  1. V editoru Visual Studio Code na paletě příkazů (ctrl/cmd+shift+P) vyhledejte a vyberte MSSQL: Porovnání schématu.

    Případně klikněte pravým tlačítkem myši na databázový projekt v zobrazení Databázové projekty nebo na databázi v Průzkumníku objektů a vyberte Porovnat schéma.

    Snímek obrazovky s položkou nabídky Porovnání schématu v Průzkumníku objektů editoru Visual Studio Code

    Otevře se okno Porovnání schématu a zdroj nebo cíl může být přednastavený na základě spouštěcího bodu.

    Pod panelem nástrojů okna Porovnání schématu se zobrazí dvě tlačítka s elipsami a mezi nimi šipka. Tyto nabídky umožňují vybrat definice databáze pro zdroj porovnání a cíl.

  2. Výběrem tlačítka se třemi tečky pro zdroj nebo cíl se otevře dialogové okno, ve kterém je možné aktualizovat jednotlivé položky. Výběrem souboru Project, Database connection nebo .dacpac dokončete výběry zdroje porovnání schématu. Zdroj je definice databáze, kterou chcete použít jako základ pro změny cíle. Cílem je definice databáze, na kterou chcete vyhodnotit a potenciálně použít změny.

    Snímek obrazovky dialogového okna pro výběr zdroje porovnání schématu ve Visual Studio Code

    Po dokončení výběru zavřete dialogové okno výběrem ok a vraťte se do okna Porovnání schématu .

  3. Můžete také vybrat tlačítko Možnosti na panelu nástrojů Okna porovnání schématu a určit, které objekty se porovnávají, jaké typy rozdílů se ignorují a další nastavení.

  4. Vyberte tlačítko Porovnat na panelu nástrojů okna Porovnání schématu a spusťte proces porovnání.

    Po dokončení porovnání se strukturální rozdíly mezi projektem a databází zobrazí v podokně Výsledky v horní části okna. Ve výchozím nastavení jsou všechny rozdíly seskupené podle akce (například Odstranit, Změnit nebo Přidat). V podokně Výsledky se zobrazí řádek pro každý databázový objekt, který se liší mezi definicemi databáze. Každý řádek identifikuje objekt ve zdrojovém nebo cílovém schématu (nebo obojím) a akci, která by byla provedena v cílovém schématu, aby cílový objekt byl stejný jako zdrojový objekt. Pokud byl objekt refaktorován a přejmenován nebo přesunut do nového schématu, zdrojové a cílové názvy se liší a zdrojový název se zobrazí tučným písmem, aby se zvýrazňoval rozdíl.

    Snímek obrazovky s rozhraním pro porovnání schématu v nástroji Azure Data Studio, který porovnává databázi s projektem

  5. Ve výchozím nastavení jsou všechny rozdíly zahrnuté v oboru akce Cíl aktualizace. Můžete vyloučit rozdíly, které nechcete synchronizovat. Uděláte to tak, že zrušíte zaškrtnutí sloupce Akce uprostřed každého řádku. Pokud se k aktualizaci cílové databáze používá porovnání schématu, tento řádek se nepovažuje za žádné čekající změny.

    Pokud má vyloučený řádek jakékoli závislé objekty (například řádek tabulky , na který odkazuje řádek zobrazení ), vyloučený řádek je zakázaný, ale jeho zaškrtávací políčko se nevymaže. Jakmile jsou všechny řádky, které na něm závisí, nezaškrtnuté, je zakázaný řádek nezaškrtnutý. Kromě toho, pokud je řádek refaktorován (přejmenován nebo přesunut do jiného schématu), je zaškrtávací políčko pro tento řádek a všechny jeho závislé podřízené řádky zakázané.

    Pokud porovnání aktualizujete, budou tyto rozdíly, které jste se rozhodli přeskočit, ignorovány.

Pokud chcete aktualizovat schéma cíle, máte dvě možnosti. Cíl můžete aktualizovat přímo z okna Porovnání schémat pomocí tlačítka Použít , pokud je cílem databáze nebo projekt, nebo můžete vygenerovat aktualizační skript, pokud je cílem databáze pomocí tlačítka Generovat skript . Vygenerovaný skript se zobrazí v editoru Transact-SQL, ze kterého můžete zkontrolovat spuštění skriptu v databázi.

Porovnání schémat vyžaduje grafický nástroj, jako je Visual Studio, nebo rozšíření MSSQL pro Visual Studio Code.