Membuat paket DAC

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Ini adalah praktik yang baik untuk meninjau konten paket DAC sebelum menyebarkannya dalam produksi, dan untuk memvalidasi tindakan peningkatan sebelum meningkatkan DAC yang ada. Ini terutama berlaku saat menyebarkan paket yang tidak dikembangkan di organisasi Anda.

Metode untuk meningkatkan paket DAC meliputi:

Paket DAC yang tidak tepercaya

Kami menyarankan agar Anda tidak menyebarkan paket DAC dari sumber yang tidak diketahui atau tidak tepercaya. DAC tersebut dapat berisi kode berbahaya yang mungkin menjalankan kode Transact-SQL yang tidak diinginkan atau menyebabkan kesalahan dengan memodifikasi skema. Sebelum Anda menggunakan DAC dari sumber yang tidak diketahui atau tidak tepercaya, sebarkan pada instans pengujian terisolasi mesin database, jalankan DBCC CHECKDB (Transact-SQL) pada database, dan juga periksa kode, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna, dalam database.

Menampilkan Konten DAC

Ada dua mekanisme untuk melihat konten paket aplikasi tingkat data (DAC):

  • impor paket DAC ke proyek SQL di Alat Pengembang SQL Server
  • menerbitkan paket DAC ke instans pengujian

Mengimpor DAC di Alat Pengembang SQL Server

  1. Buka menu File, pilih Baru, lalu pilih Proyek....

  2. Pilih templat proyek SQL Server, dan tentukan Nama, Lokasi, dan Nama solusi.

  3. Di Penjelajah Solusi, klik kanan simpul proyek dan pilih Properti....

  4. Pada tab Pengaturan Proyek, di bagian Jenis Output, pilih kotak centang Aplikasi tingkat Data (File.dacpac), lalu tutup dialog properti.

  5. Di Penjelajah Solusi, klik kanan simpul proyek dan pilih Impor Aplikasi tingkat Data....

  6. Gunakan Penjelajah Solusi untuk membuka semua file di DAC, seperti kebijakan pemilihan server dan skrip pra-dan pasca-penyebaran.

  7. Gunakan Tampilan Skema untuk meninjau semua objek dalam skema, terutama meninjau kode dalam objek seperti fungsi atau prosedur tersimpan.

Menerbitkan paket DAC ke instans pengujian

Beberapa alat tersedia untuk menerbitkan paket DAC ke instans pengujian. Ekstensi SQL Server Dacpac untuk Azure Data Studio berisi Wizard Aplikasi tingkat Data. Kami akan memandu penerbitan paket DAC ke instans pengujian.

  1. Jika diperlukan, sebarkan instans pengujian menggunakan wizard penyebaran.

  2. Sambungkan ke instans pengujian Anda di Azure Data Studio dan klik kanan pada simpul server. Pilih Wizard aplikasi tingkat data dari menu konteks.

  3. Pada langkah 1 wizard, pilih Sebarkan file .dacpac aplikasi tingkat data ke instans SQL Server

  4. Satu langkah 2 dari wizard, masukkan lokasi file dan pilih Database Baru untuk database target. Masukkan nama database.

  5. Pada langkah 3 wizard, tinjau ringkasan sebelum memilih Sebarkan.

  6. Setelah penyebaran selesai, tinjau konten database di penjelajah objek.

  7. OPSIONAL: Klik kanan database di penjelajah objek dan pilih Buat proyek dari database untuk menghasilkan proyek SQL dari database.

Menampilkan perubahan database

Setelah versi DAC saat ini disebarkan ke produksi, perubahan mungkin telah dilakukan langsung ke database terkait yang mungkin bertentangan dengan skema yang ditentukan dalam versi baru DAC. Sebelum memutakhirkan ke versi baru DAC, periksa untuk melihat apakah perubahan tersebut telah dilakukan pada database. Di bawah beberapa skenario, Anda mungkin ingin melihat perbedaan antara database dan paket DAC. Misalnya, perubahan mungkin telah dilakukan langsung ke database terkait yang mungkin bertentangan dengan skema yang ditentukan dalam versi baru DAC.

Semua database

Menampilkan perubahan database dengan menggunakan perbandingan skema

Menampilkan perubahan database dengan menggunakan SqlPackage CLI

SqlPackage CLI dapat digunakan dengan tindakan DeployReport untuk melihat perbedaan antara .dacpac dan database melalui tindakan yang akan diambil jika .dacpac diterbitkan ke database.

Database terdaftar sebagai aplikasi tingkat data

Menampilkan perubahan database dengan menggunakan wizard

  1. Jalankan wizard Tingkatkan Aplikasi tingkat Data, menentukan DAC yang saat ini disebarkan dan paket DAC yang berisi versi baru DAC.

  2. Pada halaman Deteksi Perubahan , tinjau laporan perubahan yang telah dibuat ke database.

  3. Pilih Batal jika Anda tidak ingin melanjutkan pemutakhiran.

  4. Untuk informasi selengkapnya tentang menggunakan wizard, lihat Memutakhirkan Aplikasi tingkat Data.

Menampilkan perubahan database dengan menggunakan PowerShell

  1. Buat objek SMO Server dan atur ke instans yang berisi DAC yang akan dilihat.

  2. Buka objek ServerConnection dan sambungkan ke instans yang sama.

  3. Tentukan nama DAC dalam variabel.

  4. Gunakan metode GetDatabaseChanges() untuk mengambil objek ChangeResults, dan menyalurkan objek ke file teks untuk menghasilkan laporan sederhana objek baru, dihapus, dan diubah.

Contoh berikut melaporkan setiap perubahan database yang telah dibuat dalam DAC yang disebarkan bernama MyApplication.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the change list and save to file.  
$dacChanges = $dacstore.GetDatabaseChanges($dacName) | Out-File -Filepath C:\DACScripts\MyApplicationChanges.txt  

Menampilkan perubahan database dengan menggunakan SqlPackage CLI

SqlPackage CLI dapat digunakan dengan tindakan DriftReport untuk melihat perubahan yang dibuat pada database sejak terakhir kali didaftarkan.

Menampilkan tindakan peningkatan

Semua database

Menampilkan perubahan database dengan menggunakan penerbitan proyek SQL

Lihat tindakan peningkatan dengan menggunakan SqlPackage CLI SqlPackage CLI dapat digunakan dengan tindakan DeployReport untuk melihat perbedaan antara .dacpac dan database melalui tindakan yang akan diambil jika .dacpac diterbitkan ke database.

Database terdaftar sebagai aplikasi tingkat data

Sebelum menggunakan versi baru paket DAC untuk meningkatkan DAC yang disebarkan dari paket DAC sebelumnya, Anda dapat membuat laporan yang berisi pernyataan Transact-SQL yang akan dijalankan selama peningkatan, lalu meninjau pernyataan.

Melaporkan tindakan peningkatan dengan menggunakan wizard

  1. Jalankan wizard Tingkatkan Aplikasi tingkat Data, menentukan DAC yang saat ini disebarkan dan paket DAC yang berisi versi baru DAC.

  2. Pada halaman Ringkasan , tinjau laporan tindakan peningkatan.

  3. Pilih Batal jika Anda tidak ingin melanjutkan pemutakhiran.

  4. Untuk informasi selengkapnya tentang menggunakan wizard, lihat Memutakhirkan Aplikasi tingkat Data.

Melaporkan tindakan peningkatan dengan menggunakan PowerShell

  1. Buat objek SMO Server dan atur ke instans yang berisi DAC yang disebarkan.

  2. Buka objek ServerConnection dan sambungkan ke instans yang sama.

  3. Gunakan System.IO.File untuk memuat file paket DAC.

  4. Tentukan nama DAC dalam variabel.

  5. Gunakan metode GetIncrementalUpgradeScript() untuk mendapatkan daftar pernyataan Transact-SQL yang akan dijalankan peningkatan, dan pipa daftar ke file teks.

  6. Tutup aliran file yang digunakan untuk membaca file paket DAC.

Contoh berikut melaporkan pernyataan Transact-SQL yang akan dijalankan untuk meningkatkan DAC bernama MyApplication ke skema yang ditentukan dalam file MyApplication2017.dacpac.

## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  
  
## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  
  
## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication2017.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  
  
## Specify the DAC instance name.  
$dacName  = "MyApplication"  
  
## Generate the upgrade script and save to file.  
$dacstore.GetIncrementalUpgradeScript($dacName, $dacType) | Out-File -Filepath C:\DACScripts\MyApplicationUpgrade.sql  
  
## Close the filestream to the new DAC package.  
$fileStream.Close()  

Membandingkan DAC

Sebelum meningkatkan DAC, adalah praktik yang baik untuk meninjau perbedaan dalam database dan objek tingkat instans antara DAC saat ini dan baru. Jika Anda tidak memiliki salinan paket untuk DAC saat ini, Anda dapat mengekstrak paket dari database saat ini.

Jika Anda mengimpor kedua paket DAC ke dalam proyek DAC di SQL Server Developer Tools, Anda dapat menggunakan alat Schema Compare untuk menganalisis perbedaan antara dua DAC.

Atau, buka kemasan DAC ke dalam folder terpisah. Anda kemudian dapat menggunakan alat perbedaan, seperti utilitas WinDiff, untuk menganalisis perbedaannya.

Lihat Juga

Aplikasi tingkat data
Menyebarkan Aplikasi tingkat Data
Meningkatkan Aplikasi Tingkat Data