Aracılığıyla paylaş


SQL Veritabanı Projeleri uzantısıyla SDK stili SQL projeleri kullanma (Önizleme)

Bu makalede, Azure Data Studio veya Visual Studio Code'daki SQL Veritabanı Projeleri uzantısında SDK stili SQL projeleri için Microsoft.Build.Sql tanıtılmaktadır. SDK stili SQL projeleri, işlem hatları veya yerleşik platformlar arası ortamlar aracılığıyla gönderilen uygulamalar için özellikle avantajlıdır. İlk duyuru TechCommunity'ta mevcuttur.

Not

Microsoft.Build.Sql şu anda önizleme aşamasındadır.

SDK stili veritabanı projesi oluşturma

Boş bir projeden veya mevcut bir veritabanından SDK stilinde bir veritabanı projesi oluşturabilirsiniz.

Boş proje

Veritabanı Projeleri görünümünde Yeni Proje düğmesini seçin ve görüntülenen metin girişine bir proje adı girin. Görüntülenen Klasör Seç iletişim kutusunda, projenin klasörü, .sqlproj dosyası ve içinde bulunabilecek diğer içerikler için bir dizin seçin.

Varsayılan olarak SDK stili proje (Önizleme) seçimi denetlendi. İletişim kutusu tamamlandığında, boş proje açılır ve düzenleme için Veritabanı Projeleri görünümünde görünür.

Mevcut veritabanından

Proje görünümünde, Veritabanından Proje Oluştur düğmesini seçin ve bir SQL Server'a bağlanın. Bağlantı kurulduktan sonra, kullanılabilir veritabanları listesinden bir veritabanı seçin ve projenin adını ayarlayın. Ayıklamanın hedef yapısını seçin.

Varsayılan olarak SDK stili proje (Önizleme) seçimi denetlendi. İletişim kutusu tamamlandığında, yeni proje açılır ve seçili veritabanının içeriği için SQL betikleri içerir.

Derleme ve yayımlama

Azure Data Studio ve Visual Studio Code arabirimlerinden SDK stilinde bir SQL projesi oluşturma ve yayımlama işlemi önceki SQL proje biçimiyle aynı şekilde tamamlanır. Bu işlem hakkında daha fazla bilgi için bkz . Proje Derleme ve Yayımlama.

Windows, macOS veya Linux'ta komut satırından SDK stilinde bir SQL projesi oluşturmak için aşağıdaki komutu kullanın:

dotnet build

.dacpac SDK stili bir SQL projesi oluşturmanın sonucunda elde edilen dosya, SqlPackage ve GitHub sql-action dahil olmak üzere veri katmanı uygulama çerçevesi (.dacpac, .bacpac) ile ilişkili araçlarla uyumludur.

Proje özellikleri

SQL projelerinde, dosyada proje derlemesinde veya dağıtımda .sqlproj veritabanı modelini etkileyen çeşitli özellikler belirtilebilir. Aşağıdaki bölümlerde, Microsoft.Build.Sql projelerinde kullanılabilen bu özelliklerden bazıları açıklanmaktadır.

Hedef platform

Hedef platform özelliği, öğenin altındaki dosyadaki .sqlproj etikette <PropertyGroup> yer alırDSP. Hedef platform, proje derlemesi sırasında projeye dahil edilen özelliklere yönelik desteği doğrulamak için kullanılır ve dosyaya .dacpac özellik olarak eklenir. Varsayılan olarak, dağıtım sırasında, uyumluluk sağlamak için hedef platform hedef veritabanına karşı denetlener. Hedef platform hedef veritabanı tarafından desteklenmiyorsa, geçersiz kılma yayımlama seçeneği belirtilmediği sürece dağıtım başarısız olur.

<Project DefaultTargets="Build">
  <Sdk Name="Microsoft.Build.Sql" Version="0.1.12-preview" />
  <PropertyGroup>
    <Name>AdventureWorks</Name>
    <DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
  </PropertyGroup>

Hedef platform için geçerli ayarlar şunlardır:

  • Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.Sql130DatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.Sql140DatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.Sql150DatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.SqlDwDatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.SqlServerlessDatabaseSchemaProvider
  • Microsoft.Data.Tools.Schema.Sql.SqlDwUnifiedDatabaseSchemaProvider

Veritabanı başvuruları

Derleme zamanında veritabanı modeli doğrulaması, veritabanı başvuruları aracılığıyla SQL projesinin içeriğinin dışına uzatılabilir. Dosyada belirtilen veritabanı başvuruları, başka bir SQL projesine .sqlproj veya aynı veritabanının başka bir .dacpac veritabanını veya daha fazla bileşenini temsil eden bir dosyaya başvurabilir.

Aşağıdaki öznitelikler, başka bir veritabanını temsil eden veritabanı başvuruları için kullanılabilir:

  • DatabaseSqlCmdVariable: değer, veritabanına başvurmak için kullanılan değişkenin adıdır
    • Başvuru ayarı: <DatabaseSqlCmdVariable>SomeOtherDatabase</DatabaseSqlCmdVariable>
    • Kullanım örneği: SELECT * FROM [$(SomeOtherDatabase)].dbo.Table1
  • ServerSqlCmdVariable: değeri, veritabanının bulunduğu sunucuya başvurmak için kullanılan değişkenin adıdır. veritabanı başka bir sunucudayken DatabaseSqlCmdVariable ile kullanılır.
    • Başvuru ayarı: <ServerSqlCmdVariable>SomeOtherServer</ServerSqlCmdVariable>
    • Kullanım örneği: SELECT * FROM [$(SomeOtherServer)].[$(SomeOtherDatabase)].dbo.Table1
  • DatabaseVariableLiteralValue: değer, SQL projesinde kullanıldığı gibi veritabanının değişmez adıdır, ancak DatabaseSqlCmdVariable diğer veritabanına başvuru değişmez değerdir
    • Başvuru ayarı: <DatabaseVariableLiteralValue>SomeOtherDatabase</DatabaseVariableLiteralValue>
    • Kullanım örneği: SELECT * FROM [SomeOtherDatabase].dbo.Table1

SQL proje dosyasında veritabanı başvurusu, özniteliği dosyanın yoluna .dacpac ayarlanmış bir ArtifactReference öğe Include olarak belirtilir.

  <ItemGroup>
    <ArtifactReference Include="SampleA.dacpac">
      <DatabaseSqlCmdVariable>DatabaseA</DatabaseSqlCmdVariable>
    </ArtifactReference>
  </ItemGroup>
</Project>

Paket başvuruları

Paket başvuruları, dosya .dacpac içeren NuGet paketlerine başvurmak için kullanılır ve veritabanı modelini derleme zamanında veritabanı başvurusuna benzer şekilde genişletmek için kullanılır.

Bir SQL proje dosyasındaki aşağıdaki örnek, veritabanı paketine başvurur Microsoft.SqlServer.Dacpacs master.

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

Veritabanı başvuruları için kullanılabilen özniteliklere ek olarak, birden çok .dacpac dosya içeren bir paketten seçim .dacpac yapmak için aşağıdaki DacpacName öznitelik belirtilebilir.

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.Dacpacs" Version="160.0.0">
      <DacpacName>msdb</DacpacName>
    </PackageReference>
  </ItemGroup>
</Project>

SqlCmd değişkenleri

SqlCmd değişkenleri dosyada .sqlproj tanımlanabilir ve dağıtım sırasında .dacpac SQL nesneleri ve betiklerindeki belirteçleri değiştirmek için kullanılır. Bir SQL proje dosyasındaki aşağıdaki örnek, projenin nesnelerinde ve betiklerinde kullanılabilen adlı EnvironmentName bir değişken tanımlar.

  <ItemGroup>
    <SqlCmdVariable Include="EnvironmentName">
      <DefaultValue>testing</DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
  </ItemGroup>
</Project>
IF '$(EnvironmentName)' = 'testing'
BEGIN
    -- do something
END

Derlenmiş bir SQL projesi (.dacpac) dağıtıldığında, değişkenin değeri dağıtım komutunda belirtilen değerle değiştirilir. Örneğin, aşağıdaki komut öğesini dağıtır AdventureWorks.dacpac ve değişkeninin EnvironmentName değerini olarak productionayarlar.

SqlPackage /Action:Publish /SourceFile:AdventureWorks.dacpac /TargetConnectionString:{connection_string_here} /v:EnvironmentName=production

Dağıtım öncesi/sonrası betikleri

Dağıtım öncesi ve sonrası betikleri, dağıtım sırasında yürütülecek projeye dahil edilen SQL betikleridir. Dağıtım öncesi/sonrası betikleri içinde .dacpac yer alır, ancak veritabanı nesne modeline derlenmez veya veritabanı nesne modeliyle doğrulanmaz. Veritabanı modeli uygulanmadan önce bir dağıtım öncesi betik yürütülür ve veritabanı modeli uygulandıktan sonra dağıtım sonrası betiği yürütülür. Bir SQL proje dosyasındaki aşağıdaki örnek, dosyayı populate-app-settings.sql dağıtım sonrası betiği olarak ekler.

  <ItemGroup>
    <PostDeploy Include="populate-app-settings.sql" />
  </ItemGroup>
</Project>

Sonraki adımlar