批量壓縮資料庫日誌SQL

2021-10-08 06:05:29 字數 2190 閱讀 2258

declare @tb table(sqlstr varchar(2000))

--查詢需要壓縮的資料庫

declare cur cursor for select name from sys.databases where name like 'hb%' or name in ('hz028','hz029')

declare @dbname varchar(50),@log_filename varchar(50),@sql varchar(1000)

open cur

fetch next from cur into @dbname

while @@fetch_status =0

begin

set @sql = 'use ['+@dbname+']'

exec(@sql)

set @log_filename=null

select top 1 @log_filename=[name] from sys.database_files f where [type]=1

if @log_filename is not null

begin

set @sql='use ['+@dbname+']'+char(13)+char(10)+'go'+char(13)+char(10)+'alter database ['+@dbname+'] set recovery ******;dbcc shrinkfile (n'''+@log_filename+''', 1, truncateonly);alter database ['+@dbname+'] set recovery full with no_wait'+char(13)+char(10)+'go'

insert into @tb(sqlstr) values(@sql)

endelse

begin

print @dbname+'日誌檔案未找到'

endfetch next from cur into @dbname

endclose cur

deallocate cur

select * from @tb

select a.name [檔名稱]  

,cast(a.[size]*1.0/128 as decimal(12,1)) as [檔案設定大小(mb)]

,cast( fileproperty(s.name,'spaceused')/(8*16.0) as decimal(12,1)) as [檔案所佔空間(mb)]

,cast( (fileproperty(s.name,'spaceused')/(8*16.0))/(s.size/(8*16.0))*100.0 as decimal(12,1)) as [所佔空間率%]

,case when a.growth =0 then '檔案大小固定,不會增長' else '檔案將自動增長' end [增長模式]

,case when a.growth > 0 and is_percent_growth = 0 then '增量為固定大小'

when a.growth > 0 and is_percent_growth = 1 then '增量將用整數百分比表示'

else '檔案大小固定,不會增長' end as [增量模式]

,case when a.growth > 0 and is_percent_growth = 0 then cast(cast(a.growth*1.0/128as decimal(12,0)) as varchar)+'mb'

when a.growth > 0 and is_percent_growth = 1 then cast(cast(a.growth as decimal(12,0)) as varchar)+'%'

else '檔案大小固定,不會增長' end as [增長值(%或mb)]

,a.physical_name as [檔案所在目錄]

,a.type_desc as [檔案型別]

from sys.database_files a

inner join sys.sysfiles as s on a.[file_id]=s.fileid

left join sys.dm_db_file_space_usage b on a.[file_id]=b.[file_id]

sql 資料庫日誌壓縮

執行下列語句 dump transaction 資料庫 with no log gobackup log 資料庫 with no log go再在資料庫上 右鍵 所有任務 收縮資料庫 第二種方法 1.分離資料庫 2.刪除log檔案 3.附加資料庫的同時建立新的日誌檔案 select varchar ...

壓縮資料庫日誌

經常在csdn上看到發帖說,壓縮日誌檔案處理不當,導致資料庫損壞,甚至不能恢復資料,於是就寫了乙個通用的資料庫日誌檔案壓縮的儲存過程來解決此問題 壓縮資料庫的通用儲存過程 壓縮日誌及資料庫檔案大小 因為要對資料庫進行分離處理 所以儲存過程不能建立在被壓縮的資料庫中 鄒建 2004.03 引用請保留此...

壓縮資料庫日誌

經常在csdn上看到發帖說,壓縮日誌檔案處理不當,導致資料庫損壞,甚至不能恢復資料,於是就寫了乙個通用的資料庫日誌檔案壓縮的儲存過程來解決此問題 壓縮資料庫的通用儲存過程 壓縮日誌及資料庫檔案大小 因為要對資料庫進行分離處理 所以儲存過程不能建立在被壓縮的資料庫中 鄒建 2004.03 引用請保留此...