程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 一次性壓縮Sqlserver2005中所有庫日志的存儲過程

一次性壓縮Sqlserver2005中所有庫日志的存儲過程

編輯:更多數據庫知識

有沒有辦法更快一點?
有沒有辦法一次性收縮所有數據庫?
復制代碼 代碼如下:
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 //執行

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved