sp_filestream_force_garbage_collection (T-SQL)
Berlaku untuk: SQL Server
Memaksa pengumpul sampah FILESTREAM (GC) untuk dijalankan, menghapus file FILESTREAM yang tidak diperlukan.
Kontainer FILESTREAM tidak dapat dihapus sampai semua file yang dihapus di dalamnya dibersihkan oleh GC. FILESTREAM GC berjalan secara otomatis. Namun, jika Anda perlu menghapus kontainer sebelum GC berjalan, Anda dapat menggunakan sp_filestream_force_garbage_collection
untuk menjalankan GC secara manual.
Sintaks
sp_filestream_force_garbage_collection
[ @dbname = ] 'database_name'
[ , [ @filename = ] 'logical_file_name' ]
[ ; ]
Argumen
[ @dbname = ] 'database_name'
Menandakan nama database untuk menjalankan GC.
@dbname adalah sysname. Jika tidak ditentukan, database saat ini diasumsikan.
[ @filename = ] 'logical_file_name'
Menentukan nama logis kontainer FILESTREAM untuk menjalankan GC. @filename bersifat opsional. Jika tidak ada nama file logis yang ditentukan, GC membersihkan semua kontainer FILESTREAM dalam database yang ditentukan.
Mengembalikan nilai kode
Nilai | Deskripsi |
---|---|
0 |
Operasi berhasil |
1 |
Kegagalan operasi |
Tataan hasil
Nilai | Deskripsi |
---|---|
file_name |
Menunjukkan nama kontainer FILESTREAM |
num_collected_items |
Menunjukkan jumlah item FILESTREAM (file atau direktori) yang telah dikumpulkan sampah (dihapus) dalam kontainer ini. |
num_marked_for_collection_items |
Menunjukkan jumlah item FILESTREAM (file atau direktori) yang telah ditandai untuk GC dalam kontainer ini. Item ini belum dihapus, tetapi mungkin memenuhi syarat untuk dihapus setelah fase GC. |
num_unprocessed_items |
Menunjukkan jumlah item FILESTREAM yang memenuhi syarat (file atau direktori) yang tidak diproses untuk GC dalam kontainer FILESTREAM ini. Item mungkin tidak diolah karena berbagai alasan, termasuk: - File yang perlu disematkan karena cadangan log atau titik pemeriksaan belum diambil. - File dalam model pemulihan FULL atau BULK_LOGGED. - Ada transaksi aktif yang berjalan lama. - Pekerjaan pembaca log replikasi belum berjalan. Lihat laporan resmi PENYIMPANAN FILESTREAM di SQL Server 2008 untuk informasi selengkapnya. |
last_collected_xact_seqno |
Mengembalikan nomor urutan log terakhir yang sesuai (LSN) di mana file telah dikumpulkan untuk kontainer FILESTREAM yang ditentukan. |
Keterangan
Secara eksplisit menjalankan tugas pengumpulan sampah FILESTREAM untuk diselesaikan pada database yang diminta (dan kontainer FILESTREAM). Proses GC menghapus file yang tidak lagi diperlukan. Waktu yang diperlukan agar operasi ini selesai tergantung pada ukuran data FILESTREAM dalam database atau kontainer tersebut, dan jumlah aktivitas DML yang baru-baru ini terjadi pada data FILESTREAM. Meskipun operasi ini dapat dijalankan dengan database online, ini dapat memengaruhi performa database selama eksekusinya karena berbagai aktivitas I/O yang dilakukan oleh proses GC.
Catatan
Disarankan agar operasi ini dijalankan hanya jika diperlukan dan di luar jam operasi biasa.
Beberapa pemanggilan prosedur tersimpan ini dapat dijalankan secara bersamaan hanya pada kontainer terpisah atau database terpisah.
Karena operasi dua fase, prosedur tersimpan harus dijalankan dua kali untuk benar-benar menghapus file FILESTREAM yang mendasarinya.
Pengumpulan sampah bergantung pada pemotongan log. Oleh karena itu, jika file dihapus baru-baru ini pada database menggunakan model pemulihan penuh, file tersebut dikumpulkan sampah hanya setelah cadangan log dari bagian log transaksi tersebut diambil, dan bagian log ditandai tidak aktif. Pada database yang menggunakan model pemulihan sederhana, pemotongan log terjadi setelah CHECKPOINT
dikeluarkan terhadap database.
Izin
Memerlukan keanggotaan dalam peran database db_owner .
Contoh
Contoh berikut menjalankan GC untuk kontainer FILESTREAM dalam fsdb
database.
J. Tentukan tidak ada kontainer
USE fsdb;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'fsdb';
B. Tentukan kontainer
USE fsdb;
GO
EXEC sp_filestream_force_garbage_collection @dbname = N'fsdb',
@filename = N'FSContainer';