Aracılığıyla paylaş


Microsoft Fabric'te SQL veritabanı için SqlPackage

Şunlar için geçerlidir:Microsoft Fabric'te SQL veritabanı

Bu öğreticide, Doku'daki SQL veritabanınızda SqlPackage ile çalışmayı öğreneceksiniz.

SqlPackage, veritabanı taşınabilirliği ve veritabanı dağıtımları sağlayan bir CLI'dir.

  • Azure'da veya Fabric'te yönetilen bir veritabanının taşınabilirliği (içeri/dışarı aktarma), daha sonra geçirmek istediğinizde verilerinizin diğer platformlara taşınabilir olmasını sağlar. - Taşınabilirlik, bağımsız veritabanı kopyaları (.bacpac veya .dacpac dosyaları) aracılığıyla SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Fabric'teki SQL veritabanına yapılan hareketleri içerir.

SqlPackage, veritabanı nesnelerine artımlı değişikliklerin (tablolardaki yeni sütunlar, mevcut saklı yordamlarda yapılan değişiklikler vb.) kolay veritabanı dağıtımlarını da etkinleştirebilir.

  • SqlPackage, veritabanındaki .dacpac nesnelerin tanımlarını içeren bir dosyayı ayıklayabilir ve bu nesne durumunu yeni veya var olan bir .dacpac veritabanına uygulamak için bir dosya yayımlayabilir.
  • Yayımlama işlemi, SQL veritabanları için çevrimdışı ve daha dinamik geliştirme döngüleri sağlayan SQL projeleriyle de tümleştirilir.

Önkoşullar

  • Mevcut bir Doku kapasitesine ihtiyacınız vardır. Aksi takdirde bir Fabric deneme sürümü başlatın.
  • Yeni bir çalışma alanı oluşturun veya var olan bir Doku çalışma alanını kullanın.
  • Doku'da var olan bir SQL veritabanı oluşturun veya kullanın. Henüz bir veritabanınız yoksa, Doku'da yeni bir SQL veritabanı oluşturun.
  • .NET 8 SDK'sını yükleyin.

Ayarlama

SqlPackage, Windows, macOS ve Linux için dotnet aracı olarak kullanılabilir. Aşağıdaki komutu kullanarak yükleyebilirsiniz:

dotnet tool install --global Microsoft.SqlPackage

Genel bir dotnet aracı olarak SqlPackage, terminalinizde herhangi bir klasörde olduğu gibi sqlpackage kullanılabilir.

SqlPackage ile veritabanını içeri aktarma

, .bacpac veritabanının taşınabilir bir kopyasıdır ve bazı geçiş ve test senaryoları için kullanışlıdır. SqlPackage içeri aktarma ile bunu .bacpac boş bir SQL veritabanına aktarabilirsiniz.

Not

A .bacpac , yedekleme veya yedekleme/geri yükleme özelliklerinin yerine geçemez. SQL veritabanı yedeklemeleri hakkında daha fazla bilgi için, Microsoft Fabric'te SQL veritabanında otomatik yedeklemelere ve Microsoft Fabric'teki SQL veritabanı yedeğinden geri yüklemeye bakın.

  1. Azure veya SQL Server ortamından bir .bacpac kullanıyorsanız, Doku T-SQL yüzey alanındaki SQL veritabanını karşılamak için kaynak veritabanını değiştirmeniz gerekebilir. SqlPackage özelliklerinin desteklenmeyen bazı nesneleri atlamalarına olanak tanıyan alternatif bir yöntem için bkz. ayıklama ve yayımlama taşınabilirliği .

  2. Doku arabirimi aracılığıyla her zamanki gibi Doku'da yeni SQL veritabanınızı oluşturun.

  3. Ayarlardan bağlantı dizesi kopyalayın.

    SQL veritabanının Bağlantı dizeleri sayfasını gösteren Doku portalının ekran görüntüsü.

  4. sqlpackage klasöründeki terminalden içeri aktarma komutunu kullanın. Sahibinizi <servername> ve <database_name>sağlayın.

    sqlpackage /action:import /sourcefile:"C:\DatabaseName.bacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"
    
    • SQL veritabanı ayarları iletişim kutusundan bağlantı dizesi değiştirin.
    • sourcefile değerini yerel makinenizde adı (.bacpac) ve DatabaseName adıyla location değiştirin.
  5. Microsoft Fabric'teki Data Factory'de kopyalama işiyle içeri aktarma işlemini izleyin. Başlamak için Hızlı Başlangıç: Kopyalama İşi Oluşturma'ya bakın.

SqlPackage ile veritabanını dışarı aktarma

A'yı .bacpac dışarı aktarmak ters işlemdirtargetfile; burada sizin .bacpac ve öğesiniz sourceconnectionstring önceki örnekte olduğu gibi SQL veritabanı ayarları iletişim kutusunda bulunabilir. Sahibinizi <servername> ve <database_name>sağlayın. Örneğin:

sqlpackage /action:export /targetfile:"C:\DatabaseName.bacpac" /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive"

Dışarı aktarma hakkında daha fazla bilgi için bkz . SqlPackage dışarı aktarma.

Ayıklama ve yayımlama

SQL veritabanı projelerinin şema değişikliklerini nasıl taşıyabileceğini gösteren diyagram.

A .dacpac , kaynak veritabanındaki tablolara, saklı yordamlara ve diğer nesnelere yönelik tanımları içeren bir veritabanı şema modeli dosyasıdır. Bu dosya, SqlPackage ile var olan bir veritabanından veya bir SQL veritabanı projesinden oluşturulabilir.

SqlPackage, yeni (boş) bir veritabanına bir dağıtabilir .dacpac veya mevcut bir veritabanını istenen .dacpac durumla eşleşecek şekilde artımlı olarak güncelleştirebilir.

  • Ayıkla , mevcut bir .dacpac veritabanından veya sql dosyaları oluşturur.
  • Yayımlama bir .dacpac veritabanına dağıtır.

SqlPackage yayımlama ve ayıklama söz dizimi, içeri/dışarı aktarma komutlarına benzer.

Uyarı

SqlPackage kullanarak bir SQL projesi veya .dacpac Doku'daki SQL veritabanına dağıtmanız önerilir. Visual Studio'dan .dacpac dağıtımı başarısızlıkla sonuçlanabilir.

Azure SQL Veritabanı, SQL Server veya Fabric'deki SQL veritabanı dışında bir platformu hedefleyen bir SQL Projesi'nden oluşturulan bir .dacpac dağıtmak için, SqlPackage yayımlama komutuna /p:AllowIncompatiblePlatform=true özelliğini ekleyin.

Taşınabilirliği ayıklama ve yayımlama

SqlPackage içeri/dışarı aktarma komutları .bacpac veri taşınabilirliğine odaklanmış olsa da, ayıklama ve yayımlama komutları .dacpac biçimiyle veri taşınabilirliğine sahiptir. Ayıklama ve yayımlama özellikleri, ayıklama ve yayımlama işlemlerinin davranışını denetlemek ve platformlar arasındaki dönüştürmeler için daha fazla esneklik sağlamak için kullanılabilir.

Bir veriyi .dacpac ve dahil etmek için /p:ExtractAllTableData=true özelliğini kullanın. Ayıklama işlemi, hem şemayı hem de kaynak veritabanındaki verileri içeren bir .dacpac oluşturur. Özellik /p:ExtractReferencedServerScopedElements=false, Fabric içindeki SQL veritabanında desteklenmeyen sunucu kapsamlı öğeleri dışlar. Aşağıdaki komut, Fabric'deki mevcut bir SQL veritabanından veri içeren bir .dacpac çıkarır.

sqlpackage /action:extract /sourceconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true  /p:ExtractReferencedServerScopedElements=false

Verilerle ayıklanan bir.dacpac yayımlamak için ek özellik gerekmez. Ancak, yayımlama işleminin davranışını denetlemek için birkaç özellik kullanılabilir:

  • /p:AllowIncompatiblePlatform=true farklı bir platformdan (örneğin, Azure SQL Veritabanı, SQL Server) ayıklanan bir .dacpac dağıtımına izin verir.
  • /p:ExcludeObjectTypes=Logins;Users , Doku'da SQL veritabanına yayımlarken uyumluluk sorunlarıyla karşılaşabilecek nesne türlerini dışlar. Dışlanabilir nesne türlerinin tam listesi için bkz. SqlPackage yayımlama.

SqlPackage içeri aktarma komutuna benzer şekilde, Fabric platformunda bir SQL .dacpac veritabanı yayımlamadan önce veritabanını Fabric'de oluşturmanız gerekir. Veritabanını Doku portalı veya diğer Doku arabirimi aracılığıyla oluşturabilirsiniz. Aşağıdaki komut, ayıklanan .dacpac dosyasını Doku'daki boş bir SQL veritabanında yayımlar:

sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"Data Source=tcp:<server_name>.database.fabric.microsoft.com,1433;Initial Catalog=<database_name>;MultipleActiveResultSets=False;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;ConnectRetryCount=6;ConnectRetryInterval=10;Authentication=Active Directory Interactive" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users