一次性壓縮Sqlserver中所有庫日志


通過下面這個可以執行單個數據庫日志壓縮,問題每次都要寫數據庫名字,日志大的話執行速度沒有那么快?
有沒有辦法更快一點?
有沒有辦法一次性收縮所有數據庫?

alter database 數據庫名
set  recovery simple

go

dbcc shrinkdatabase  (數據庫名)
go

alter  database 數據庫名
set  recovery  full

go
目前也有壓縮日志的工具,一個B/S界面形式的操作壓縮數據庫的,就是在選擇數據庫的時候老需要重新去選擇具體的庫,而且數據庫數量很大的時候,有些庫被壓縮了,並沒有自動排序; 目前需要的是被壓縮后的數據庫自動滾到最后面,每次下拉列表中打開的始終是日志記錄容量最大的那個庫,這個容易實現,要求就是執行日志壓縮的時候,執行速度要快些?
如何優化?有沒有辦法一次性壓縮所有的庫?

通過存儲過程實現,一次性壓縮所有數據庫:在Sqlserver2005中測試通過
create procedure shrinkDatabase

as
declare @name nvarchar(2000)

declare getDataBaseCursor cursor for

select  name  from sysdatabases        //取出所有庫名

open getDataBaseCursor

fetch next from getDataBaseCursor
into @name                            //將取出來的值放在一個變量中

while @@fetch_status=0                //根據值循環執行壓縮

begin
 
exec ('alter database '+  @name+' set recovery simple') 

exec ('dbcc  shrinkdatabase('+@name+')')

exec ('alter database'+@name+' set recovery full')

fetch next from getDataBaseCursor
into @name end

close getDataBaseCursor               //關閉
deallocate getDataBaseCursor //釋放
sp_helpdb  urltest      //比對數據庫大小
exec  shrinkDatabase    //執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM