Dikumpulkan dari Internet, diorganisir dan digunakan.
SQL2005 memiliki lebih dari 1 gigabyte log dan terkadang tidak dapat dihapus. Jadi saya menemukan kode ini.
Terkadang log pembersihan tidak dihapus hingga 1M. Silakan jalankan beberapa kali. Dalam keadaan normal, ini dapat dijalankan satu kali.
Saya pernah menghadapi situasi di mana saya harus menjalankannya dua kali.
1 PILIH @LogicalFileName = 'Test_log',
Test_log adalah nama logis dari log.
4
5
6 -- ================
7 -- Penulis: petarung
8 -- Tanggal pembuatan: 2009-3-15
9 -- Deskripsi: menghapus log sql
10 -- ===============
11 BUAT PROSEDUR [dbo].[tools_ClearSqlLog]
12
13AS
14 MULAI
15
16 SETEL NOCOUNT AKTIF
17 DECLARE nama sistem @LogicalFileName,
18 @MaxMinutes INT,
19 @UkuranBaruINT
20
21 PILIH @LogicalFileName = 'Test_log',
22 @MaxMinutes = 1,
23 @Ukuran Baru = 1
dua puluh empat
25 -- Pengaturan/inisialisasi
26 MENYATAKAN @OriginalSize int
27 PILIH @OriginalSize = ukuran DARI sysfiles WHERE name = @LogicalFileName
28 PILIH 'Ukuran Asli ' + db_name() + ' LOG adalah ' +
29 CONVERT(VARCHAR(30),@OriginalSize) + ' 8 ribu halaman atau ' +
30 KONVERSI(VARCHAR(30),(@Ukuran Asli*8/1024)) + 'MB'
31 DARI sysfile
32 DIMANA nama = @LogicalFileName
33
34 BUAT TABEL DummyTrans
35 (karakter DummyColumn (8000) bukan nol)
36
37
38 DEKLARASIKAN @Counter INT,
39 @Waktu Mulai DATETIME,
40 @TruncLog VARCHAR(255)
41 PILIH @Waktu Mulai = GETDATE(),
42 @TruncLog = 'LOG CADANGAN' + db_name() + 'DENGAN TRUNCATE_ONLY'
43
44 DBCC SHRINKFILE (@LogicalFileName, @NewSize)
45 EXEC (@TruncLog)
46 -- Bungkus log jika perlu.
47 WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- waktu belum habis
48 DAN @OriginalSize = (PILIH ukuran DARI sysfiles WHERE name = @LogicalFileName)
49 DAN (@OriginalSize * 8 /1024) > @NewSize
50 MULAI -- Lingkaran luar.
51 PILIH @Penghitung = 0
52 SAAT ((@Counter < @OriginalSize / 16) DAN (@Counter < 50000))
53 MULAI -- perbarui
54 MASUKKAN NILAI DummyTrans ('Isi Log')
55 HAPUS DummyTrans
56 PILIH @Penghitung = @Penghitung + 1
57END
58 EXEC (@TruncLog)
59 AKHIR
60 PILIH 'Ukuran Akhir ' + db_name() + ' LOG adalah ' +
61 CONVERT(VARCHAR(30),ukuran) + ' 8K halaman atau ' +
62 KONVERSI(VARCHAR(30),(ukuran*8/1024)) + 'MB'
63 DARI sysfile
64 DIMANA nama = @LogicalFileName
65
66 DROP TABLE DummyTrans
67 SETEL NOCOUNT MATI
68
69 AKHIR
70
71