日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sql Server 清除日志的存储过程 Procedure of cleaning sql server's log

發布時間:2025/4/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sql Server 清除日志的存储过程 Procedure of cleaning sql server's log 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

CREATE?PROCEDURE?[dbo].[strink_logspace]
?
AS
???
SET?NOCOUNT?ON
???
DECLARE?@LogicalFileName?sysname,
???????????
@MaxMinutes?INT,
???????????
@NewSize?INT

???
SELECT??@LogicalFileName?=?rtrim(name),
???????????
@MaxMinutes?=?10,??????--?最大執行時間
???????????@NewSize????=?10???????--?最小空間
???from?sysfiles?where?status?&?0x40?=?0x40

???
--?Setup?/?initialize
???DECLARE?@OriginalSize?int
???
SELECT?@OriginalSize?=?size?--?in?8K?pages
?????FROM?sysfiles
?????
WHERE?name?=?@LogicalFileName

???
SELECT?db_name()?+'日志原始大小'?+??
???????????
CONVERT(VARCHAR(30),@OriginalSize)?+?'?pages/?8K?或?'?+?
???????????
CONVERT(VARCHAR(30),(@OriginalSize*8/1024))?+?'MB'
?????
FROM?sysfiles
?????
WHERE?name?=?@LogicalFileName

???
CREATE?TABLE?DummyTrans
?????(DummyColumn?
char?(8000)?not?null)

???
--?Wrap?log?and?truncate?it.
???DECLARE?@Counter???INT,
???????????
@StartTime?DATETIME,
???????????
@TruncLog??VARCHAR(255)
???
SELECT??@StartTime?=?GETDATE(),
???????????
@TruncLog?=?'BACKUP?LOG?['+?db_name()?+?']?WITH?TRUNCATE_ONLY'
???
--?Try?an?initial?shrink.
???DBCC?SHRINKFILE?(@LogicalFileName,?@NewSize)

???
EXEC?(@TruncLog)

???
--?Wrap?the?log?if?necessary.
???WHILE?????@MaxMinutes?>?DATEDIFF?(mi,?@StartTime,?GETDATE())?--?time?has?not?expired
?????????AND?@OriginalSize?=?(SELECT?size?FROM?sysfiles?WHERE?name?=?@LogicalFileName)??--?the?log?has?not?shrunk????
?????????AND?(@OriginalSize?*?8?/1024)?>?@NewSize??--?The?value?passed?in?for?new?size?is?smaller?than?the?current?size.
?????BEGIN?--?Outer?loop.
???????SELECT?@Counter?=?0
???????
WHILE??((@Counter?<?@OriginalSize?/?16)?AND?(@Counter?<?50000))
?????????
BEGIN?--?update
???????????INSERT?DummyTrans?VALUES?('Fill?Log')??--?Because?it?is?a?char?field?it?inserts?8000?bytes.
???????????DELETE?DummyTrans
???????????
SELECT?@Counter?=?@Counter?+?1
?????????
END???--?update
???????EXEC?(@TruncLog)??--?See?if?a?trunc?of?the?log?shrinks?it.
?????END???--?outer?loop

???
DBCC?SHRINKFILE?(@LogicalFileName,?@NewSize)

???
SELECT?db_name()?+'日志最后大小'?+?
???????????
CONVERT(VARCHAR(30),size)?+?'?pages/?8K?或??'?+?
???????????
CONVERT(VARCHAR(30),(size*8/1024))?+?'MB'
?????
FROM?sysfiles?
?????
WHERE?name?=?@LogicalFileName
???
DROP?TABLE?DummyTrans
???
PRINT?'***?數據庫日志壓縮成功?***'

轉載于:https://www.cnblogs.com/Magicworks/archive/2008/06/05/1214518.html

總結

以上是生活随笔為你收集整理的Sql Server 清除日志的存储过程 Procedure of cleaning sql server's log的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。