Meningkatkan Aplikasi Tingkat Data

Berlaku untuk: SQL Server (semua versi yang didukung) Azure SQL Managed Instance Database Azure SQL

Gunakan Panduan Aplikasi tingkat Data Peningkatan atau skrip Windows PowerShell untuk mengubah skema dan properti aplikasi tingkat data (DAC) yang saat ini disebarkan agar sesuai dengan skema dan properti yang ditentukan dalam versi baru DAC.

Sebelum Anda mulai

Peningkatan DAC adalah proses di tempat yang mengubah skema database yang ada agar sesuai dengan skema yang ditentukan dalam versi baru DAC. Versi baru DAC disediakan dalam file paket DAC. Untuk informasi selengkapnya tentang membuat paket DAC, lihat Aplikasi tingkat data.

Memilih Opsi Peningkatan DAC

Ada empat opsi peningkatan untuk peningkatan di tempat:

  • Abaikan Kehilangan Data - Jika Benar, peningkatan akan dilanjutkan meskipun beberapa operasi mengakibatkan hilangnya data. Jika False, operasi ini akan mengakhiri peningkatan. Misalnya, jika tabel dalam database saat ini tidak ada dalam skema DAC baru, tabel akan dihilangkan jika True ditentukan. Pengaturan defaultnya adalah True.

  • Blok pada Perubahan - Jika True, peningkatan dihentikan jika skema database berbeda dari yang ditentukan dalam DAC sebelumnya. Jika False, peningkatan berlanjut meskipun perubahan terdeteksi. Pengaturan defaultnya adalah False.

  • Rollback on Failure - Jika True, peningkatan diapit dalam transaksi, dan jika kesalahan mengalami pembatalan akan dicoba. Jika False, semua perubahan dilakukan saat dilakukan dan jika terjadi kesalahan, Anda mungkin harus memulihkan cadangan database sebelumnya. Pengaturan defaultnya adalah False.

  • Lewati Validasi Kebijakan - Jika Benar, kebijakan pemilihan server DAC tidak dievaluasi. Jika False, kebijakan dievaluasi dan peningkatan berakhir jika ada kesalahan validasi. Pengaturan defaultnya adalah False.

Batasan dan Pembatasan

Uprade DAC hanya dapat dilakukan di SQL Database, atau SQL Server 2005 (9.x) Service Pack 4 (SP4) atau yang lebih baru.

Prasyarat

Sangat bijaksana untuk mengambil cadangan database penuh sebelum memulai peningkatan. Jika peningkatan mengalami kesalahan dan tidak dapat mengembalikan semua perubahannya, Anda mungkin perlu memulihkan cadangan.

Sebelum memulai peningkatan, ada beberapa tindakan yang harus Anda lakukan untuk memvalidasi paket DAC dan tindakan peningkatan. Untuk informasi selengkapnya tentang cara melakukan pemeriksaan ini, lihat Memvalidasi Paket DAC.

  • Kami menyarankan agar Anda tidak meningkatkan dengan menggunakan paket DAC dari sumber yang tidak diketahui atau tidak tepercaya. Paket tersebut dapat berisi kode berbahaya yang mungkin menjalankan kode Transact-SQL yang tidak diinginkan atau menyebabkan kesalahan dengan memodifikasi skema. Sebelum Anda menggunakan paket dari sumber yang tidak diketahui atau tidak tepercaya, buka kemasan DAC dan periksa kode, seperti prosedur tersimpan atau kode lain yang ditentukan pengguna.

  • Jika perubahan telah dilakukan pada database saat ini setelah versi terakhir DAC disebarkan, beberapa perubahan dapat mencegah keberhasilan penyelesaian peningkatan, atau dihapus oleh peningkatan. Anda harus terlebih dahulu membuat dan meninjau laporan setiap perubahan yang dibuat dalam database.

  • Sangat bijaksana untuk menghasilkan daftar perubahan skema yang akan dilakukan peningkatan, dan meninjau daftar untuk masalah apa pun.

Nama aplikasi dalam paket DAC harus cocok dengan nama aplikasi DAC yang saat ini disebarkan. Misalnya, jika DAC saat ini memiliki nama aplikasi GeneralLedger, Anda hanya dapat meningkatkan dengan menggunakan paket DAC yang juga memiliki nama aplikasi GeneralLedger.

Pastikan ada cukup ruang log transaksi yang tersedia untuk mencatat semua modifikasi.

Keamanan

Untuk meningkatkan keamanan, SQL Server Login autentikasi disimpan dalam paket DAC tanpa kata sandi. Ketika paket disebarkan atau ditingkatkan, login dibuat sebagai login yang dinonaktifkan dengan kata sandi yang dihasilkan. Untuk mengaktifkan login, masuk menggunakan login yang memiliki izin UBAH LOGIN APA PUN dan gunakan ALTER LOGIN untuk mengaktifkan login dan menetapkan kata sandi baru yang dapat dikomunikasikan kepada pengguna. Ini tidak diperlukan untuk login Autentikasi Windows karena kata sandinya tidak dikelola oleh SQL Server.

Izin

DAC hanya dapat ditingkatkan oleh anggota peran server tetap sysadmin atau serveradmin , atau dengan login yang berada dalam peran server tetap dbcreator dan memiliki izin UBAH LOGIN APA PUN. Login harus menjadi pemilik database yang ada. Akun administrator sistem SQL Server bawaan bernama sa juga dapat meningkatkan DAC.

Menggunakan Wizard Aplikasi Tingkat Data Peningkatan

Untuk Memutakhirkan DAC Menggunakan Wizard

  1. Dalam Object Explorer, perluas simpul untuk instans yang berisi DAC yang akan ditingkatkan.

  2. Perluas simpul Manajemen , lalu perluas simpul Aplikasi tingkat Data .

  3. Klik kanan simpul agar DAC ditingkatkan, lalu pilih Tingkatkan Aplikasi Tingkat Data...

  4. Selesaikan dialog wizard:

    1. Halaman Pengantar

    2. Pilih Halaman Paket

    3. Tinjau Halaman Kebijakan

    4. Deteksi Halaman Perubahan

    5. Tinjau Paket Peningkatan

    6. Halaman ringkasan

    7. Mutakhirkan Halaman DAC

Halaman Pengantar

Halaman ini menjelaskan langkah-langkah untuk memutakhirkan aplikasi tingkat data.

Jangan perlihatkan halaman ini lagi. - Klik kotak centang untuk menghentikan halaman ditampilkan di masa mendatang.

Berikutnya > - Melanjutkan ke halaman Pilih Paket .

Batal - Mengakhiri wizard tanpa memutakhirkan DAC.

Pilih Halaman Paket

Gunakan halaman ini untuk menentukan paket DAC yang berisi versi baru aplikasi tingkat data. Halaman beralih melalui dua status.

Pilih Paket DAC

Gunakan status awal halaman untuk memilih paket DAC yang akan disebarkan. Paket DAC harus berupa file paket DAC yang valid dan harus memiliki ekstensi .dacpac. Nama aplikasi DAC dalam paket DAC harus sama dengan nama aplikasi DAC saat ini.

Paket DAC - Tentukan jalur dan nama file paket DAC yang berisi versi baru aplikasi tingkat data. Anda dapat memilih tombol Telusuri di sebelah kanan kotak untuk menelusuri ke lokasi paket DAC.

Nama Aplikasi - Kotak baca-saja yang menampilkan nama aplikasi DAC yang ditetapkan saat DAC ditulis atau diekstrak dari database.

Versi - Kotak baca-saja yang menampilkan versi yang ditetapkan saat DAC ditulis atau diekstrak dari database.

Deskripsi - Kotak baca-saja yang menampilkan deskripsi yang ditulis saat DAC ditulis atau diekstrak dari database.

< Sebelumnya - Kembali ke halaman Pengantar .

Berikutnya > - Menampilkan bilah kemajuan sebagai panduan mengonfirmasi bahwa file yang dipilih adalah paket DAC yang valid.

Batal - Mengakhiri wizard tanpa memutakhirkan DAC.

Memvalidasi Paket DAC

Menampilkan bilah kemajuan sebagai panduan mengonfirmasi bahwa file yang dipilih adalah paket DAC yang valid. Jika paket DAC divalidasi, wizard berlanjut ke halaman Tinjau Kebijakan . Jika file bukan paket DAC yang valid, wizard tetap berada di halaman Pilih Paket DAC . Pilih paket DAC lain yang valid atau batalkan wizard dan buat paket DAC baru.

Memvalidasi konten DAC - Bilah kemajuan yang melaporkan status proses validasi saat ini.

< Sebelumnya - Kembali ke status awal halaman Pilih Paket .

Berikutnya > - Melanjutkan ke versi akhir halaman Pilih Paket .

Batal - Mengakhiri wizard tanpa menyebarkan DAC.

Tinjau Halaman Kebijakan

Gunakan halaman ini untuk meninjau hasil evaluasi kebijakan pemilihan server DAC, jika DAC memiliki kebijakan. Kebijakan pemilihan server DAC bersifat opsional, dan ditetapkan ke DAC yang ditulis di Microsoft Visual Studio. Kebijakan ini menggunakan faset kebijakan pemilihan server untuk menentukan kondisi yang harus dipenuhi instans Mesin Database untuk menghosting DAC.

Hasil evaluasi kondisi kebijakan - Laporan baca-saja yang menunjukkan apakah evaluasi kondisi dalam kebijakan pemilihan server DAC berhasil. Hasil evaluasi setiap kondisi dilaporkan pada baris terpisah.

Abaikan pelanggaran kebijakan - Gunakan kotak centang ini untuk melanjutkan peningkatan jika satu atau beberapa kondisi kebijakan gagal. Hanya pilih opsi ini jika Anda yakin bahwa semua kondisi yang gagal tidak akan mencegah keberhasilan operasi DAC.

< Sebelumnya - Kembali ke halaman Pilih Paket .

Berikutnya > - Melanjutkan ke halaman Deteksi Perubahan .

Batal - Mengakhiri wizard tanpa memutakhirkan DAC.

Deteksi Halaman Perubahan

Gunakan halaman ini melaporkan hasil panduan memeriksa perubahan yang dibuat pada database yang membuat skemanya berbeda dari definisi skema yang disimpan dalam metadata DAC di msdb. Misalnya, jika pernyataan CREATE, ALTER, atau DROP telah digunakan untuk menambahkan, mengubah, atau menghapus objek dari database setelah DAC awalnya disebarkan. Halaman pertama-tama menampilkan bilah kemajuan, lalu melaporkan hasil analisis.

Mendeteksi perubahan, ini mungkin memakan waktu beberapa menit - Menampilkan bilah kemajuan saat wizard memeriksa perbedaan antara skema database saat ini dan objek dalam definisi DAC.

Hasil deteksi perubahan: - Menunjukkan bahwa analisis telah selesai dan hasilnya dilaporkan di bawah ini.

DatabaseName tidak berubah - Panduan mendeteksi tidak ada perbedaan dalam objek yang ditentukan dalam database dan rekan-rekannya dalam definisi DAC.

DatabaseName telah berubah - Panduan mendeteksi perubahan antara objek dalam database dan rekan-rekannya dalam definisi DAC.

Lanjutkan meskipun kemungkinan hilangnya perubahan - Menentukan bahwa Anda memahami beberapa objek atau data dalam database saat ini tidak akan ada di database baru, dan bahwa Anda bersedia untuk melanjutkan peningkatan. Anda harus memilih tombol ini hanya jika Anda telah menganalisis laporan perubahan dan memahami langkah-langkah yang harus Anda lakukan untuk mentransfer objek atau data apa pun yang diperlukan dalam database baru secara manual. Jika Anda tidak yakin, klik tombol Simpan Laporan untuk menyimpan laporan perubahan, lalu klik Batal. Analisis laporan, rencanakan cara mentransfer objek dan data yang diperlukan setelah peningkatan selesai, lalu mulai ulang wizard.

Simpan Laporan - Klik tombol untuk menyimpan laporan perubahan wizard yang terdeteksi antara objek dalam database dan rekan-rekan mereka dalam definisi DAC. Anda kemudian dapat meninjau laporan untuk menentukan apakah Anda perlu mengambil tindakan setelah peningkatan selesai untuk menggabungkan beberapa atau semua objek yang tercantum dalam laporan ke dalam database baru.

< Sebelumnya - Kembali ke halaman Pilih Paket DAC .

Berikutnya > - Melanjutkan ke halaman Opsi .

Batal - Mengakhiri wizard tanpa menyebarkan DAC.

Halaman Opsi

Gunakan halaman ini untuk memilih opsi putar kembali pada kegagalan untuk peningkatan.

Gulung balik kegagalan - Pilih opsi ini untuk mengapit peningkatan dalam transaksi yang dapat dicoba oleh wizard untuk mengembalikan jika terjadi kesalahan. Untuk informasi selengkapnya tentang opsi ini, lihat Memilih Opsi Peningkatan DAC.

Pulihkan Default - Mengembalikan opsi ke pengaturan default false.

< Sebelumnya - Kembali ke halaman Deteksi Perubahan .

Berikutnya > - Melanjutkan ke halaman Tinjau Paket Peningkatan .

Batal - Mengakhiri wizard tanpa menyebarkan DAC.

Tinjau Halaman Paket Peningkatan

Gunakan halaman ini untuk meninjau tindakan yang akan diambil oleh proses peningkatan. Hanya lanjutkan ketika Anda yakin peningkatan tidak akan menimbulkan masalah.

Tindakan berikut akan digunakan untuk meningkatkan DAC. - Tinjau informasi yang ditampilkan untuk memastikan tindakan yang diambil akan benar. Kolom Tindakan menampilkan tindakan, seperti pernyataan Transact-SQL, yang akan dijalankan untuk melakukan peningkatan. Kolom Kehilangan Data akan berisi peringatan jika tindakan terkait dapat menghapus data.

Refresh - me-refresh daftar tindakan.

Simpan Laporan Tindakan - menyimpan konten jendela tindakan ke file HTML.

Lanjutkan meskipun kemungkinan hilangnya perubahan - Menentukan bahwa Anda memahami beberapa objek atau data dalam database saat ini tidak akan ada di database baru, dan bahwa Anda bersedia untuk melanjutkan peningkatan. Anda harus memilih tombol ini hanya jika Anda telah menganalisis laporan perubahan dan memahami langkah-langkah yang harus Anda lakukan untuk mentransfer objek atau data apa pun yang diperlukan dalam database baru secara manual. Jika Anda tidak yakin, klik tombol Simpan Laporan Tindakan untuk menyimpan laporan perubahan dan tombol Simpan Skrip untuk menyimpan skrip Transact-SQL, lalu klik Batal. Analisis laporan dan skrip, lalu rencanakan cara mentransfer objek dan data yang diperlukan setelah peningkatan selesai, lalu mulai ulang wizard.

Simpan Skrip - menyimpan pernyataan Transact-SQL yang akan digunakan untuk melakukan peningkatan ke file teks.

Pulihkan Default - Mengembalikan opsi ke pengaturan default false.

< Sebelumnya - Kembali ke halaman Deteksi Perubahan .

Berikutnya > - Melanjutkan ke halaman Ringkasan .

Batal - Mengakhiri wizard tanpa menyebarkan DAC.

Halaman ringkasan

Gunakan halaman ini untuk melakukan tinjauan akhir tindakan yang akan dilakukan wizard saat memutakhirkan DAC.

Pengaturan berikut akan digunakan untuk memutakhirkan DAC Anda. - Tinjau informasi yang ditampilkan untuk memastikan tindakan yang diambil akan benar. Jendela menampilkan DAC yang Anda pilih untuk ditingkatkan, dan paket DAC yang berisi versi baru DAC. Jendela juga menampilkan apakah versi database saat ini sama dengan definisi DAC saat ini, atau jika database telah berubah.

< Sebelumnya - Mengembalikan Anda ke halaman Tinjau Paket Peningkatan .

Berikutnya > - Menyebarkan DAC dan menampilkan hasilnya di halaman Tingkatkan DAC .

Batal - Mengakhiri wizard tanpa menyebarkan DAC.

Mutakhirkan Halaman DAC

Halaman ini melaporkan keberhasilan atau kegagalan operasi peningkatan.

Meningkatkan DAC - Melaporkan keberhasilan atau kegagalan setiap tindakan yang diambil untuk meningkatkan DAC. Tinjau informasi untuk menentukan keberhasilan atau kegagalan setiap tindakan. Tindakan apa pun yang mengalami kesalahan akan memiliki tautan di kolom Hasil . Pilih tautan untuk melihat laporan kesalahan untuk tindakan tersebut.

Simpan Laporan - Pilih tombol ini untuk menyimpan laporan pemutakhiran ke file HTML. File melaporkan status setiap tindakan, termasuk semua kesalahan yang dihasilkan oleh salah satu tindakan. Folder default adalah folder SQL Server Management Studio\DAC Packages di folder Dokumen akun Windows Anda.

Selesai - Mengakhiri wizard.

Menggunakan PowerShell

Untuk meningkatkan DAC menggunakan metode IncrementalUpgrade() dalam skrip PowerShell

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

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

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

  4. Gunakan add_DacActionStarted dan add_DacActionFinished untuk berlangganan peristiwa peningkatan DAC.

  5. Atur DacUpgradeOptions.

  6. Gunakan metode IncrementalUpgrade untuk meningkatkan DAC.

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

Contoh (PowerShell)

Contoh berikut meningkatkan DAC bernama MyApplication pada instans default Mesin Database, menggunakan versi DAC baru dalam paket 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)  
  
## Subscribe to the DAC upgrade events.  
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})  
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})  
  
## Upgrade the DAC and close the package.  
$dacName  = "MyApplication"  
  
## Set the upgrade options.  
$upgradeProperties = New-Object Microsoft.SqlServer.Management.Dac.DacUpgradeOptions  
$upgradeProperties.blockonchanges = $true  
$upgradeProperties.ignoredataloss = $false  
$upgradeProperties.rollbackonfailure = $true  
$ upgradeProperties.skippolicyvalidation = $false  
  
## Upgrade the DAC  
$dacstore.IncrementalUpgrade($dacName, $dacType, $upgradeProperties)  
## Close the package file.  
$fileStream.Close()  

Lihat juga

Aplikasi tingkat data
SQL Server PowerShell