Udostępnij za pomocą


Systemowe obiekty w projektach SQL

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Projekty SQL weryfikują odwołania do obiektów bazy danych podczas procesu kompilacji projektu. Domyślnie projekty SQL nie zawierają obiektów systemowych w modelu bazy danych, co może prowadzić do błędów walidacji, jeśli projekt zawiera odwołania do obiektów systemowych. Aby rozwiązać te błędy walidacji, należy dołączyć odwołanie do master.dacpac bazy danych dla platformy docelowej projektu.

Odwołanie master.dacpac do bazy danych można dodać jako odwołanie do pakietu w projektach SQL opartych na Microsoft.Build.Sql SDK lub jako odwołanie do artefaktu zarówno w projektach opartych na SDK, jak i w oryginalnych projektach SQL.

Dodawanie odwołania do pakietu

Dostępne pakiety systemowych baz danych to:

Najbardziej bezpośrednią metodą dodawania odwołania do pakietu do projektu SQL jest użycie interfejsu wiersza polecenia (CLI) platformy .NET. W poniższym przykładzie dodano odwołanie pakietu do systemowej bazy danych Azure SQL Database master w projekcie SQL.

dotnet add <path-to-sqlproj> package Microsoft.SqlServer.Dacpacs.Azure.Master

To polecenie dodaje następujący wpis do .sqlproj pliku (wersja pakietu będzie odzwierciedlać najnowszą wersję dostępną w momencie uruchomienia polecenia):

...
    <ItemGroup>
        <PackageReference Include="Microsoft.SqlServer.Dacpacs.Azure.Master" Version="170.0.1" />
    </ItemGroup>
</Project>

Dodawanie odwołania do artefaktu

Interfejsy projektów VS Code i Visual Studio SQL udostępniają metodę dodawania odniesienia artefaktu do pliku master.dacpac dla docelowej platformy projektu.

Wprowadzone zmiany w pliku .sqlproj będą wyglądać podobnie do poniższego przykładu, który dodaje odniesienie do artefaktu w systemowej bazie danych Azure SQL Database master w programie Visual Studio.

<ItemGroup>
    <ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\AzureV12\SqlSchemas\master.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\AzureV12\SqlSchemas\master.dacpac</HintPath>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
    </ArtifactReference>
  </ItemGroup>

Pliki master.dacpac są przywoływane z lokalizacji instalacji aplikacji, co może być niestabilne dla niektórych systemów CI/CD (ciągłej integracji i ciągłego wdrażania). Plik master.dacpac można skopiować do lokalizacji w rozwiązaniu i zaktualizować atrybuty Include oraz HintPath, aby wskazywały na tę lokalizację, jeśli system kompilacji nie zawiera systemowych plików bazy danych.

Baza danych SQL w systemie Fabric

Baza danych SQL w obiektach systemowych Fabric jest zawarta w Microsoft.SqlServer.Dacpacs.DbFabric pakiecie, ale może być wymagane wykonanie dodatkowych kroków w celu poprawnego skonfigurowania odwołania do bazy danych SQL w środowisku Fabric.

Projekt SQL utworzony za pomocą zintegrowanej kontroli źródła w usłudze Fabric zawiera odwołanie do pakietu i właściwość ustawioną DatabaseVariableLiteralValue na masterwartość . Ta właściwość jest wymagana, ponieważ baza danych SQL w sieci szkieletowej nie zapewnia dostępu do master bazy danych, ale w bazie danych użytkownika można odwoływać się do tych samych obiektów systemowych.

Jeśli tworzysz nowy projekt SQL w Visual Studio lub VS Code, musisz zaktualizować właściwość DatabaseVariableLiteralValue, aby master zgadzała się z nazwą bazy danych używaną w bazie danych SQL w środowisku Fabric.

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.DbFabric">
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
      <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
      <Version>170.0.0</Version>
    </PackageReference>
  </ItemGroup>