<output id="os3gq"><ruby id="os3gq"></ruby></output>

    1. <mark id="os3gq"></mark>
    2. 快速開發平臺企業版教程:SQL Server數據庫自動備份及控制日志增長-紅塵如煙
      Access軟件網QQ交流學習群(群號碼198465573),歡迎您的加入!
      首頁 >技術文章> ADP及SQL SERVER


      快速開發平臺企業版教程:SQL Server數據庫自動備份及控制日志增長

      發表時間:2019/6/1 1:31:55 評論(53) 瀏覽(3926)  評論 | 加入收藏 | 復制
         
      摘 要:在本教程中,主要向大家講解企業版平臺使用過程中,常見但很重要的兩個問題:
      怎么實現 SQL Server 數據庫的自動備份
      怎么解決 SQL Server 數據庫的無限增大
      正 文:

          Access快速開發平臺從2013年首次發布本至今,已經有整整6個年頭了,下載量已經接近90萬次,不算好也不算賴。6年時間彈指一揮間,恍然如昨日,讓人不勝唏噓。我也從一個安靜的美男子變成了中年油膩謝頂大叔,常常為自己日漸稀疏的頭頂和日漸凸起的肚子而鬧心。哎!說多了都是淚??!


          快速開發平臺能受到大家的喜歡,進而為這個社會的進步貢獻了份力,創造了一份價值。身為快速開發平臺的作者,我仿佛有種自己的孩子混得還算有點出息,自己一番心血(?)沒有白費,從而老懷欣慰的感覺。


          追求個人價值的實現,這就是理想啊。而當個人的理想能和社會進步的方向契合時,這無疑是一種幸運。


          快速開發平臺這個產品,要說發展,其實也沒什么發展。因為只有我一個人在開發和維護,我這個家長基本上只是讓它不至于餓死。除此之外,沒有投入太多精力對它進行教導。所以長得很慢,至今才發展到2.x版本。這其中的原由,也是孩子沒娘,說來話長。


          當初做快速開發平臺立項時,其實是想做為一個免費開源項目,它其實是我設計的第三代 Access 通用框架平臺產品。前兩代是完全開源的,有興趣的可以從這里了解:第一代第二代(首發不在軟件網,這兩篇文章是別人搬運過來的,后面麥田改到了我的賬號下)。然后順帶著公司內部做軟件開發項目時方便一些,完全沒有想過通過快速開發平臺本身來賺錢的事。


          但后面和竹笛討論下來,認為這樣可能會對公司的業務造成沖擊。要是把我們自己的飯碗搞砸,自己先餓死了,什么理想情懷就無從談起。讓我們面對現實,讓我們忠于理想。不肯面對現實的理想,最終只是一場空想。


          于是穩妥起見,變成了現在這種半開源的形式:如果你只是使用 Access 數據庫,那么完全免費;如果升級到 SQL Server 數據庫,或者需要提供相應技術支持,則需要收費。


          雖然做快速開發平臺的研發我是用了心,但我畢竟不能全職干這個。平日里還有很多工作要做,能夠花在快速開發平臺研發上面的時間和精力有限。最終導致快速開發平臺發育有點緩慢,連幫助文檔都很久沒有補齊全了,只能和多年來一直支持的朋友們說聲抱歉。


          雖然困難一直存在,但不會放棄。畢竟是親兒子,怎么能隨便拋棄呢?雖然走得慢了點,但我們一直在路上。


          之前有購買了企業版的朋友,在交流中,跟我“報怨": 哥哥哎,收費版和免費版相比,就只多了一個可以使用 SQL Server 作為后臺數據庫的功能,沒有其它區別嘛!連相關的教程也沒有。我們這買的有點吃虧??!都不好跟領導申請!


      說起這個事,確實有點對不住大家,因此在接下來新的后續版本中,會側重開發一些針對付費版本的新功能,提升付費版本的價值,讓花錢付費支持快速開發平臺的朋友們更物有所值。當然,免費版仍然一如既往,大家不要擔心。


          話不多說,先上點福利給大家。前面都是水,以下才是正文:






      快速開發平臺企業版教程:SQL Server數據庫自動備份及控制日志增長




      在本教程中,主要向大家講解企業版平臺使用過程中,常見但很重要的兩個問題:


      • 怎么實現 SQL Server 數據庫的自動備份
      • 怎么解決 SQL Server 數據庫的無限增大




      關于 SQL Server 數據庫的自動備份


      基于數據庫的管理軟件,最有價值的東西是什么?當然是數據!而備份是防止因為操作失誤、系統故障造成數據損壞、丟失的最有效容災手段,沒有之一!


      在 SQL Server 為我們提供了強大靈活的自動備份功能。在本教程中將為大家講解如何實現每天3點自動備份。為什么要放在半夜3點?當然是為了避免影響正常使用啦。




      關于 SQL Server 數據庫日志的無限增大


          每個 SQL Server 數據庫會有2個文件,一個數據文件(.mdf),一個日志文件(.ldf)。使用一段時間之后,我們會發現日志文件會增長的非???!可能數據庫不到100M,而日志文件卻超過了10G!再加上每日的備份,服務器上的硬盤空間很快就被耗盡了!


      使用 SQL Server 數據庫的 “任務 -> 收縮” 功能,無效,因為該操作主要是釋放未使用的空間;限制日志文件大小,依然無效,甚至當日志寫滿后,數據庫都不能正常寫入數據了。


      將這2個問題結合起來,解決的思路是,通過維護計劃,定期執行以下操作:

      1. 備份數據庫:任務對整個數據庫的操作都是有一定危險性的,所以一定得是很備份。
      2. 截斷日志:只保留指定大小的日志,超出的進行截斷,這個是解決日志無限增大的關鍵步驟。
      3. 收縮數據庫。釋放未使用的空間。
      4. 重新組織索引:因為各種故障可能造成索引異常,而索引異常會導致一些讓人摸不著頭腦的奇怪的問題,而重新組織索引,則可以有效解決。

      注意:在接下來的步驟中,如果有點擊右鍵通過快捷菜單打開某個界面的操作,絕大部分都可以直接使用雙擊的方式來打開,本文中為了大家觀看時更直觀明了,統一使用右鍵快捷菜單的方式。




      SQL Server 數據庫自動備份同時控制日志大小的詳細操作步驟

      1. 登錄服務器,啟動 SQL Server 管理工具 SSMS(Microsoft SQL Server Management Studio)。一般建議用Windows身份驗證登錄,避免后面進行一些操作時,由于權限不足而造成問題。


      2. 進入SSMS后,在對象資源管理器窗格中,展開節點【(local)】->【管理】,然后在【維護計劃】節點上點擊右鍵,在彈出的快捷菜單中選擇【新建維護計劃(N)...】菜單項。


      3. 在彈出的新建維護計劃對話框中,輸入新的名稱“每天3點自動備份數據庫”,然后點【確定】按鈕。


      4. 接下來就自動進入到維護計劃設計界面了,注意工具箱窗格一般會默認打開,如果沒有默認打開,可以通過菜單“視圖(V) -> 工具箱(X)”(或快捷鍵Ctrl+Alt+X)來打開。


      5. 從【工具箱】中選中【“備份數據庫”任務】,按住鼠標左鍵不放,將其拖放到右側空白處松開左鍵,此時會自動創建任務。


      6. 在新添加的【“備份數據庫”任務】上點擊右鍵,在彈出的快捷菜單中選擇【編輯(E)...】菜單項。


      7. 在【“備份數據庫”任務】明細界面,點擊【數據庫(D)】組合框,注意這里的組合框和平時的不太一樣,它不只是一個簡單的值列表,而是一個彈出的對話框。在其中根據需要選擇數據庫,這里我們用來做演示的數據庫名稱是“BLOG”,因此就只選擇這一個數據庫即可,然后再點【確定】按鈕返回。


      8. 接著在【“備份數據庫”任務】明細界面,進行以下操作:

        • 選中【為每個數據庫創建子目錄(U):】復選框。
        • 文件夾(L):】輸入框中修改為“D:\MSSQL_DB_BACKUP”。這里默認是 SQL Server 安裝目錄下的子目錄,一般是在操作系統所在的 C 盤中。為了數據庫的安全和方便管理,這里我們最好換一個其它文件夾(該文件夾不需要事先創建好,備份時如果不存在會自動創建的)。
        • 選中【驗證備份完整性(Y)】復選框。
        • 設置備份壓縮(M):】選擇“壓縮備份”。
        • 點【確定】按鈕完成任務的設置。


      9. 參照第5步的操作,通過從工具箱中拖放的方式,添加一個【“執行 T-SQL 語句”任務】。


      10. 在新添加的【“執行 T-SQL 語句”任務】上點擊右鍵,在彈出的快捷菜單中選擇【編輯(E)...】菜單項。


      11. 在【執行 T-SQL 語句”任務】明細界面,復制以下代碼粘貼到【T-SQL 語句(T):】輸入框,再點【確定】按鈕完成任務的設置。

        --將數據庫恢復模式改為“簡單”
        USE [master]
        GO
        Alter DATABASE BLOG SET RECOVERY SIMPLE WITH NO_WAIT
        GO
        Alter DATABASE BLOG SET RECOVERY SIMPLE
        GO
        
        --收縮日志文件為10MB大小
        USE BLOG
        GO
        DBCC SHRINKFILE (N'BLOG_LOG', 10, TRUNCATEONLY)
        GO
        
        --將數據庫恢復模式恢復為“完整”
        USE [master]
        GO
        Alter DATABASE BLOG SET RECOVERY FULL WITH NO_WAIT
        GO
        Alter DATABASE BLOG SET RECOVERY FULL
        GO
        


      12. 參照第5步的操作,通過從工具箱中拖放的方式,添加一個【“收縮數據庫”任務】。


      13. 在新添加的【“收縮數據庫”任務】上點擊右鍵,在彈出的快捷菜單中選擇【編輯(E)...】菜單項。


      14. 在【“收縮數據庫”任務】明細界面,點【數據庫(D)】組合框,選擇要備份的BLOG數據庫,然后點【確定】按鈕返回到任務明細界面,再點【確定】按鈕完成任務的設置。


      15. 參照第5步的操作,通過從工具箱中拖放的方式,添加一個【“重新組織索引”任務】。


      16. 在新添加的【“重新組織索引”任務】上點擊右鍵,在彈出的快捷菜單中選擇【編輯(E)...】菜單項。


      17. 在【“重新組織索引”任務】明細界面,點【數據庫(D)】組合框,選擇要備份的BLOG數據庫,然后點【確定】按鈕返回到任務明細界面,再點【確定】按鈕完成任務的設置。


      18. 由于這里我們總共添加了4個任務,接下來還需要指定這4個任務的執行順序。點擊選中【“備份數據庫”任務】,這時它周圍會出現較粗的虛框,并且下面會出現一個箭頭,用鼠標指針將這個箭頭拖動到【“執行 T-SQL 語句”任務】上,將這兩個任務連接到一起,拖動過程中箭頭會變成虛線,拖動完成后箭頭會將這2個任務矩形連接到一起。
        這里的最后順序應該是:【“備份數據庫”任務】 --> 【“執行 T-SQL 語句”任務】 --> 【“收縮數據庫”任務】 --> 【“重新組織索引”任務


      19. 維護計劃的任務及執行步驟我們已經添加完成,接下來需要指定何時來執行計劃。點擊上方第1個子計劃(默認名稱是“Subplan_1”)右側的日歷圖標按鈕,打開作業計劃屬性界面。


      20. 在打開的【作業計劃屬性】界面中,將【頻率】-【執行(C):】設為每天,再將【每天頻率】 - 【執行一次,時間為(A):】設為 03:00,再點【確定】按鈕完成設置。


      21. 至此整個作業計劃設置完成,點擊工具欄中的【保存】按鈕(或按 Ctrl+S保存),然后關閉作業計劃設計界面。


      22. “每天3點自動備份數據庫”這個維護計劃創建完成,我們就能在資源管理器窗格的“(local) -> 管理 -> 維護計劃”下面看到它了。到這里還沒完,我們還需要執行一下看看是否能正常執行。


      23. 最后執行狀態顯示為成功,那么就大功造成啦!


      可能遇到的相關問題解決辦法

      事情不可能總是一帆風順,在這這個過程中,可能遇到一些問題,怎么辦?解決它!

      執行維護計劃時,可能會出現錯誤。點擊對話框中消息列中對應的超鏈接。


      這錯誤消息框看得人一頭霧水。


      怎么辦?別慌,我們去看看錯誤日志。在對象資源管理器窗格中展開節點“(local) - SQL Server 代理 - 錯誤日志”,雙擊打開“當前”日志。


      發現日志中有這樣的錯誤消息:無法獲取windows用戶的信息。這時我們就有譜了,因為我們是用Windows身份驗證登錄的,那么問題多半是出在以這個用戶的身份執行維護計劃沒有相應的權限上面。


      維護計劃中好像沒有地方指定以什么用戶身份來執行怎么辦呢?別急,其實維護計劃中,包含了一個個子計劃,而這些子計劃,其實就是一個個的作業。

      在對象資源管理器窗格中展開節點“(local) - SQL Server 代理 - 作業”,找到我們剛才創建的維護計劃對應的作業“每天3點自動備份數據庫.Subplan_1”,雙擊該作業節點打開【作業屬性】界面,我們可以看到所有者即是剛才錯誤提示信息中的Windows用戶名。


      我們將其改為 SQL Server 的默認 sa 用戶,確定后,再嘗試去執行維護計劃。


      沒有問題了!






      Access軟件網交流QQ群(群號:198465573)
       
       相關文章
      快速開發平臺(企業版)--快速平臺升遷至SQLSERVER圖解教程  【Accessgood  2013/12/2】
      快速開發平臺的專業版與企業版有什么區別?   【麥田  2015/7/13】
      關于使用盟威Access快速平臺后臺Data數據庫Access版與...  【麥田  2016/11/22】
      “開發一個工作用軟件”兩個開發方案對比,“開發平臺,平臺企業版,快...  【張志  2017/2/8】
      平臺企業版如何連接后臺sql中其他數據庫  【MDZZ  2018/1/22】
      平臺企業版如何運行后臺sql中其他數據庫中的存儲過程  【123  2018/4/9】
      企業版升遷注意事項匯總  【123  2018/5/28】
       
       訪客評論
      2019/6/2楊惟晨
      access+sql,同道中人,贊!

      2019/6/2王三平
      向劉大師致敬,感謝一路有你!

      2019/6/1lmqlt
      致敬紅塵大師!有幸使用了平臺的各個版本,單位的信息系統都在此基礎上建設,提升了單位的工作效率,在全國行業中打出了品牌。相對而言,第二代產品功能要弱一些,特別是用ACCESS2007以上版本,打開菜單欄沒法隱藏,需要自己加代碼;第三代功能就更智能,適合現在形勢的發展,2007、2010、2013、2016ACCESS都沒問題。第三代產品用了近4年,雖然可能會有不完善的地方,但一直看到系統的升級,系統越來越好用、越來越方便。一分錢一分貨,ACCESS也可以和大系統PK,單機版的系統有很多不方便、也不安全,ACCESS+SQL(網絡版)是首選,尤其是開發中小型單位系統,開發的系統作用立馬升幾個等級。期待有新的版本,期待有新的功能。

      2019/6/1大音稀聲
      頂紅塵大師!

      2019/6/1麥田
      老劉熬夜發文章

      總記錄:5篇  頁次:1/1 9 1 :
       
       發表評論
      評論內容 (必填)

      常見問答
      技術分類
      相關資源
      文章搜索
      關于作者

      紅塵如煙

      文章分類

      文章存檔

      友情鏈接
       
         
      湖北11选5