Bagikan melalui


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.

Konvensi sintaks transact-SQL

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