Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje bazy danych
SQL Sql Azure SQL
Database w
usłudze Microsoft Fabric
Projekt bazy danych SQL to lokalna reprezentacja obiektów SQL, które składają się na schemat pojedynczej bazy danych, takich jak tabele, procedury składowane lub funkcje. Cykl programowania projektu bazy danych SQL umożliwia zintegrowanie programowania bazy danych z przepływami pracy ciągłej integracji i ciągłego wdrażania (CI/CD) znanymi jako najlepsze rozwiązanie programistyczne.
Overview
Projekty SQL są oparte na deklaratywnych instrukcjach języka T-SQL. W kodzie projektu bazy danych SQL każdy obiekt jest tworzony raz. Jeśli musisz zmienić coś o tym obiekcie, na przykład dodać kolumny lub zmienić typ danych, zmodyfikujesz pojedynczy plik, który deklaruje obiekt po raz pierwszy i tylko raz.
Po utworzeniu projektu bazy danych SQL artefakt wyjściowy jest plikiem .dacpac. Nowe i istniejące bazy danych można zaktualizować tak, aby były zgodne z zawartością .dacpac, publikując .dacpac w docelowej bazie danych.
Struktura projektów bazy danych SQL organizuje Twój kod bazy danych, dodając do tego zestawu plików dwie podstawowe możliwości w procesie kompilacji:
- sprawdzanie poprawności odwołań między obiektami i składnią względem określonej wersji języka SQL
- wdrożenie artefaktu kompilacji do nowych lub istniejących baz danych
Funkcjonalność projektów bazy danych SQL jest udostępniana przez bibliotekę Microsoft.SqlServer.DacFx .NET i jest udostępniana w kilku narzędziach do programowania SQL. DacFx ma wiele punktów rozszerzalności, takich jak modyfikacja kroków wdrażania i możliwość tworzenia niestandardowych reguł na potrzeby analizy kodu. Zestaw SDK dla projektów SQL to Microsoft.Build.Sql, zalecany do nowego rozwoju, i jest formatem używanym przez rozszerzenie SQL Database Projects w Azure Data Studio i VS Code. Obsługa projektów SQL w stylu zestawu SDK w programie Visual Studio jest dostępna w wersji zapoznawczej.
Validation
Po skompilowanym projekcie SQL relacje między obiektami są weryfikowane. Na przykład definicja widoku nie może zawierać tabeli ani kolumn, które nie istnieją w projekcie SQL.
Ponadto projekt SQL zawiera właściwość w pliku .sqlproj o nazwie "platforma docelowa". Te informacje są używane podczas procesu kompilacji w celu sprawdzenia, czy funkcje i składnia języka T-SQL istnieją w tej wersji języka SQL. Na przykład funkcje JSON dodane w programie SQL Server 2022 nie mogą być używane w projekcie SQL ustawionym na platformę docelową Sql140 (SQL Server 2017).
Aby skompilować projekt SQL, uruchomimy kompilację dotnet z wiersza polecenia. W narzędziach graficznych obsługujących projekty SQL (Azure Data Studio, VS Code i Visual Studio) istnieje element menu umożliwiający skompilowanie projektu SQL.
Dane wyjściowe konsoli procesu kompilacji mogą zawierać błędy (niepowodzenie kompilacji) lub ostrzeżenia. Ostrzeżenia kompilacji mogą zawierać niespójne wielkości liter w nazwach obiektów i inne dostosowywalne najlepsze praktyki, ale nie powodują niepowodzenia kompilacji.
Wynik procesu kompilacji to artefakt w postaci pliku .dacpac, który można znaleźć dla kompilacji z domyślnymi ustawieniami w folderze bin/Debug.
Deployment
Plik wyjściowy, .dacpac, jest zaawansowanym, wielokrotnego użytku i deklaratywnym artefaktem. Za pomocą tego pliku możemy użyć SqlPackage lub innych narzędzi , aby zastosować nasz kod bazy danych do bazy danych. Polecenie SqlPackage służące do wdrażania .dacpac to polecenie publikowania.
Na przykład sqlpackage /Action:Publish /SourceFile:yourfile.dacpac /TargetConnectionString:{yourconnectionstring}.
Nowe bazy danych
Pakiet SqlPackage umożliwia nawigowanie po relacjach obiektów w celu utworzenia każdego obiektu w odpowiedniej kolejności podczas publikowania pakietu dacpac w nowej bazie danych. Na przykład pakiet SqlPackage tworzy Table_A przed Table_B, gdy Table_B ma klucz obcy do Table_A.
Nie chcesz wykonywać całego folderu skryptów SQL, szczególnie wtedy, gdy można używać projektów SQL, które automatycznie wykonują każdą sekcję języka T-SQL w odpowiedniej kolejności na podstawie relacji obiektów.
Istniejące bazy danych
Oprócz nawigowania w hierarchii obiektów podczas publikowania w nowych bazach danych proces publikowania .dacpac oblicza również różnicę między .dacpac źródłowym a docelową bazą danych przed określeniem, jakie kroki należy wykonać w celu zaktualizowania tej bazy danych. Jeśli na przykład w Table_C brakuje dwóch kolumn, które ma w projekcie SQL, i jeśli StoredProcedure_A została zmieniona, pakiet SqlPackage tworzy instrukcję ALTER TABLE oraz ALTER PROCEDURE, zamiast bez zastanowienia próbować utworzyć wiele obiektów.
Elastyczność zapewniana przez polecenie publikowania w istniejących bazach danych nie jest ograniczona do pojedynczej bazy danych. Jeden .dacpac można wdrożyć wiele razy, na przykład podczas uaktualniania floty setek baz danych.
Kiedy należy używać
Projekty baz danych SQL doskonale nadają się do zespołów, które chcą zintegrować rozwój baz danych z procesem CI/CD. Deklaratywny charakter projektów SQL umożliwia pojedyncze źródło prawdy dla schematu bazy danych, a proces kompilacji i publikowania zapewnia powtarzalny i niezawodny sposób wdrażania zmian w bazach danych.
Projekty bazy danych SQL służą do weryfikacji zgodności z prawdą dla stanu bazy danych, w tym rozwoju przy użyciu mapera obiektowo-relacyjnego (ORM), takiego jak EF Core. Narzędzie graficzne lub wiersz polecenia może służyć do wyodrębniania schematu bazy danych do projektu SQL, niezależnie od orm używanego do utworzenia bazy danych.
Projekty bazy danych SQL obsługują program SQL Server i rodzinę baz danych Azure SQL, w tym usługi Azure SQL Database i Azure Synapse Analytics. Niezależnie od tego, czy tworzysz aplikację, czy magazyn danych, projekty bazy danych SQL mogą służyć do zarządzania schematem bazy danych. Projekty SQL można opracowywać na podstawie narzędzi w programach Visual Studio, VS Code i Azure Data Studio.
Oryginalne projekty a projekty w stylu zestawu SDK
Format projektu w stylu SDK Microsoft.Build.Sql bazuje na nowych projektach w stylu SDK wprowadzonych w .NET Core i jest formatem używanym przez rozszerzenie SQL Database Projects dla VS Code oraz z zintegrowaną kontrolą źródła przetwarzania SQL Database w Fabric. Projekty Microsoft.Build.Sql zastępują oryginalny format projektu SQL oparty na programie MSBuild (.NET Framework).
Uwaga / Notatka
Program Visual Studio 2026 obsługuje tylko oryginalny format projektu SQL. Projekty SQL w stylu zestawu SDK są dostępne w wersji zapoznawczej w programie Visual Studio 2022 i są ogólnie dostępne w programie VS Code. Dowiedz się więcej o narzędziach projektów SQL.
Nowe prace programistyczne powinny rozważyć użycie projektów Microsoft.Build.Sql, ponieważ projekty w stylu zestawu SDK są formatem, który będzie obsługiwany w przyszłości. Format projektu w stylu zestawu SDK jest bardziej elastyczny i zawiera nowe funkcje niedostępne w oryginalnych projektach SQL:
- Obsługa platformy .NET 8+ (międzyplatformowa)
- Pakiet NuGet zawiera odwołania przeznaczone do odwołań do bazy danych.
- Domyślny wzorzec globbingu dla plików .sql w projekcie
Projekty w stylu SDK mają bardziej rozbudowany zestaw funkcji niż oryginalne projekty SQL, a można przekonwertować istniejące projekty SQL na projekty w stylu SDK za pomocą modyfikacji pliku projektu.
Wyjątkiem od pokrycia funkcjonalności jest obsługa obiektów SQLCLR, które są obsługiwane zarówno w oryginalnych, jak i w projektach SQL w stylu zestawu SDK, ale wymagają programu .NET Framework. Oryginalny projekt SQL zawierający obiekty SQLCLR można przekonwertować na projekt w stylu zestawu SDK, ale projekt wymaga programu .NET Framework zamiast platformy .NET dla kompilacji projektu. Po skompilowaniu projektu z obiektem SQLCLR można wdrożyć .dacpac za pomocą pakietu SqlPackage na platformie .NET i programie .NET Framework i można wykorzystać jako odwołanie .dacpac w projekcie (zarówno w tej samej bazie danych, jak i na tym samym serwerze w innej bazie danych).
Treści powiązane
- Project-Oriented tworzenie bazy danych w trybie offline
- rozszerzenie SQL Database Projects
- SqlPackage
- Przykładowe potoki CI/CD dla projektów SQL
- GitHub sql-action
- wdrożenia SQL Azure DevOps
- omówienie aplikacji warstwy danych (DAC)
- repozytorium opinii DacFx
- Rozpoczynanie pracy z projektami bazy danych SQL
- Samouczek: tworzenie i wdrażanie projektu SQL