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
Odwołania do bazy danych w projektach SQL umożliwiają dołączanie obiektów, które nie są zawarte w projekcie, łącząc się z innym projektem, .dacpac
plikiem lub opublikowanym pakietem NuGet. Obiekty bazy danych dodane do projektu mogą być częścią tej samej bazy danych, innej bazy danych na tym samym serwerze lub innej bazy danych na innym serwerze. W przypadku programowania w programie SQL Server odwołania do bazy danych mogą służyć do łączenia z inną bazą danych na tym samym serwerze na potrzeby nazewnictwa trzyczęściowego lub do łączenia z inną bazą danych na innym serwerze na potrzeby zapytań obejmujących wiele baz danych. W przypadku baz danych z dużą liczbą obiektów w różnych grupach odwołania do baz danych mogą służyć do podziału bazy danych na mniejsze, bardziej zarządzane projekty. Mniejszy rozmiar projektu może pomóc zwiększyć wydajność i skrócić czas wymagany do utworzenia projektu podczas iteracyjnego programowania lokalnego.
Uwaga / Notatka
Odwołania do projektu i odwołania do pakietu NuGet to zalecane metody odwołań do bazy danych w nowym środowisku programistycznym. Odwoływanie się do pakietów NuGet nie jest obsługiwane przez oryginalne projekty SQL.
Przykład i składnia pliku projektu SQL
Odwołania do bazy danych są zawarte w projekcie za pośrednictwem wpisów w .sqlproj
pliku, podobnie jak w projektach języka C#. Jeśli odwołanie do bazy danych dotyczy innej bazy danych na tym samym serwerze, <DatabaseSqlCmdVariable>
element jest uwzględniony w odwołaniu do projektu. Jeśli odwołanie do bazy danych dotyczy innej bazy danych na innym serwerze, <ServerSqlCmdVariable>
element jest również uwzględniony w dokumentacji projektu. Odwołania do tej samej bazy danych nie zawierają elementów <ServerSqlCmdVariable>
ani <DatabaseSqlCmdVariable>
.
Dołączenie konkretnego odwołania do odwołania do bazy danych w skryptach SQL używa zmiennych SQLCMD o nazwie w pliku projektu w celu określenia nazwy bazy danych. Na przykład następujący skrypt SQL odwołuje się do tabeli w Warehouse
bazie danych:
SELECT ProductId, StorageLocation, BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory]
Odwołanie do bazy danych odpowiadające zmiennej $(Warehouse)
SQLCMD znajduje się w pliku projektu i zawiera <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>
element .
Referencje projektowe
W tym przykładzie odwołanie do projektu SQL jest dodawane do projektu AdventureWorksSalesLT.sqlproj
SQL, który jest częścią tej samej bazy danych.
<ItemGroup>
<ProjectReference Include="..\AdventureWorks\AdventureWorksSalesLT.sqlproj">
<Name>AdventureWorksSalesLT</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<Private>True</Private>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
</ProjectReference>
</ItemGroup>
Odwołania do pakietu Dacpac
Więcej informacji na temat odwołań do pakietów w projektach SQL można znaleźć w artykule Dotyczącym pakietów projektów SQL .
W poniższym przykładzie pokazano odwołanie do pakietu systemowej master
bazy danych dla programu SQL 2022:
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
</ItemGroup>
Odwołania do artefaktu Dacpac
Odwołania do pliku artefaktu .dacpac
bezpośrednio nie są zalecane w przypadku tworzenia nowych projektów w stylu zestawu SDK. Zamiast tego użyj odwołań pakietów NuGet.
W oryginalnych projektach .dacpac
SQL odwołania do plików są określone w .sqlproj
pliku z elementem <ArtifactReference>
. W poniższym przykładzie przedstawiono .dacpac
odwołanie artefaktu do .dacpac
pliku w innym projekcie na tym samym serwerze:
<ItemGroup>
<ArtifactReference Include="..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac">
<HintPath>..\AdventureWorks\Warehouse\bin\Release\Warehouse.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>
</ArtifactReference>
</ItemGroup>
Dodawanie odwołań do projektu i korzystanie z nich
Dodawanie odwołania do projektu
Aby dodać odwołanie do projektu SQL w programie Visual Studio, kliknij prawym przyciskiem myszy węzeł Odwołania w projekcie w Eksploratorze rozwiązań i wybierz polecenie Dodaj odwołanie do bazy danych.
Okno dialogowe Dodawanie odwołania do bazy danych zawiera opcje dodawania odwołania do:
- projekt SQL z tego samego rozwiązania
- systemowa baza danych (z
.dacpac
plików automatycznie dołączonych do programu Visual Studio) - dowolny plik aplikacji warstwy danych (
.dacpac
) w lokalnym systemie plików
Okno dialogowe zawiera również listę rozwijaną do wybrania z następujących lokalizacji referencyjnych:
- ta sama baza danych
- inna baza danych, ten sam serwer
- różne bazy danych, inny serwer
Aby dodać odwołanie do projektu SQL, dodaj element <ItemGroup>
do pliku .sqlproj
z odpowiednim elementem dla każdego odwołania do bazy danych. Na przykład do projektu SQL dodawane jest następujące odwołanie, aby odwołać się do projektu WorldWideImporters
w innej bazie danych na innym serwerze.
<ItemGroup>
<ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
<Name>WorldWideImporters</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
<DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
</ProjectReference>
</ItemGroup>
Odwołanie do projektu jest używane w przykładowej definicji widoku w projekcie SQL:
CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]
Aby dodać odwołanie do bazy danych do projektu SQL w rozszerzeniu Projekty usługi SQL Database, kliknij prawym przyciskiem myszy węzeł Odwołania do bazy danych w projekcie w widoku Projekty bazy danych i wybierz polecenie Dodaj odwołanie do bazy danych.
Dostępne typy referencyjne to:
- systemowa baza danych
- aplikacja warstwy danych (
.dacpac
) - opublikowana aplikacja warstwy danych (
.nupkg
) - projekt
Rozszerzenie wyświetla również monit o wybranie z następujących lokalizacji referencyjnych:
- ta sama baza danych
- inna baza danych, ten sam serwer
- różne bazy danych, inny serwer
Aby dodać referencję projektu do projektu SQL, dodaj <ItemGroup>
element do .sqlproj
pliku z odpowiednim elementem referencyjnym dla każdej odwołania do bazy danych. Na przykład, następujące odwołanie do projektu jest dodawane do projektu SQL, aby odwołać się do projektu WorldWideImporters
w innej bazie danych na innym serwerze.
<ItemGroup>
<ProjectReference Include="..\Contoso\WorldWideImporters.sqlproj">
<Name>WorldWideImporters</Name>
<Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<ServerSqlCmdVariable>WWIServer</ServerSqlCmdVariable>
<DatabaseSqlCmdVariable>WorldWideImporters</DatabaseSqlCmdVariable>
</ProjectReference>
</ItemGroup>
Odwołanie do projektu jest używane w przykładowej definicji widoku w projekcie SQL:
CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]
Budowanie przy użyciu odwołań do projektu
Kompilowanie projektu SQL z odwołaniami do bazy danych może wymagać dodatkowej konfiguracji, aby upewnić się, że obiekty, do których odwołuje się odwołanie, są dostępne podczas procesu kompilacji. Jeśli na przykład projekt jest kompilowany w potoku ciągłej integracji, środowisko agenta kompilacji musi być skonfigurowane podobnie do lokalnego środowiska projektowego.
-
.dacpac
odwołania w projekcie SQL wymagają obecności.dacpac
agenta kompilacji w tej samej względnej ścieżce pliku, co określona w pliku projektu. - odwołania do projektu SQL wymagają, aby przywołyny projekt był obecny na agencie kompilacji w tej samej względnej ścieżce pliku, co określono w pliku projektu i móc pomyślnie skompilować go na agencie kompilacji.
- odwołania do systemowej bazy danych utworzone w oryginalnych projektach SQL w programie Visual Studio wymagają zainstalowania agenta kompilacji programu Visual Studio.
- Odwołania do pakietu NuGet w projekcie SQL wymagają opublikowania pakietu w repozytorium NuGet, które jest również ustawione jako źródło pakietu dla agenta kompilacji.
Publikowanie przy użyciu odwołań do projektu
Publikowanie projektu utworzonego na podstawie .dacpac
z referencjami do bazy danych nie wymaga dodatkowych kroków. Plik .dacpac
zawiera przywołyne obiekty i zmienne SQLCMD określone w pliku projektu.
W przypadku odwołań bazy danych do obiektów w tej samej bazie danych obiekty z projektu, do których odwołuje się projekt, są uwzględniane w .dacpac
pliku, ale nie są domyślnie uwzględniane we wdrożeniu. Aby uwzględnić obiekty we wdrożeniu, użyj /p:IncludeCompositeObjects=true
opcji w narzędziu wiersza polecenia SqlPackage. Na przykład następujące polecenie wdraża AdventureWorks
projekt z opcją /p:IncludeCompositeObjects=true
dołączania obiektów z odniesień do bazy danych AdventureWorks.
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /p:IncludeCompositeObjects=true
Podczas wdrażania .dacpac
pliku z odwołaniami bazy danych do innej bazy danych (na tym samym lub innym serwerze) zmienne SQLCMD określone w pliku projektu muszą być ustawione na prawidłowe wartości dla środowiska docelowego. Ustawienie wartości zmiennych SQLCMD podczas wdrażania odbywa się przy użyciu /v
opcji w narzędziu wiersza polecenia SqlPackage . Na przykład następujące polecenie ustawia zmienną WorldWideImporters
na WorldWideImporters
, a zmienną WWIServer
na localhost
:
sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:WorldWideImporters=WorldWideImporters /v:WWIServer=localhost