sys.sp_persistent_version_cleanup (T-SQL)

Berlaku untuk: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance

Memulai proses pembersihan penyimpanan versi persisten (PVS) secara manual, elemen kunci pemulihan database yang dipercepat (ADR). Pembersih ini mengembalikan data yang tidak dikomit dalam PVS dari transaksi yang dibatalkan.

Biasanya tidak perlu memulai proses pembersihan PVS secara manual menggunakan sys.sp_persistent_version_cleanup. Namun dalam beberapa skenario, dalam periode istirahat/pemulihan yang diketahui setelah aktivitas OLTP yang sibuk, Anda mungkin ingin memulai proses pembersihan PVS secara manual.

Untuk informasi selengkapnya tentang ADR di Azure SQL, lihat Pemulihan Database Yang Dipercepat di Azure SQL.

Konvensi sintaks transact-SQL

Sintaks

sp_persistent_version_cleanup
    [ [ @dbname = ] N'dbname' ]
    [ , [ @scanallpages = ] scanallpages ]
    [ , [ @clean_option = ] clean_option ]
[ ; ]

Argumen

[ @dbname = ] N'dbname'

Opsional. Nama database yang akan dibersihkan. Jika tidak disediakan, menggunakan konteks database saat ini. @dbname adalah sysname, dengan default NULL.

[ @scanallpages = ] scanallpages

Opsional. @scanallpages adalah bit, dengan default 0. Ketika diatur ke 1, opsi ini memaksa pembersihan semua halaman database bahkan jika tidak diberi versi.

[ @clean_option = ] clean_option

Opsional. Opsi yang mungkin menentukan apakah akan mengklaim kembali halaman PVS di luar baris atau tidak. @clean_option int, dengan default 0. Referensi ini umumnya tidak diperlukan dan nilai 0 default disarankan.

Nilai Deskripsi
0 Default, tidak ada opsi yang ditentukan
1 penyimpanan versi di luar baris tanpa memeriksa konten halaman PVS individual
2 penyimpanan versi di luar baris dengan setiap halaman PVS yang dikunjungi
3 hanya penyimpanan versi dalam baris
4 penggunaan internal saja

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Tataan hasil

Tidak ada.

Izin

Memerlukan izin ALTER DATABASE untuk dijalankan.

Keterangan

Prosedur sys.sp_persistent_version_cleanup tersimpan sinkron, yang berarti tidak selesai sampai semua informasi versi dibersihkan dari PVS saat ini.

Di SQL Server 2019 (15.x), proses pembersihan PVS hanya dijalankan untuk satu database pada satu waktu. Di Azure SQL Database dan Azure SQL Managed Instance, dan dimulai dengan SQL Server 2022 (16.x), proses pembersihan PVS dapat dijalankan secara paralel terhadap beberapa database dalam instans yang sama.

Jika proses pembersihan PVS sudah berjalan terhadap database yang diinginkan, prosedur tersimpan ini diblokir dan menunggu penyelesaian sebelum memulai proses pembersihan PVS lain. Transaksi aktif dan berjalan lama dalam database apa pun di mana ADR diaktifkan juga dapat memblokir pembersihan PVS. Anda dapat memantau tugas pembersih versi dengan mencari prosesnya dengan kueri sampel berikut:

SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';

Pembatasan

Pencerminan Database tidak dapat diatur untuk database tempat ADR diaktifkan atau masih ada versi di penyimpanan versi (PVS) yang dipertahankan. Jika ADR dinonaktifkan, jalankan sys.sp_persistent_version_cleanup untuk membersihkan versi sebelumnya yang masih ada di PVS.

Contoh

Untuk mengaktifkan proses pembersihan PVS secara manual antara beban kerja atau selama jendela pemeliharaan, gunakan contoh skrip berikut:

EXEC sys.sp_persistent_version_cleanup [database_name];

Misalnya:

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

Atau, untuk mengasumsikan konteks database saat ini:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;