Aracılığıyla paylaş


SQL projeleri paket referansları

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

SQL projelerindeki paket başvuruları, diğer projelerden veya NuGet paketlerinden veritabanı nesnelerine başvurmanızı sağlar. Paket başvuruları aracılığıyla bir projeye eklenen veritabanı nesneleri aynı veritabanının parçası, aynı sunucudaki farklı bir veritabanı veya farklı bir sunucudaki farklı bir veritabanı olabilir.

Note

Paket başvuruları, yeni geliştirmede veritabanı nesnelerine başvurmak için önerilen yöntemdir. NuGet paketlerine başvurmak yalnızca SDK stili sql projelerinde desteklenir.

Veritabanı nesne paketi referansları

Paket başvuruları, bir SQL projesine veritabanı başvurusu olarak veritabanı nesneleri eklemeye yönelik çeşitli yöntemlerden biridir. Paket başvuruları aynı veritabanı, aynı sunucudaki farklı bir veritabanı veya farklı bir sunucudaki farklı bir veritabanı için nesneler içerebilir. Paket başvuruları, veritabanını daha küçük, daha yönetilebilir projelere ayırmak için kullanılabilir ve bu da yinelemeli yerel geliştirme sırasında proje oluşturmak için gereken süreyi azaltmaya yardımcı olabilir.

veritabanı başvuruları için iki pakete ve bir projeye başvuran BIR SQL projesi örneğinin ekran görüntüsü.

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

Paket başvuruları, C# projelerine benzer şekilde dosyadaki .sqlproj girdiler aracılığıyla sql projesine eklenir. Paket başvurusu aynı sunucudaki farklı bir veritabanına olduğunda, paket başvurusuna bir <DatabaseSqlCmdVariable> öğe eklenir. Paket başvurusu farklı bir sunucudaki farklı bir veritabanına olduğunda, paket başvurusuna bir <ServerSqlCmdVariable> öğesi de eklenir. Aynı veritabanına yönelik paket başvuruları <ServerSqlCmdVariable> veya <DatabaseSqlCmdVariable> öğeleri içermez.

Aşağıdaki örnek, paketteki nesnelerin SQL projesindeki veritabanı modelinin Contoso.AdventureWorks.SalesLT bir parçası haline geldiği aynı veritabanı için veritabanı başvurusu olarak pakete yönelik bir paket başvurusu içerir:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks.SalesLT" Version="1.1.0" />
  </ItemGroup>
</Project>

Aşağıdaki örnek, paketteki nesnelerin SQL projesindeki veritabanı modelinin Contoso.AdventureWorks parçası haline geldiği aynı sunucuda farklı bir veritabanı (AdventureWorks) için veritabanı başvurusu olarak pakete yönelik bir paket başvurusu içerir:

...
  <ItemGroup>
    <PackageReference Include="Contoso.AdventureWorks" Version="1.1.0">
      <DatabaseSqlCmdVariable>AdventureDB</DatabaseSqlCmdVariable>
      <DacpacName>AdventureWorks</DacpacName>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <SqlCmdVariable Include="AdventureDB">
      <DefaultValue>AdventureWorks</DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>

Bu örnekte AdventureWorks .dacpac dosyası bir NuGet akışında paket Contoso.AdventureWorks sürümü 1.1.0 olarak yayımlanır. öğesi, <DatabaseSqlCmdVariable> paketteki nesnelerin bulunduğu sunucudaki veritabanının adını belirtir ve bu başvuruyu üç bölümlü adlandırmada belirtmek için kullanılır. SQLCMD değişkeniAdventureDB, dağıtım zamanında veritabanı adını ayarlamak için kullanılır ve projede bu örnek sorguya benzer şekilde kullanılır:

SELECT * FROM [$(AdventureDB)].dbo.Customers;

<DacpacName> öğesi, dosya uzantısı veya yolu olmadan paket başvurusu için dosyanın adını .dacpac belirtir. <DacpacName> öğesi isteğe bağlıdır ve yalnızca dosyanın adı paketin .dacpac adından farklı olduğunda gereklidir.

Sistem veritabanları

SQL sistem veritabanları (master, msdb) NuGet.org üzerinde veritabanı başvuru paketleri olarak yayımlanır. Bu paketler sistem veritabanlarının şemasını içerir ve SQL projelerinde paket başvuruları olarak kullanılabilir. Sistem veritabanı paketleri, ilişkili oldukları SQL Server sürümüyle uyumlu olacak şekilde sürümü oluşturulur. Örneğin, SQL Server 2022 için master sistem veritabanı paketi Microsoft.SqlServer.Dacpacs.Master sürümü 160.2.1 olup, bir SQL projesine paket referansı olarak eklenebilir.

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

İkincil sürüm değişiklikleri, SQL Server sürümünde şemada yapılan hata düzeltmelerini ve küçük değişiklikleri yansıtır.

Kullanılabilir sistem veritabanı paketleri şunlardır:

dacpac NuGet paketlerini paketle

Bir veritabanı referans paketi, .dacpac dosyasını içeren bir NuGet paketidir. NuGet paketi, SQL projelerinde kullanılmak üzere Azure Artifacts gibi bir NuGet akışında yayımlanabilir. Bu paketi oluşturmak, diğer proje türleri için NuGet paketi oluşturma işlemiyle aynı işlemi izler. Daha fazla bilgi için bkz. Dotnet CLI ile paket oluşturma.

SQL projeleri işlemi için paket başvurusunun özetinin ekran görüntüsü.

Dosyayı .sqlproj NuGet paketi olarak paketlemek için komut satırındaki komutu kullanın dotnet pack . Varsayılan olarak, dotnet pack klasöründeki .sqlproj dosyasından bir NuGet paketi oluşturmak için bin/Debug komutu kullanılır.

Paket meta verileri, dosyadaki <PropertyGroup> öğesinin .sqlproj içindeki özellikler tarafından belirtilebilir. Örneğin, aşağıdaki özellikler paket kimliğini, sürümünü, açıklamasını, yazarlarını ve şirketini belirtir:

<PackageId>Contoso.AdventureWorks.SalesLT</PackageId>
<Version>1.0.0</Version>
<Description>AdventureWorks database SalesLT objects</Description>
<Authors>DevTeam</Authors>
<Company>Contoso Outdoors</Company>

.nupkg Komut tarafından dotnet pack oluşturulan dosya, SQL projelerinde kullanılmak üzere bir NuGet akışında yayımlanabilir. Bu veritabanı nesneleri pakete erişimi olan herkes tarafından görüntülenebilir, bu nedenle genel veya özel bir akış konumu seçmek için dikkate alınmalıdır. Daha fazla bilgi için bkz . Özel paket akışlarıyla barındırma.

dosyasının adından farklı olduğu PackageId bir pakete .dacpac başvururken, <DacpacName> paketi kullanırken paket başvurusunda öğesi gereklidir.

Genişletilmiş kod analizi kuralları paket başvuruları

Paket başvuruları, kod analizi genişletilebilirliği kapsamında geliştirilen daha fazla kod analizi kuralına başvurmak için de kullanılabilir. Kod çözümleme kuralı paketinin paket başvurusu, veritabanı nesne paketinin paket başvurusuna benzer. Aşağıdaki örnekte özel kod çözümleme kuralı paketine bir paket başvurusu gösterilmektedir:

<ItemGroup>
  <PackageReference Include="Your.CustomCode.AnalysisRules" Version="1.2.3" />
</ItemGroup>

Başvuruda bulunulmakta olan paket NuGet.org, Azure Artifacts veya yerel kaynak gibi bir NuGet akışında kullanılabilir olmalıdır. Kod çözümleme kuralları içeren bir pakete başvurulduğunda, kurallar SQL projesine otomatik olarak eklenir ve proje özelliği RunSqlCodeAnalysis true olarak ayarlandığında değerlendirilir. Kurallar, proje özelliklerinde tek tek hata döndürmek için devre dışı bırakılabilir veya yükseltilebilir.