Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av Microsoft Fabric
Med schemajämförelseverktyget kan du jämföra två databasdefinitioner, där jämförelsens källa och mål kan vara valfri kombination av ansluten databas, SQL-databasprojekt eller .dacpac fil. När jämförelsen är klar visas resultatet av jämförelsen som en uppsättning åtgärder som gör målet detsamma som källan. Skillnader mellan databasmodellerna visas på ett liknande sätt som ett källkontrollsdiff. Om schemats jämförelsemål är ett SQL-projekt eller en databas kan du uppdatera målet direkt från schemats jämförelsegränssnitt eller generera ett uppdateringsskript som har samma effekt.
Schemajämförelse innehåller följande funktioner:
- Jämför scheman mellan två
.dacpacfiler, databaser eller SQL-projekt. - Visa resultaten som en uppsättning åtgärder för att matcha ett mål med källan.
- Selektivt exkludera åtgärder som anges i resultat.
- Ange alternativ som styr jämförelsens omfång.
- Tillämpa ändringar direkt på målet eller generera ett skript för att tillämpa ändringar vid ett senare tillfälle.
- Spara jämförelsen.
Functionality
Skillnaderna mellan källa och mål visas i ett rutnät för enkel granskning. Jämförelse kan göras i båda riktningarna mellan en databasmodell som härleds från något av följande alternativ:
- ansluten databas
- SQL-databasprojekt
-
.dacpacfil
I schemasammanställning kan du öka detaljnivån och granska varje skillnad i resultatrutnätet eller i skriptform där detaljer om ändringarna finns tillgängliga för varje rad. Du kan också selektivt exkludera specifika skillnader innan du uppdaterar målet. Verktyget för schemaskillnader är tillgängligt i Visual Studio, Azure Data Studio och kommandoradsverktyget.
Alternativ för schemajämförelse
Alternativen för schemajämförelse hämtas från de distributionsalternativ som är tillgängliga från DacFx .NET-biblioteket. Dessa alternativ omfattar:
- ignorera mellanslag
- ignorera partitionsscheman
- ignorera kolumnordning
- släpp index som inte finns i källan
- blockera eventuell dataförlust
De objekttyper som ingår i jämförelsen kan också konfigureras. Dessa objekt omfattar tabeller, lagrade procedurer, index, behörigheter, användardefinierade typer med mera.
Jämförelsefiler för schema
Jämförelsedefinitionen för schemajämförelse kan sparas som en .scmp fil, som kallas för en schemajämförelsefil. Den här filen lagrar information om schemajämförelsen i XML och innehåller:
- käll- och målanslutningsinformation
- jämförelsealternativ
- exkluderade objekttyper
En .scmp fil kan öppnas i Visual Studio eller Azure Data Studio för att enkelt köra samma jämförelse igen senare eller för att dela jämförelsen med andra.
Starta och använd schemajämförelse
På menyn Verktyg i Visual Studio väljer du SQL Server och sedan Ny schemajämförelse.
Du kan också högerklicka på TradeDev-projektet i Solution Explorer och välja Schemajämföra.
Fönstret Schemajämförelse öppnas och Visual Studio tilldelar det automatiskt ett namn, så som
SqlSchemaCompare1.Två listmenyer med en grön pil mellan dem visas precis under Schemajämförelsefönstret verktygsfält. Med de här menyerna kan du välja databasdefinitioner för din jämförelsekälla och ditt mål.
I listrutan Välj källa väljer du Välj källa och dialogrutan Välj källschema öppnas.
Om du öppnade fönstret Schemajämförelse genom att högerklicka med musen på projektnamnet är källschemat redan ifyllt och du kan gå vidare till steg 4.
Slutför valen för en schemajämförelsekälla genom att välja en project-, databasanslutnings - eller .dacpac-fil . Källan är ett databasschema som du vill använda som grund för ändringar i måldatan.
I listruta Välj mål i fönstret Jämför schema, välj Välj mål, och dialogrutan Välj målschema öppnas. Slutför markeringen för ett schemajämförelsemål genom att välja en Projekt, databasanslutning eller .dacpac-fil. Målet är en databasdefinition som du vill utvärdera och eventuellt tillämpa ändringar på.
Du kan också välja knappen Alternativ i verktygsfältet Schemajämna fönster för att ange vilka objekt som ska jämföras, vilka typer av skillnader som ignoreras och andra inställningar.
Välj knappen Jämför i verktygsfältet Schemajämförelsefönster för att starta jämförelseprocessen.
När jämförelsen är klar visas de strukturella skillnaderna mellan projektet och databasen i fönstret Resultat i den övre delen av fönstret. Jämförelseresultatgruppen alla skillnader grupperas efter åtgärd (till exempel Ta bort, Ändra eller Lägg till) som standard. I fönstret Resultat visas en rad för varje databasobjekt som skiljer sig mellan databasdefinitionerna. Varje rad identifierar objektet i käll- eller målschemat (eller båda) och den åtgärd som skulle vidtas i målschemat för att göra målobjektet detsamma som källobjektet. Om ett objekt omstrukturerades och antingen bytte namn eller flyttades till ett nytt schema skiljer sig käll- och målnamnen och källnamnet visas i fetstil för att markera skillnaden.
Som standard döljer resultatlistan objekt som är samma i båda schemana eller som inte stöds för uppdatering (till exempel inbyggda objekt). Du kan välja lämpliga filterknappar i verktygsfältet för att visa dessa objekt.
Om du vill ändra grupperingsinställningen väljer du listrutan Gruppresultat i verktygsfältet. Välj Typ för att gruppera resultatet efter objekttyp (till exempel efter tabeller, vyer eller lagrade procedurer).
Som standard ingår alla skillnader i omfånget för åtgärden Uppdatera mål. Du kan undanta skillnader som du inte vill synkronisera. Om du vill göra det avmarkerar du kolumnen Åtgärd i mitten av varje rad. Du kan också högerklicka på en rad i fönstret Schema och välja Exkludera. Raden är omedelbart gråtonad. När schemajämförelse används för att uppdatera måldatabasen, beaktas inte den här raden för några väntande ändringar.
Du kan också högerklicka på en grupprad och välja Exkludera alla eller Inkludera alla, vilket motsvarar att avmarkera eller kontrollera alla skillnader i gruppen. När du grupperar resultat efter schema är högerklicka på gruppraden ett användbart sätt att inkludera eller exkludera alla ändringar i ett visst schema.
Om raden som exkluderas har några beroende objekt (till exempel en tabellrad som refereras till av en Visa-rad ), inaktiveras den exkluderade raden men kryssrutan avmarkeras inte. När alla rader som är beroende av den är avmarkerade avmarkeras den inaktiverade raden. Om en rad dessutom omstruktureras (byter namn eller flyttas till ett annat schema) inaktiveras kryssrutan för den raden och alla dess underordnade rader.
Om du uppdaterar jämförelsen ignoreras de skillnader som du valde att hoppa över.
Om du vill uppdatera schemat för målet har du två alternativ. Du kan uppdatera målet direkt från fönstret Schemajämförelse om målet är en databas eller ett projekt, eller generera ett uppdateringsskript om målet är en databas eller en databasfil. Ett genererat skript visas i Transact-SQL Editor, där du kan inspektera skriptet köra det mot en databas.
Note
Grafisk schemajämförelse är delvis tillgänglig i förhandsversionen av SQL-projekt i SDK-stil i Visual Studio. Schemajämförelser är tillgängliga för anslutna databaser och .dacpac filer, SQL-databasprojekt är ännu inte tillgängliga.
På menyn Verktyg i Visual Studio väljer du SQL Server och sedan Ny schemajämförelse.
Du kan också högerklicka på TradeDev-projektet i Solution Explorer och välja Schemajämföra.
Fönstret Schemajämförelse öppnas och Visual Studio tilldelar det automatiskt ett namn, så som
SqlSchemaCompare1.Två listmenyer med en grön pil mellan dem visas precis under Schemajämförelsefönstret verktygsfält. Med de här menyerna kan du välja databasdefinitioner för din jämförelsekälla och ditt mål.
I listrutan Välj källa väljer du Välj källa och dialogrutan Välj källschema öppnas.
Om du öppnade fönstret Schemajämförelse genom att högerklicka med musen på projektnamnet är källschemat redan ifyllt och du kan gå vidare till steg 4.
Slutför valen för en schemajämförelsekälla genom att välja en project-, databasanslutnings - eller .dacpac-fil . Källan är ett databasschema som du vill använda som grund för ändringar i måldatan.
I listruta Välj mål i fönstret Jämför schema, välj Välj mål, och dialogrutan Välj målschema öppnas. Slutför markeringen för ett schemajämförelsemål genom att välja en Projekt, databasanslutning eller .dacpac-fil. Målet är en databasdefinition som du vill utvärdera och eventuellt tillämpa ändringar på.
Du kan också välja knappen Alternativ i verktygsfältet Schemajämna fönster för att ange vilka objekt som ska jämföras, vilka typer av skillnader som ignoreras och andra inställningar.
Välj knappen Jämför i verktygsfältet Schemajämförelsefönster för att starta jämförelseprocessen.
När jämförelsen är klar visas de strukturella skillnaderna mellan projektet och databasen i fönstret Resultat i den övre delen av fönstret. Som standard grupperas alla skillnader i jämförelseresultatet efter åtgärd (till exempel Ta bort, Ändra eller Lägg till). I fönstret Resultat visas en rad för varje databasobjekt som skiljer sig mellan databasdefinitionerna. Varje rad identifierar objektet i käll- eller målschemat (eller båda) och den åtgärd som skulle vidtas i målschemat för att göra målobjektet detsamma som källobjektet. Om ett objekt omstrukturerades och antingen bytte namn eller flyttades till ett nytt schema skiljer sig käll- och målnamnen och källnamnet visas i fetstil för att markera skillnaden.
Som standard döljer resultatlistan objekt som är samma i båda schemana eller som inte stöds för uppdatering (till exempel inbyggda objekt). Du kan välja lämpliga filterknappar i verktygsfältet för att visa dessa objekt.
Om du vill ändra grupperingsinställningen väljer du listrutan Gruppresultat i verktygsfältet. Välj Typ för att gruppera resultatet efter objekttyp (till exempel efter tabeller, vyer eller lagrade procedurer).
Som standard ingår alla skillnader i omfånget för åtgärden Uppdatera mål. Du kan undanta skillnader som du inte vill synkronisera. Om du vill göra det avmarkerar du kolumnen Åtgärd i mitten av varje rad. Du kan också högerklicka på en rad i fönstret Schema och välja Exkludera. Raden är omedelbart gråtonad. När schemajämförelse används för att uppdatera måldatabasen, beaktas inte den här raden för några väntande ändringar.
Du kan också högerklicka på en grupprad och välja Exkludera alla eller Inkludera alla, vilket motsvarar att avmarkera eller kontrollera alla skillnader i gruppen. När du grupperar resultat efter schema är detta ett användbart sätt att inkludera eller exkludera alla ändringar i ett visst schema.
Om raden som exkluderas har några beroende objekt (till exempel en tabellrad som refereras till av en Visa-rad ), inaktiveras den exkluderade raden men kryssrutan avmarkeras inte. När alla rader som är beroende av den är avmarkerade avmarkeras den inaktiverade raden. Om en rad dessutom omstruktureras (byter namn eller flyttas till ett annat schema) inaktiveras kryssrutan för den raden och alla dess underordnade rader.
Om du uppdaterar jämförelsen ignoreras de skillnader som du har valt att hoppa över.
Om du vill uppdatera schemat för målet har du två alternativ. Du kan uppdatera målet direkt från fönstret Schemajämförelse om målet är en databas eller ett projekt, eller generera ett uppdateringsskript om målet är en databas eller en databasfil. Ett genererat skript visas i Transact-SQL Editor, där du kan inspektera skriptet köra det mot en databas.
Mer detaljerad information om schemajämförelse i Visual Studio Code finns i artikeln Schemajämförelse
I Visual Studio Code i kommandopaletten (
ctrl/cmd+shift+P) söker du efter och väljer MSSQL: Schema Compare.Du kan också högerklicka på ett databasprojekt i vyn Databasprojekt eller en databas i Object Explorer och välja Schemajäxa.
Fönstret Schemajämförelse öppnas och en källa eller ett mål kan vara förinställt beroende på startpunkt.
Två knappar med ellipser och en pil mellan dem visas precis under verktygsfältet i fönstret Schemajämförelse. Med de här menyerna kan du välja databasdefinitioner för din jämförelsekälla och ditt mål.
Om du väljer ellipsknappen för källan eller målet öppnas en dialogruta där var och en kan uppdateras. Slutför valen för en schemajämförelsekälla genom att välja en project-, databasanslutnings - eller .dacpac-fil . Källan är ett databasschema som du vill använda som grund för ändringar i måldatan. Målet är en databasdefinition som du vill utvärdera och eventuellt tillämpa ändringar på.
När markeringen är klar väljer du OK för att stänga dialogrutan och återgå till fönstret Schemajämförelse.
Du kan också välja knappen Alternativ i verktygsfältet Schemajämna fönster för att ange vilka objekt som ska jämföras, vilka typer av skillnader som ignoreras och andra inställningar.
Välj knappen Jämför i verktygsfältet Schemajämförelsefönster för att starta jämförelseprocessen.
När jämförelsen är klar visas de strukturella skillnaderna mellan projektet och databasen i fönstret Resultat i den övre delen av fönstret. Som standard grupperas alla skillnader i jämförelseresultatet efter åtgärd (till exempel Ta bort, Ändra eller Lägg till). I fönstret Resultat visas en rad för varje databasobjekt som skiljer sig mellan databasdefinitionerna. Varje rad identifierar objektet i käll- eller målschemat (eller båda) och den åtgärd som skulle vidtas i målschemat för att göra målobjektet detsamma som källobjektet. Om ett objekt har omstrukturerats och antingen bytt namn eller flyttats till ett nytt schema skiljer sig käll- och målnamnen och källnamnet visas i fetstil för att markera skillnaden.
Som standard ingår alla skillnader i omfånget för åtgärden Uppdatera mål. Du kan undanta skillnader som du inte vill synkronisera. Om du vill göra det avmarkerar du kolumnen Åtgärd i mitten av varje rad. När schemajämförelse används för att uppdatera måldatabasen beaktas inte denna rad för några väntande ändringar.
Om raden som exkluderas har några beroende objekt (till exempel en tabellrad som refereras till av en Visa-rad ), inaktiveras den exkluderade raden men kryssrutan avmarkeras inte. När alla rader som är beroende av den är avmarkerade avmarkeras den inaktiverade raden. Om en rad dessutom omstruktureras (byter namn eller flyttas till ett annat schema) inaktiveras kryssrutan för den raden och alla dess underordnade rader.
Om du uppdaterar jämförelsen ignoreras de skillnader som du har valt att hoppa över.
Om du vill uppdatera schemat för målet har du två alternativ. Du kan uppdatera målet direkt från fönstret Jämförelse av scheman med knappen Använd om målet är en databas eller ett projekt, eller du kan generera ett uppdateringsskript om målet är en databas med knappen Generera skript. Ett genererat skript visas i Transact-SQL Editor, där du kan inspektera skriptet köra det mot en databas.
Schemajämförelse kräver ett grafiskt verktyg som Visual Studio eller MSSQL-tillägget för Visual Studio Code.