Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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.
- SDK .NET 8
- SqlPackage interfejs wiersza poleceń
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.
- SDK .NET 8
- SqlPackage interfejs wiersza poleceń
- Szablony .NET Microsoft.Build.Sql.Templates
# 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
- SDK .NET 8
- SqlPackage interfejs wiersza poleceń
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