SQL Server 數據自動化運維
說到當前的數據庫類型,當前主要流行Mysql、Sql Server、Oracle等三種,區別相信你們都已經很是熟悉了,因此在此就很少介紹了,今天咱們主要介紹一下我近期工做中遇到的問題,咱們的門禁數據庫數據存放的數據量過大,致使從頁面上操做及查詢很是緩慢影響平常操做效率,因爲領導要求數據須要保留,方便往後查詢,
因此咱們通常經過日期判斷指定日期之外的數據刪除這個不能夠實現了,固然換個思路想將指定的日期之外的數據插入到備份數據庫中,而後再根據指定日期外的數據刪除,其實這樣的思路也是對的,可是這樣的話,我須要執行兩條語句,若是第一條失敗了,第二條確定沒法執行了,因此咱們按照這個思路將兩條命令整合成一條,接下來咱們模擬一下。
咱們表中有300多萬條數據,有點多,查詢確定慢
咱們爲了保證數據在操做過程當中安全性,咱們須要對錶進行備份;
咱們將cardinfo表複製一份,而後再操做;select * into cardinfo_temp from cardinfo
咱們查看select * into cardinfo_temp from DB.dbo.cardinfo
接下來咱們就準備開始了操做前準備了
咱們須要建立一張表作爲數據備份的表,固然既然是備份,表的結構都必須是同樣的,因此咱們仍是按照以上方法,複製一張備份表,而後清空數據,select * into cardinfo_bak from DB.dbo.cardinfo
而後清空備份表中的數據delete cardinfo_bak
咱們確認數據select count(*) from cardinfo_bak
咱們要把3個月之外的數據所有移動到備份的表中sql
delete from cardinfo output deleted.* into cardinfo_bak where card_date_ts < dateadd(mm,-3,getdate())
咱們開始執行,執行有報錯
咱們根據報錯有兩種解決方法,可是咱們用第二種;
2.刪除並重建表DB_Bak.dbo.acc_monitor_log,重建時將表中原來的標識列上的標識(identity)屬性去除,因此咱們來修改,右擊表---設計---ID---表示屬性---將是更改成否
而後保存後,咱們再次執行,執行成功;
接下來咱們統計數據數據庫
select count(*) from cardinfo select count(*) from cardinfo_bak
若是咱們想操做三個月之內的數據的話,安全
delete from cardinfo output deleted.* into cardinfo_bak where card_date_tls between dateadd(mm,-3,getdate()) and getdate();
咱們而後須要將該執行命令經過配置做業來定時執行
咱們須要開啓SQL Agent服務才能夠哦
咱們新建做業
定義做業名稱
在步驟頁面---新建
定義步驟名稱、命令、及數據庫信息等
保存確認
新家計劃---執行時間
最終完成整個配置
運維
再次咱們的環境就介紹到這了,有問題能夠給我留言,謝謝ide