Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
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ş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.
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