Udostępnij za pośrednictwem


Omówienie odwołań do bazy danych

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL 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.

Zrzut ekranu przedstawiający przykładowy projekt SQL odwołujący się do pakietu dacpac, pakietu nuget i projektu odwołań do bazy danych.

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.

Zrzut ekranu przedstawiający okno dialogowe Programu Visual Studio dla odwołań 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.

Zrzut ekranu przedstawiający okno dialogowe dodawania odwołania w narzędziu Azure Data Studio.

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