久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何刪除 SQL 2005 中的記錄以檢查事務日志

How to delete records in SQL 2005 keeping transaction logs in check(如何刪除 SQL 2005 中的記錄以檢查事務日志)
本文介紹了如何刪除 SQL 2005 中的記錄以檢查事務日志的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在運行以下存儲過程來刪除大量記錄.我知道 DELETE 語句寫入事務日志,刪除多行會使日志增長.

I am running the following stored procedure to delete large number of records. I understand that the DELETE statement writes to the transaction log and deleting many rows will make the log grow.

我已經研究了創建表和插入記錄以保留然后截斷源的其他選項,這種方法對我不起作用.

I have looked into other options of creating tables and inserting records to keep and then Truncating the source, this method will not work for me.

如何使下面的存儲過程更高效,同時確保事務日志不會出現不必要的增長?

CREATE PROCEDURE [dbo].[ClearLog] 
(
  @Age int = 30
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

  -- DELETE ERRORLOG
  WHILE EXISTS ( SELECT [LogId]  FROM [dbo].[Error_Log] WHERE DATEDIFF( dd, [TimeStamp], GETDATE() ) > @Age )
   BEGIN
    SET ROWCOUNT 10000
    DELETE [dbo].[Error_Log] WHERE DATEDIFF( dd, [TimeStamp], GETDATE() ) > @Age

    WAITFOR DELAY '00:00:01'
    SET ROWCOUNT 0
   END
END

推薦答案

我會這樣做:

CREATE PROCEDURE [dbo].[ClearLog] (  
@Age int = 30)
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @d DATETIME
        , @batch INT;
    SET @batch = 10000;
    SET @d = DATEADD( dd, -@Age, GETDATE() )
    WHILE (1=1)
    BEGIN
        DELETE TOP (@batch) [dbo].[Error_Log]  
        WHERE [Timestamp] < @d;
        IF (0 = @@ROWCOUNT)
            BREAK
    END
END

  • 使時間戳比較 SARGable
  • 在批處理開始時分離 GETDATE() 以產生一致的運行(否則它會在無限循環中阻塞,因為新記錄隨著舊記錄被刪除而老化").
  • 使用 TOP 而不是 SET ROWCOUNT(已棄用:使用 SET ROWCOUNT 不會影響下一版本 SQL Server 中的 DELETE、INSERT 和 UPDATE 語句.)
  • 檢查@@ROWCOUNT 以打破循環而不是多余的 SELECT
  • 這篇關于如何刪除 SQL 2005 中的記錄以檢查事務日志的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

    【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 美女毛片| 国产一区中文字幕 | 中文字幕乱码一区二区三区 | 国产成人艳妇aa视频在线 | 99精品亚洲国产精品久久不卡 | 国产日韩一区二区 | 国产黄色大片 | 国产精品国产a级 | 午夜精品一区二区三区在线视 | 久久久久久成人 | 国产精品久久久久久吹潮 | 日本视频在线播放 | 久久tv在线观看 | 综合国产| 久久国产视频播放 | www.国产精品 | 综合网伊人 | 色免费看 | 中文字幕免费 | 亚洲 成人 在线 | 国产欧美精品一区二区三区 | 免费日韩av网站 | 免费日韩av| 九九综合 | 精区3d动漫一品二品精区 | 天天干天天谢 | 91在线免费视频 | av久久| 免费av观看 | 伊人艹 | 亚洲国产精品成人久久久 | 久久久福利 | 国产一二区视频 | 日韩在线观看 | 综合一区二区三区 | 毛片在线免费播放 | 五月综合色啪 | 在线观看视频福利 | 欧美电影在线观看网站 | 拍拍无遮挡人做人爱视频免费观看 | 欧美久久久久久久久中文字幕 |