縮小SQL日誌

2021-03-31 08:56:28 字數 1935 閱讀 8270

--縮小sql日誌

-- exec p_***pdb 'test'

create proc p_***pdb

@dbname sysname, --要壓縮的資料庫名

@bkdatabase bit=1, --因為分離日誌的步驟中,可能會損壞資料庫,所以你可以選擇是否自動資料庫

@bkfname nvarchar(260)='' --備份的檔名,如果不指定,自動備份到預設備份目錄,備份檔案名為:資料庫名+日期時間

as--1.清空日誌

exec('dump transaction ['+@dbname+'] with  no_log')

--2.截斷事務日誌:

exec('backup log ['+@dbname+'] with no_log')

--3.收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減小

exec('dbcc shrinkdatabase(['+@dbname+'])')

--4.設定自動收縮

exec('exec sp_dboption '''+@dbname+''',''autoshrink'',''true''')

--後面的步驟有一定危險,你可以可以選擇是否應該這些步驟

--5.分離資料庫

if @bkdatabase=1

begin

if isnull(@bkfname,'')=''

set @bkfname=@dbname+'_'+convert(varchar,getdate(),112)

+replace(convert(varchar,getdate(),108),':','')

select 提示資訊='備份資料庫到sql 預設備份目錄,備份檔案名:'+@bkfname

exec('backup database ['+@dbname+'] to disk='''+@bkfname+'''')

end--進行分離處理

create table #t(fname nvarchar(260),type int)

exec('insert into #t select filename,type=status&0x40 from ['+@dbname+']..sysfiles')

exec('sp_detach_db '''+@dbname+'''')

--刪除日誌檔案

declare @fname nvarchar(260),@s varchar(8000)

declare tb cursor local for select fname from #t where type=64

open tb

fetch next from tb into @fname

while @@fetch_status=0

begin

set @s='del "'+rtrim(@fname)+'"'

exec master..xp_cmdshell @s,no_output

fetch next from tb into @fname

endclose tb

deallocate tb

--附加資料庫

set @s=''

declare tb cursor local for select fname from #t where type=0

open tb

fetch next from tb into @fname

while @@fetch_status=0

begin

set @s=@s+','''+rtrim(@fname)+''''

fetch next from tb into @fname

endclose tb

deallocate tb

exec('sp_attach_single_file_db '''+@dbname+''''+@s)

go

縮小SQL Server日誌檔案的SQL語句

把下面的 貼上到sql query analyzer 查詢分析器 裡執行即可 注意修改紅色部分的3個引數 set nocount on declare logicalfilename sysname,maxminutes int,newsize int usedicky 需要縮小日誌的資料庫名 se...

縮小SQL SERVER日誌檔案

sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...

縮小SQL SERVER日誌檔案

sql server 2000 會有日誌檔案由於時間的積累越來越大的問題 資料庫實際大小為15m,日誌檔案實際大小為625kb 匯出的日誌檔案 但日誌檔案實際占用空間為200mb 預設設定是檔案日誌會自動增長 如果想在資料庫屬性那裡,直接將當前的日誌檔案的儲存空間改小,是不行的。解決方法 找到下面的...