کم حجم کردن log file
با سلام خدمت دوستان عزیز
میخواستم بدونم چجوری میشه حجم log file ها در sql 2008 r2 کم کرد ؟ میخوام برای این کار یک job داشته باشم تا بتونه توی یک زمان مشخص log file ها رو کم حجم کنه.
کد زیر رو هم بدست اوردم ولی نمیدونم چجوری ازش خروجی بگیرم یا چجوری توی یک job بزارم؟
با سپاس فراوان
Declare @database nvarchar(1000)
Declare @tsql nvarchar(4000)
Declare DatabaseCursor Cursor
Local
Static
For
select name from master.dbo.sysdatabases
open DatabaseCursor
fetch next from DatabaseCursor into @database
while @@fetch_status = 0
begin
print 'database:' + @database
if @database not in ('tempdb','master','model','msdb')
begin
SET @tsql = use master
DECLARE @dbLogName nvarchar(500)
Use @database
select @dbLogName = rtrim(ltrim(name)) from sysfiles WHERE FILEID=2;
ALTER DATABASE ['+@database+'] SET RECOVERY SIMPLE
ALTER DATABASE ['+@database+'] SET SINGLE_USER
DBCC SHRINKFILE(@dbLogName , 2)
ALTER DATABASE ['+@database+'] SET MULTI_USER
ALTER DATABASE ['+@database+'] SET RECOVERY FULL
exec(@tsql)
end
fetch next from DatabaseCursor into @database
end
close DatabaseCursor
deallocate DatabaseCursor
2 پاسخ
برای کم کردن حجم Log می تونید از اسکریپت زیر استفاده کنید. برای اجرای منظم هم کافیه یک Job در Agent تعریف کنید تا این اسپکریپت رو در زمان مشخص اجرا کنه:
USE Database; GO -- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE Database SET RECOVERY SIMPLE; GO -- Shrink the truncated log file to 1 MB. DBCC SHRINKFILE (Database_Log, 1); GO -- Reset the database recovery model. ALTER DATABASE Database SET RECOVERY FULL; GO
به جای Database نام بانک مورد نظرتون رو بنویسید. تو قسمت DBCC SHRINKFILE، به جای عدد 1 هم می تونید سایز مورد نظرتون برای فایل Log رو مشخص کنید که در اینجا 1 مگابایت هست.
با سپاس فراوان از شما