core.sp_purge_data (T-SQL)
Berlaku untuk: SQL Server
Menghapus data dari gudang data manajemen berdasarkan kebijakan penyimpanan. Prosedur ini dijalankan setiap hari oleh pekerjaan Agen SQL Server mdw_purge_data terhadap gudang data manajemen yang terkait dengan instans yang ditentukan. Anda dapat menggunakan prosedur tersimpan ini untuk melakukan penghapusan data sesuai permintaan dari gudang data manajemen.
Sintaks
core.sp_purge_data
[ [ @retention_days = ] retention_days ]
[ , [ @instance_name = ] 'instance_name' ]
[ , [ @collection_set_uid = ] 'collection_set_uid' ]
[ , [ @duration = ] duration ]
[ ; ]
Argumen
[ @retention_days = ] retention_days
Jumlah hari untuk menyimpan data dalam tabel gudang data manajemen. Data dengan stempel waktu yang lebih lama dari @retention_days dihapus. @retention_days kecil, dengan default NULL
. Jika ditentukan, nilainya harus positif. Saat NULL, nilai dalam kolom valid_through dalam core.snapshots
tampilan menentukan baris yang memenuhi syarat untuk dihapus.
[ @instance_name = ] 'instance_name'
Nama instans untuk kumpulan koleksi. @instance_name adalah sysname, dengan default NULL
.
instance_name harus merupakan nama instans yang sepenuhnya memenuhi syarat, yang terdiri dari nama komputer dan nama instans dalam nama instans nama\komputer formulir. Saat NULL, instans default di server lokal digunakan.
[ @collection_set_uid = ] 'collection_set_uid'
GUID untuk kumpulan koleksi. @collection_set_uid adalah pengidentifikasi unik, dengan default NULL
. Saat NULL, baris yang memenuhi syarat dari semua kumpulan koleksi akan dihapus. Untuk mendapatkan nilai ini, kueri syscollector_collection_sets
tampilan katalog.
[ @duration = ] durasi
Jumlah menit maksimum yang harus dijalankan oleh operasi pembersihan. @duration kecil, dengan default NULL
. Jika ditentukan, nilainya harus nol atau bilangan bulat positif. Ketika NULL, operasi berjalan hingga semua baris yang memenuhi syarat dihapus atau operasi dihentikan secara manual.
Mengembalikan nilai kode
0
(berhasil) atau 1
(kegagalan).
Keterangan
Prosedur ini memilih baris dalam core.snapshots
tampilan yang memenuhi syarat untuk dihapus berdasarkan periode retensi. Semua baris yang memenuhi syarat untuk dihapus dihapus dari core.snapshots_internal
tabel. Menghapus baris sebelumnya memicu tindakan penghapusan berskala di semua tabel gudang data manajemen. Ini dilakukan dengan menggunakan klausa ON DELETE CASCADE, yang didefinisikan untuk semua tabel yang menyimpan data yang dikumpulkan.
Setiap rekam jepret dan data terkait dihapus dalam transaksi eksplisit lalu dilakukan. Oleh karena itu, jika operasi penghapusan menyeluruh dihentikan secara manual, atau nilai yang ditentukan untuk @duration terlampaui, hanya data yang tidak dilakukan yang tersisa. Data ini dapat dihapus lain kali pekerjaan berjalan.
Prosedur harus dijalankan dalam konteks database gudang data manajemen.
Izin
Memerlukan keanggotaan dalam peran database tetap mdw_admin (dengan izin EXECUTE).
Contoh
J. Jalankan sp_purge_data tanpa parameter
Contoh berikut dijalankan core.sp_purge_data
tanpa menentukan parameter apa pun. Oleh karena itu, nilai default NULL digunakan untuk semua parameter, dengan perilaku terkait.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO
B. Tentukan nilai retensi dan durasi
Contoh berikut menghapus data dari gudang data manajemen yang lebih lama dari 7 hari. Selain itu, @duration parameter ditentukan sehingga operasi akan berjalan tidak lebih dari 5 menit.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO
C. Tentukan nama instans dan kumpulan koleksi
Contoh berikut menghapus data dari gudang data manajemen untuk kumpulan tertentu yang ditetapkan pada instans SQL Server yang ditentukan. Karena @retention_days tidak ditentukan, nilai dalam kolom valid_through dalam core.snapshots
tampilan digunakan untuk menentukan baris untuk kumpulan koleksi yang memenuhi syarat untuk dihapus.
USE <management_data_warehouse>;
GO
-- Get the collection set unique identifier for the Disk Usage system collection set.
DECLARE @disk_usage_collection_set_uid uniqueidentifier = (SELECT collection_set_uid
FROM msdb.dbo.syscollector_collection_sets WHERE name = N'Disk Usage');
EXECUTE core.sp_purge_data @instance_name = @@SERVERNAME, @collection_set_uid = @disk_usage_collection_set_uid;
GO