Meningkatkan Aplikasi Tingkat Data

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Gunakan Wizard Aplikasi Tingkat Data Pemutakhiran 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.

Pilih Opsi Peningkatan DAC

Ada empat opsi peningkatan untuk peningkatan di tempat:

  • Abaikan Kehilangan Data - Jika Benar, peningkatan berlanjut meskipun beberapa operasi mengakibatkan kehilangan data. Jika False, operasi ini 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 Benar, 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; jika terjadi kesalahan, pembatalan akan dicoba. Jika False, semua perubahan diterapkan 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

Peningkatan 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 lengkap sebelum memulai peningkatan. Anda mungkin perlu memulihkan cadangan jika peningkatan mengalami kesalahan dan tidak dapat mengembalikan semua perubahannya.

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.

  • Sebaiknya Anda menahan diri dari peningkatan 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 perubahan apa pun 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 dengan nama aplikasi GeneralLedger.

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

Keamanan

Untuk meningkatkan keamanan, login Autentikasi SQL Server 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 log masuk dengan izin ALTER ANY LOGIN dan gunakan ALTER LOGIN untuk mengaktifkan login dan menetapkan kata sandi baru untuk dikomunikasikan kepada pengguna. Ini tidak diperlukan untuk login Autentikasi Windows karena SQL Server tidak mengelola kata sandi mereka.

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 Pemutakhiran

Untuk Meningkatkan DAC Menggunakan Wizard

  1. Di Object Explorer, klik kanan database yang berisi DAC yang akan dimutakhirkan.

  2. Perluas opsi Tugas, lalu pilih opsi Tingkatkan Aplikasi tingkat Data.

  3. Selesaikan dialog wizard:

    1. Halaman Pengantar

    2. Pilih Halaman Paket

    3. Deteksi Halaman Perubahan

    4. Halaman Opsi

    5. Tinjau Rencana Peningkatan

    6. Halaman Ringkasan

    7. Mutakhirkan Halaman DAC

Halaman Pengantar

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

Jangan tampilkan halaman ini lagi. - Pilih 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 aplikasi tingkat data baru. 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 Pengenalan .

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 karena panduan mengonfirmasi bahwa file yang dipilih adalah paket DAC yang valid. Wizard melanjutkan ke halaman Kebijakan Tinjau jika paket DAC divalidasi. 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.

Deteksi Halaman Perubahan

Gunakan halaman ini untuk melaporkan hasil pemeriksaan wizard untuk 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 panduan 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 - Wizard mendeteksi tidak ada perbedaan dalam objek yang ditentukan dalam database dan rekan-rekan mereka dalam definisi DAC.

DatabaseName telah berubah - Wizard mendeteksi perubahan antara objek dalam database dan mitranya 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 secara manual di database baru. Jika Anda tidak yakin, pilih tombol Simpan Laporan untuk menyimpan laporan perubahan, lalu pilih Batal. Analisis laporan, rencanakan cara mentransfer objek dan data yang diperlukan setelah peningkatan selesai, lalu mulai ulang wizard.

Simpan Laporan - Pilih tombol untuk menyimpan laporan perubahan wizard yang terdeteksi antara objek dalam database dan mitranya dalam definisi DAC. Anda kemudian dapat meninjau laporan untuk menentukan apakah Anda perlu mengambil tindakan setelah peningkatan selesai 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 pemutakhiran.

Gulung balik kegagalan - Pilih opsi ini untuk mengapit peningkatan dalam transaksi, yang dapat diulang oleh wizard 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 > - Lanjutkan ke halaman Tinjau Paket Peningkatan.

Batal - Mengakhiri wizard tanpa menyebarkan DAC.

Tinjau Halaman Paket Peningkatan

Gunakan halaman ini untuk meninjau tindakan yang dilakukan proses peningkatan. Hanya lanjutkan saat Anda yakin peningkatan tidak akan membuat 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 - merefresh 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 secara manual di database baru. Jika tidak yakin, pilih tombol Simpan Laporan Tindakan untuk menyimpan laporan perubahan dan tombol Simpan Skrip untuk menyimpan skrip Transact-SQL, lalu pilih Batal. Analisis laporan dan skrip, 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 meninjau tindakan yang diambil wizard saat memutakhirkan DAC.

Pengaturan berikut akan digunakan untuk meningkatkan 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 memiliki tautan di kolom Hasil . Pilih tautan untuk melihat laporan kesalahan untuk tindakan tersebut.

Simpan Laporan - Pilih tombol ini untuk menyimpan laporan peningkatan 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 an 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()

Baca juga