Aracılığıyla paylaş


Veritabanı başvurularına genel bakış

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıMicrosoft Fabric'de Azure SQL Yönetilen ÖrneğiSQL veritabanı

SQL projelerindeki veritabanı başvuruları, başka bir projeye, .dacpac dosyaya veya yayımlanmış NuGet paketine bağlanarak projeye dahil olmayan nesneleri birleştirmenizi sağlar. Bir projeye eklenen veritabanı nesneleri aynı veritabanının parçası, aynı sunucudaki farklı bir veritabanı veya farklı bir sunucudaki farklı bir veritabanı olabilir. SQL Server geliştirmesi için veritabanı başvuruları, üç bölümlü adlandırma için aynı sunucudaki başka bir veritabanına bağlanmak veya veritabanları arası sorgular için farklı bir sunucudaki farklı bir veritabanına bağlanmak için kullanılabilir. Farklı gruplarda çok sayıda nesne içeren veritabanları için veritabanı başvuruları, veritabanını daha küçük, daha yönetilebilir projelere bölmek için kullanılabilir. Daha küçük proje boyutu, performansı artırmaya ve yinelemeli yerel geliştirme sırasında proje oluşturmak için gereken süreyi azaltmaya yardımcı olabilir.

Dacpac, nuget paketi ve veritabanı başvuruları için bir proje içeren SQL projesi örneğinin ekran görüntüsü.

Uyarı

Proje başvuruları ve NuGet paket başvuruları, yeni geliştirme aşamasında veritabanı başvuruları için önerilen yöntemlerdir. NuGet paketlerine başvurmak özgün SQL projeleri tarafından desteklenmez.

SQL proje dosyası örneği ve söz dizimi

Veritabanı başvuruları, C# projelerine benzer şekilde dosyadaki .sqlproj girdiler aracılığıyla projeye dahil edilir. Veritabanı başvurusu aynı sunucudaki farklı bir veritabanına olduğunda, proje başvurusuna bir <DatabaseSqlCmdVariable> öğe eklenir. Veritabanı başvurusu farklı bir sunucudaki farklı bir veritabanına olduğunda, <ServerSqlCmdVariable> bir öğe de proje başvurusuna eklenir. Aynı veritabanına yapılan veritabanı başvuruları <ServerSqlCmdVariable> veya <DatabaseSqlCmdVariable> öğelerini içermez.

SQL betiklerinde belirli bir veritabanı referansını dahil ederken, proje dosyasında adı geçen SQLCMD değişkenlerini kullanarak veritabanı adını belirtin. Örneğin, aşağıdaki SQL betiği veritabanındaki bir tabloya Warehouse başvurur:

SELECT ProductId, StorageLocation, BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory]

SQLCMD değişkenine $(Warehouse) karşılık gelen bir veritabanı başvurusu proje dosyasına eklenir ve içerir <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>.

Proje referansları

Bu örnekte, aynı veritabanının parçası olan bir SQL projesine proje AdventureWorksSalesLT.sqlproj başvurusu eklenir.

  <ItemGroup>
    <ProjectReference Include="..\AdventureWorks\AdventureWorksSalesLT.sqlproj">
      <Name>AdventureWorksSalesLT</Name>
      <Project>{d703fc7a-bc47-4aef-9dc5-cf01094ddb37}</Project>
      <Private>True</Private>
      <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
    </ProjectReference>
  </ItemGroup>

Dacpac paket başvuruları

SQL projelerindeki paket başvuruları hakkında daha fazla bilgiyi SQL projeleri paket başvuruları makalesinde bulabilirsiniz.

SQL 2022 sistem veritabanına yönelik bir paket başvurusu, master aşağıdaki örnekte gösterilmiştir:

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
  </ItemGroup>

Dacpac artifakt referansları

Doğrudan yapıt .dacpac dosyasına başvurular, SDK stilindeki projelerde yeni geliştirme için önerilmez. Bunun yerine NuGet paket başvurularını kullanın.

Özgün SQL projelerinde .dacpac dosya referansları, .sqlproj dosyada <ArtifactReference> öğesi ile belirtilir. Aşağıdaki örnek, aynı sunucudaki farklı bir projedeki .dacpac dosyasına bir yapıt başvurusu gösterir: .dacpac

  <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>

Proje referansları ekleme ve kullanma

Proje referansı ekleyin

Visual Studio'da bir SQL projesine proje başvurusu eklemek için, Çözüm Gezgini'nde projenin altındaki Başvurular düğümüne sağ tıklayın ve Veritabanı Başvurusu Ekle'yi seçin.

Veritabanı başvuruları için Visual Studio iletişim kutusunun ekran görüntüsü.

Veritabanı Başvurusu Ekle iletişim kutusu, aşağıdakilere başvuru eklemek için seçenekler sunar:

  • aynı çözümden bir SQL projesi
  • bir sistem veritabanı (Visual Studio'ya otomatik olarak eklenen dosyalardan .dacpac )
  • yerel dosya sistemindeki herhangi bir veri katmanı uygulaması (.dacpac) dosyası

Diyalog kutusu, aşağıdaki başvuru konumlarından seçim yapmak için bir açılır liste de sağlar.

  • aynı veritabanı
  • farklı veritabanı, aynı sunucu
  • farklı veritabanı, farklı sunucu

SQL projesine bir proje referansı eklemek için, her veritabanı referansı için uygun bir referans öğesiyle birlikte <ItemGroup> öğesini .sqlproj dosyasına ekleyin. Örneğin, farklı bir sunucudaki farklı bir veritabanındaki WorldWideImporters projesine başvurmak için, SQL projesine aşağıdaki proje başvurusu eklenir:

  <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>

Proje başvurusu, SQL projesindeki örnek görünüm tanımında kullanılır:

CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]

SQL Veritabanı Projeleri uzantısında bir SQL projesine veritabanı başvurusu eklemek için, Veritabanı Projeleri görünümünde projenin altındaki Veritabanı Başvuruları düğümüne sağ tıklayın ve Veritabanı Başvurusu Ekle'yi seçin.

Azure Data Studio referans ekle iletişim kutusunun ekran görüntüsü.

Kullanılabilir başvuru türleri şunlardır:

  • sistem veritabanı
  • veri katmanı uygulaması (.dacpac)
  • yayımlanan veri katmanı uygulaması (.nupkg)
  • proje

Uzantı ayrıca aşağıdaki başvuru konumlarından seçim yapmak ister:

  • aynı veritabanı
  • farklı veritabanı, aynı sunucu
  • farklı veritabanı, farklı sunucu

SQL projesine bir proje başvurusu eklemek için, her veritabanı başvurusu için uygun başvuru öğesini içeren bir <ItemGroup> öğesini .sqlproj dosyasına ekleyin. Örneğin, farklı bir sunucudaki farklı bir veritabanındaki WorldWideImporters projesine başvurmak amacıyla bir SQL projesine aşağıdaki proje referansı eklenir:

  <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>

Proje başvurusu, SQL projesindeki örnek görünüm tanımında kullanılır:

CREATE VIEW dbo.WorldWide_Products
AS
SELECT ProductID, ProductName, SupplierID
FROM [$(WWIServer)].[$(WorldWideImporters)].[Purchasing].[Suppliers]

Proje referansları ile derleme

Veritabanı başvuruları içeren bir SQL projesi oluşturmak, başvurulan nesnelerin derleme işlemi sırasında kullanılabilir olduğundan emin olmak için ek yapılandırma gerektirebilir. Örneğin, bir proje sürekli tümleştirme (CI) işlem hattında derleniyorsa, derleme aracısı ortamının yerel geliştirme ortamına benzer şekilde ayarlanması gerekir.

  • .dacpac SQL projesindeki .dacpac başvurular, derleme aracısında proje dosyasında belirtilen göreli dosya yolunda bulunmalıdır.
  • SQL projesindeki proje başvuruları, başvuruda bulunılan projenin derleme aracısında proje dosyasında belirtilen göreli dosya yolunda bulunması ve derleme aracısında başarıyla derlenebilmesini gerektirir.
  • Visual Studio'daki özgün SQL projelerinde oluşturulan sistem veritabanı başvuruları, derleme aracısının Visual Studio'yu yüklemiş olmasını gerektirir.
  • SQL projesindeki NuGet paket başvuruları, paketin derleme aracısı için paket kaynağı olarak da ayarlanmış bir NuGet akışında yayımlanmasını gerektirir.

Proje referansları ile yayımlama

.dacpac Veritabanı referansları içeren bir proje üzerinden oluşturulanı yayımlamak için ek bir adım gerektirmez. Dosya, .dacpac başvuruda bulunılan nesneleri ve proje dosyasında belirtilen SQLCMD değişkenlerini içerir.

Aynı veritabanındaki nesnelere yapılan veritabanı başvuruları için, başvurulan projedeki nesneler dosyaya .dacpac eklenir, ancak varsayılan olarak dağıtıma dahil değildir. Nesneleri dağıtıma eklemek için SqlPackage komut satırı aracındaki seçeneğini kullanın /p:IncludeCompositeObjects=true . Örneğin, aşağıdaki komut, AdventureWorks veritabanı başvurularından nesneleri içermek üzere seçenek /p:IncludeCompositeObjects=true ile AdventureWorks projesini dağıtır.

sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /p:IncludeCompositeObjects=true

Farklı veritabanına (aynı veya farklı sunucuda) veritabanı başvuruları içeren bir .dacpac dosya dağıttığınızda, proje dosyasında belirtilen SQLCMD değişkenleri hedef ortam için doğru değerlere ayarlanmalıdır. Dağıtım sırasında SQLCMD değişken değerlerinin ayarlanması, SqlPackage komut satırı aracındaki seçenekle /v yapılır. Örneğin, aşağıdaki komut WorldWideImporters değişkenini WorldWideImporters değerine ve WWIServer değişkenini localhost değerine ayarlar.

sqlpackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:WorldWideImporters=WorldWideImporters /v:WWIServer=localhost