下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > MS_SQL > 教你再sql server編寫archive通用模板腳本實現自動分批刪除數據

          教你再sql server編寫archive通用模板腳本實現自動分批刪除數據

          時間:2024-02-28 13:28作者:下載吧人氣:38

          博主做過比較多項目的archive腳本編寫,對于這種刪除數據的腳本開發(fā),肯定是一開始的話用最簡單的一個delete語句,然后由于部分表數據量比較大啊,索引比較多啊,會發(fā)現刪除數據很慢而且影響系統的正常使用。然后就對delete語句進行按均勻數據量分批delete的改寫,這樣的話,原來的刪除一個表用一個語句,就可能變成幾十行,如果archive的表有十幾個甚至幾十個,那我們的腳本篇幅就非常大了,增加了開發(fā)和維護的成本,不利于經驗比較少的新入職同事去開發(fā)archive腳本,也容易把注意力分散到所謂分批邏輯中。

            根據這種情況,本周博主(zhang502219048)剛好在工作過程中,總結并編寫了一個自動分批刪除數據的模板,模板固定不變,只需要把注意力集中放在delete語句中,并且可以在delete語句中控制每批刪除的數據量,比較方便,通過變量組裝模板sql,避免每個表就單獨寫一個分批邏輯的重復代碼,化簡為繁,增加分批刪除一個表指定數據的話只需要增加幾行代碼就可以(如下所示中的demo1和demo2)。

            demo1:不帶參數,根據表tmp_Del刪除表A對應ID的數據。

            demo2:帶參數,根據Date字段是否過期刪除表B對應數據。

            具體請參考下面的腳本和相關說明,如有不懂的地方歡迎評論或私信咨詢博主。

          — ===== 1 分批archive模板 =======================================================
          –【請不要修改本模板內容】
          /*
          說明:
          1. 組裝的archive語句為:@sql = @sql_Part1 + @sql_Del + @sql_Part2
          2. 組裝的參數@parameters為:@parameters = @parameters_Base + 自定義參數
          3. 傳入參數:@strStepInfo 需要print的step信息
          4. archive邏輯專注于@sql_Del,而非分散于分批。
          */
          declare @parameters nvarchar(max) = ”
          , @parameters_Base nvarchar(max) = N’@strStepInfo nvarchar(100)’
          , @sql nvarchar(max) = ”
          , @sql_Part1 nvarchar(max) = N’
          declare @iBatch int = 1, –批次
          @iRowCount int = -1 –刪除行數,初始為-1,后面取每批刪除行數@@ROWCOUNT
          print convert(varchar(50), getdate(), 121) + @strStepInfo
          while @iRowCount <> 0
          begin
          print ”begin batch:”
          print @iBatch
          print convert(varchar(50), getdate(), 121)
          begin try
          begin tran

          , @sql_Del nvarchar(max) = ‘
          ‘ –@sql_Del腳本需要根據實際情況在后續(xù)腳本中自行編寫
          , @sql_Part2 nvarchar(max) = N’
          select @iRowCount = @@rowcount
          commit tran
          end try
          begin catch
          rollback tran
          print ”– Error Message:” + convert(varchar, error_line()) + ” | ” + error_message()
          end catch
          waitfor delay ”0:00:01” –延時
          print convert(varchar(50), getdate(), 121)
          print ”end batch”
          select @iBatch = @iBatch + 1
          end’
          — ===== 2 demo1(delete語句不含參數):archive 表A =======================================================
          select @parameters = @parameters_Base + ” –如果有需要增加自定義參數,在這里加,例如@parameters = @parameters_Base + ‘, @ArchiveDate datetime’
          , @sql_Del = ‘
          delete top (50000) tc_Del
          from 表A tc_Del
          inner join tmp_Del cd on cd.ID = tc_Del.ID

          select @sql = @sql_Part1 + @sql_Del + @sql_Part2
          print @sql
          exec sp_executesql @sql, @parameters, N’ 2 archive 表A’
          — ===== 3 demo2(delete語句含參數):archive 表B =======================================================
          select @parameters = @parameters_Base + ‘, @ArchiveDaate datetime’ –如果有需要增加自定義參數,在這里加,例如@parameters = @parameters_Base + ‘, @ArchiveDate datetime’
          , @sql_Del = ‘
          delete top (50000)
          from 表B
          where Date < @ArchiveDate

          select @sql = @sql_Part1 + @sql_Del + @sql_Part2
          print @sql
          exec sp_executesql @sql, @parameters, N’ 3 archive 表B’, @ArchiveDate

          標簽MSSQL,SQLServer,技術文檔,數據庫,SQLSERVER

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: 97人妻无码一区二区精品免费| 亚洲日韩精品一区二区三区| 视频一区二区三区在线观看| 无码少妇一区二区性色AV| 亚洲一区电影在线观看| 一区二区国产在线观看| 好爽毛片一区二区三区四无码三飞| 色婷婷综合久久久久中文一区二区| 亚洲AV永久无码精品一区二区国产| 国产伦精品一区二区三区不卡| 韩国福利一区二区美女视频| 一区二区三区国产精品 | 中文激情在线一区二区| 久久一区二区三区精品| 国产高清不卡一区二区| 东京热人妻无码一区二区av| 久久久久久一区国产精品| 国产福利一区二区在线视频 | 波霸影院一区二区| 日韩高清一区二区三区不卡| 成人h动漫精品一区二区无码| 国模无码一区二区三区 | 亚洲AV无码一区二区三区DV| 免费看一区二区三区四区| 一区二区三区杨幂在线观看| 丰满岳乱妇一区二区三区| 国产精品成人国产乱一区| 久久影院亚洲一区| 日本亚洲成高清一区二区三区| 久久亚洲一区二区| 国产日韩一区二区三区在线播放| 波多野结衣久久一区二区| 日本人的色道www免费一区| 亚洲国产成人久久一区WWW| 亚洲综合国产一区二区三区| 中文字幕在线看视频一区二区三区 | 蜜桃传媒视频麻豆第一区| 国产裸体舞一区二区三区| 国产在线无码视频一区| 久久久不卡国产精品一区二区 | 国产一区二区三区播放心情潘金莲|