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.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL 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 eklediğiniz veritabanı nesneleri aynı veritabanının parçası, aynı sunucudaki farklı bir veritabanı veya farklı bir sunucudaki farklı bir veritabanı olabilir. SQL Server geliştirmesinde, üç parçalı adlandırma için aynı sunucudaki başka bir veritabanına ya da veritabanları arası sorgular için farklı bir sunucudaki başka bir veritabanına bağlanmak üzere veritabanı başvurularını kullanın. Farklı gruplarda çok sayıda nesne içeren veritabanlarında, veritabanını daha küçük, daha yönetilebilir projelere ayırmak için veritabanı başvurularını kullanın. 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.
Note
Yeni geliştirmede veritabanı başvuruları için proje başvurularını ve NuGet paket başvurularını kullanın. Özgün SQL projeleri NuGet paketlerine başvurmayı desteklemez.
SQL proje dosyası örneği ve söz dizimi
C# projelerine benzer şekilde dosyadaki .sqlproj girdiler aracılığıyla bir projeye veritabanı başvuruları ekleyin. SQL proje nesnelerinde veritabanı adına başvurmak için SQLCMD söz dizimini kullanın. Veritabanı başvurusu aynı sunucudaki farklı bir veritabanına işaret ettiğinde, proje başvurusuna bir <DatabaseSqlCmdVariable> öğe ekleyin. Veritabanı başvurusu farklı bir sunucudaki farklı bir veritabanına işaret ettiğinde, proje başvurusuna bir <ServerSqlCmdVariable> öğe de ekleyin. Aynı veritabanına yapılan veritabanı başvuruları <ServerSqlCmdVariable> veya <DatabaseSqlCmdVariable> öğelerini içermez.
SQL betiklerinde veritabanı referansına belirli bir başvuru eklemek için, veritabanı adını belirtmek üzere proje dosyasında adlandırılmış SQLCMD değişkenlerini kullanın. Örneğin, aşağıdaki SQL betiği veritabanındaki bir tabloya Warehouse başvurur:
SELECT ProductId,
StorageLocation,
BinNumber
FROM [$(Warehouse)].[Production].[ProductInventory];
Proje dosyası SQLCMD değişkenine $(Warehouse) karşılık gelen bir veritabanı başvurusu içerir ve içerir <DatabaseSqlCmdVariable>Warehouse</DatabaseSqlCmdVariable>.
Aynı veritabanındaki üç parçalı adlandırma
SQL projesindeki bir nesne aynı veritabanındaki başka bir nesneye başvurduğunda, nesneler bir veritabanı başvurusu aracılığıyla dahil olsa bile üç bölümlü adlandırma gerekli değildir. Ancak, SQL projeleri veritabanı adı için otomatik bir SQLCMD değişkeni içerir. Bu değişkeni SQL betiklerinde kullanarak adı sabit kodlamadan projenin veritabanına başvurabilirsiniz. Üç bölümlü adlandırma gerekiyorsa, veritabanına başvurmak için SQL betiklerinizde kullanın $(DatabaseName) . Örneğin, aşağıdaki SQL betiği projenin veritabanındaki bir tabloya başvurur:
UPDATE [$(DatabaseName)].[SalesLT].[Customer]
SET [SalesPerson] = 'John Doe',
[ModifiedDate] = GETDATE()
WHERE [CustomerId] = @CustomerId;
Veritabanı sabit değerleri
Bazı durumlarda, SQL nesnelerinizdeki bir veritabanı başvurusundaki veritabanı adı için değişmez (değişken olmayan) bir değer kullanmanız gerekebilir. Dosyayı SQLCMD değişkeni kullanmak yerine veritabanı adı için değişmez değer belirtecek şekilde yapılandırabilirsiniz .sqlproj . Değişmez değer belirtmek için kullanılan öğe <DatabaseLiteralValue>'dır. Bu ögeyi kullanırsanız, <DatabaseSqlCmdVariable> ögesini kullanmayın.
<DatabaseLiteralValue> öğesinin içinde, veritabanı adı için sabit değeri belirtirsiniz. Örneğin, <DatabaseVariableLiteralValue>WarehouseDB</DatabaseVariableLiteralValue> içeren bir veritabanı başvurusu, bir SQL betiğinde aşağıdaki gibi kullanılır:
SELECT ProductId,
StorageLocation,
BinNumber
FROM [WarehouseDB].[Production].[ProductInventory];
Proje referansları
Bu örnekte, aynı veritabanının parçası olan adlı AdventureWorksSalesLT.sqlproj bir SQL projesine proje başvurusu eklersiniz.
<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 bilgi için bkz. SQL projeleri paket başvuruları.
Aşağıdaki örnekte, SQL Server 2022 için sistem veritabanına yönelik bir paket başvurusumaster gösterilmektedir:
<ItemGroup>
<PackageReference Include="Microsoft.SqlServer.Dacpacs.Master" Version="160.2.1" />
</ItemGroup>
Dacpac artifakt referansları
SDK stilindeki projelerde yeni geliştirmelerde bir .dacpac yapı dosyasına doğrudan başvurmayın. Bunun yerine NuGet paket başvurularını kullanın.
Orijinal SQL projelerinde, .sqlproj dosyasında <ArtifactReference> öğesini kullanarak .dacpac dosya başvurularını belirtirsiniz. 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) - project
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 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 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]
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 projeyi sürekli tümleştirme (CI) işlem hattında oluşturuyorsanız, derleme aracısı ortamını yerel geliştirme ortamına benzer şekilde ayarlamanız gerekir.
-
.dacpacSQL projesindeki.dacpacbaşvurular, derleme aracısında proje dosyasında belirtilen göreli dosya yolunda bulunmalıdır. - SQL projesindeki proje başvuruları, başvurulan projenin proje dosyasında belirtilen aynı göreli dosya yolunda derleme aracısında bulunmasını ve derleme aracısı üzerinde 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 yüklü 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 AdventureWorks ile /p:IncludeCompositeObjects=true 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şkenlerini hedef ortam için doğru değerlere ayarlayın. SqlPackage komut satırı aracındaki seçeneği kullanarak /v dağıtım sırasında SQLCMD değişken değerlerini ayarlayın. Ö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