Udostępnij za pośrednictwem


Porównanie bazy danych i projektu

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL Database w Microsoft Fabric

Zrozumienie różnic definicji obiektów między bazą danych a projektem SQL może zapewnić cenny wgląd w stan bazy danych i projektu, w tym podczas ciągłego opracowywania lub rozwiązywania problemów z regresją. Projekty SQL obejmują narzędzia do wizualizacji różnic, analizowanie zmian wymaganych do aktualizowania bazy danych, importowanie zmian z bazy danych do zestawu plików projektu SQL i przeglądanie skryptów języka T-SQL, które zostaną wykonane w celu zaktualizowania bazy danych w celu dopasowania do projektu.

W tym artykule opisano metody porównywania bazy danych i projektu SQL przy użyciu różnych metod:

  • Możesz użyć porównania schematów , aby zwizualizować różnice między bazami danych i/lub projektami. To porównanie może pomóc w zidentyfikowaniu zmian, które należy zsynchronizować między bazą danych a projektem.
  • Raport wdrażania umożliwia podsumowanie i zautomatyzowanie przeglądów zmian wymaganych do zaktualizowania bazy danych.
  • Aby zaimportować zmiany z bazy danych do zestawu plików projektu SQL, można użyć funkcji porównywania schematów lub wyodrębniania sqlpackage.
  • Możesz użyć skryptu wdrożeniowego SqlPackage lub porównania schematu, aby przejrzeć instrukcje języka T-SQL, które są wykonywane w celu zaktualizowania bazy danych, dopasowując ją do projektu.

Porównanie schematów: wizualizowanie różnic

Wymagania wstępne

Porównanie schematów graficznych nie jest jeszcze dostępne w wersji zapoznawczej projektów SQL w stylu zestawu SDK w programie Visual Studio. Porównanie schematów przy użyciu programu Azure Data Studio lub Visual Studio.

Porównanie schematów wymaga graficznego narzędzia, takiego jak Visual Studio lub Azure Data Studio.

Podsumowanie

Porównanie schematów zapewnia najbogatszy wizualnie interfejs do zrozumienia różnic między bazą danych a projektem. Kluczową możliwością porównania schematu jest to, że kierunek porównania jest odwracalny. W związku z tym można użyć porównania schematów, aby zrozumieć zmiany z projektu, które mają zostać wdrożone w bazie danych lub zmiany z bazy danych w celu dodania do projektu. Możesz użyć porównania schematów, aby zidentyfikować różnice w definicjach obiektów, takich jak tabele, widoki, procedury składowane i funkcje.

Pełny zestaw różnic lub wybrany podzestaw może służyć do stosowania zmian w bazie danych lub projekcie. Porównanie schematów może również wygenerować skrypt wdrożenia, który po uruchomieniu skutecznie stosuje zmiany do bazy danych.

Dowiedz się więcej na temat porównywania schematów w przeglądzie porównania schematów.

Wdrażanie raportu: przeglądanie zmian

Wdrażanie raportów wymaga SqlPackage CLI.

dotnet tool install -g Microsoft.SqlPackage

Podsumowanie

Raport wdrażania zawiera podsumowanie zmian wymaganych do zaktualizowania bazy danych w celu dopasowania do projektu. Interfejs wiersza polecenia sqlPackage generuje raport wdrażania , porównując model źródłowy (.dacpac artefakt kompilacji projektu SQL lub bazę danych) z docelową bazą danych. Na przykład następujące polecenie generuje raport wdrażania dla bazy danych o nazwie MyDatabase z projektu SQL o nazwie MyProject.

dotnet build MyProject.sqlproj
sqlpackage /Action:deployreport /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /OutputPath:deployreport.xml

Wygenerowany kod XML jest uproszczoną formą planu wdrożenia, podsumowując operacje, które byłyby wykonywane w przypadku uruchomienia wdrożenia bazy danych. Poniższa lista operacji nie jest wyczerpująca:

  • Create
  • Alter
  • Drop
  • Refresh
  • UnbindSchemaBinding
  • UnbindFulltextIndex
  • TableDataMotion
  • SPRename
  • EnableChangeTrackingDatabase
  • DisableChangeTrackingDatabase

Raport wdrażania można przejrzeć w edytorze tekstów lub w programie Visual Studio i wyglądać podobnie do następującego:

<?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>

Raport wdrażania może służyć do przeglądania zmian, a także monitorowania pod kątem potencjalnie wysokiego wpływu zdarzeń, takich jak ruch danych lub tworzenie/upuszczanie indeksu klastrowanego. Te zdarzenia zostaną wymienione w raporcie wdrożenia pod elementem Alerts.

Zaletą operacji deploy report XML jest to, że może służyć do automatyzowania przeglądu zmian wymaganych do zaktualizowania bazy danych. Kod XML może być analizowany i używany do generowania raportu lub wyzwalania alertów na podstawie wymienionych operacji lub nazw obiektów.

Importowanie zmian z bazy danych

Jak wspomniano w sekcji porównanie schematów, porównanie schematów może służyć do stosowania zmian z bazy danych do zestawu plików projektu SQL. Stosowanie zmian w projekcie SQL jest typowym scenariuszem, w którym baza danych jest aktywnie opracowywana bezpośrednio, a projekt SQL służy do zarządzania obiektami bazy danych w kontroli źródła. Ręczne ukończenie tej operacji za pomocą programu Visual Studio lub usługi Azure Data Studio może być czasochłonne, zwłaszcza gdy baza danych ma wiele obiektów lub sporadycznych zmian. W tej sekcji dowiesz się, jak zautomatyzować wyodrębnianie definicji obiektów z bazy danych do zestawu plików projektu SQL.

Wymagania wstępne

Korzystając z automatyzacji, używamy interfejsu wiersza polecenia SqlPackage do wyodrębniania definicji obiektów z bazy danych do zestawu plików projektu SQL. Szablony .NET Microsoft.Build.Sql.Templates służą do tworzenia pliku projektu SQL, czyli opcjonalnego kroku.

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

Podsumowanie

Polecenie SqlPackage extract pobiera źródłową bazę danych i generuje model wyjściowej bazy danych jako .dacpac plik lub zestaw skryptów SQL. Domyślnie pakiet SqlPackage generuje .dacpac plik, ale /p:ExtractTarget= właściwość może służyć do określania zestawu skryptów SQL. Następujące polecenie wyodrębnia bazę danych MyDatabase do pliku projektu SQL ustawionego w folderze MyDatabaseProject:

sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

Gdy folder jest pod kontrolą źródła, wyodrębnione definicje obiektów będą pokazywać różnice w narzędziach kontroli źródła. Używając pakietu SqlPackage do generowania plików i sprawdzania różnic w kontroli źródła, można zautomatyzować proces importowania zmian z bazy danych do zestawu plików projektu SQL.

W serii trzech poleceń możemy usunąć poprzedni zestaw plików, wyodrębnić bazę danych i sprawdzić różnice w narzędziu kontroli źródła:

rm -rf MyDatabaseProject
sqlpackage /Action:Extract /SourceConnectionString:{connection string for MyDatabase} /TargetFile:MyDatabaseProject /p:ExtractTarget=SchemaObjectType
git status --porcelain | wc -l

Nasze dane wyjściowe to liczba plików, które zostały zmienione przez najnowszy wyodrębnienie sqlPackage. Dane wyjściowe polecenia git status mogą służyć do wyzwalania innych kroków automatyzacji. Jeśli chcemy użyć tego zestawu plików jako projektu SQL, możemy użyć szablonów .NET Microsoft.Build.Sql.Templates do utworzenia pliku projektu SQL w folderze MyDatabaseProject:

dotnet new sqlproj -n MyDatabaseProject -o MyDatabaseProject

Przegląd skryptów wdrożeniowych T-SQL

Jak wspomniano w sekcji porównanie schematów, porównanie schematów może służyć do generowania skryptów języka T-SQL niezbędnych do zaktualizowania bazy danych w celu dopasowania ich do projektu SQL. W tej sekcji przeanalizujemy, jak zautomatyzować generowanie skryptów T-SQL za pomocą pakietu SqlPackage, które są niezbędne do zaktualizowania bazy danych, tak aby pasowały do projektu SQL, i aby można je było przechowywać jako artefakt potoku do przeglądania i zatwierdzenia.

Wymagania wstępne

dotnet tool install -g Microsoft.SqlPackage

Podsumowanie

Uruchomienie wdrożenia projektu SQL za pomocą pakietu SqlPackage używa akcji publikowania , ale jeśli chcemy przejrzeć wykonywane skrypty języka T-SQL, możemy użyć akcji skryptu . Następujące polecenie generuje skrypty T-SQL niezbędne do zaktualizowania bazy danych o nazwie MyDatabase, aby dopasować ją do projektu SQL o nazwie MyProject.

dotnet build MyProject.sqlproj
sqlpackage /Action:Script /SourceFile:bin/Debug/MyProject.dacpac /TargetConnectionString:{connection string for MyDatabase} /DeployScriptPath:Deployment.sql