Sql-Server

部署 Ola Hallengrens 腳本 - 索引優化

  • July 21, 2017

我以前從未使用過 Ola Hallengren Scripts 。

我計劃第一次為索引優化部署 Ola Hallengren 腳本。我需要在 PROD 中部署它們,所以我要更加小心。無論如何將首先在開發環境中進行測試。但請幫助我了解在部署 OH 索引優化腳本之前要記住的重要事項。

我從連結和以下命令複製了媒體:

在此處輸入圖像描述

正如我所提到的,我以前從未部署過 OH 腳本。

已經部署並成功使用 OH 索引優化腳本的任何人都可以在下面指導我:

  1. 我需要修改的重要參數值?
  2. 這些命令將在哪裡創建 SP 和相關的命令執行和命令日誌,都在主數據庫或 MSDB 中?
  3. 系列程式碼執行 - 我需要先執行哪些程式碼?
  4. 這裡的命令日誌是什麼?
  5. 我們在 SQL Server 2014 上設置了 AOAG。請指導我注意這一點。

**注意:**我們使用的是 AOAG 2014。

請幫助我記住這一點。我可以先在 Dev 中進行測試,然後在 PROD 中進行部署。

Ola Hallengren 的解決方案基於復雜的實踐和多年的經驗。不過也有一些怪癖。看一看….

在你開始前

在執行初始腳本之前,請檢查前幾個參數和使用的數據庫:

  • use [master]
  • @CreateJobs
  • @BackupDirectory
  • @CleanupTime
  • @OutputFileDirectory
  • @LogToTable

**提示:**因為表和過程是在腳本use [master]msdb指定的數據庫。

**提示:**閱讀每個參數的說明並根據您的要求或限制進行修改。

創建的對象

該解決方案部署為一個名為 的腳本MaintenanceSolution.sql,該腳本本身將創建儲存過程、表和作業。

以下是創建的對象列表:

桌子

  • $$ dbo $$.$$ ComandLog $$

儲存過程

  • $$ dbo $$.$$ CommandExecute $$
  • $$ dbo $$.$$ DatabaseBackup $$
  • $$ dbo $$.$$ DatabaseIntegrityCheck $$
  • $$ dbo $$.$$ IndexOptimize $$

入門

開箱即用的 OlaMaintenanceSolution.sql腳本將創建以下作業:

  • 數據庫備份 - SYSTEM_DATABASES - FULL
  • 數據庫備份 - USER_DATABASES - DIFF
  • 數據庫備份 - USER_DATABASES - FULL
  • 數據庫備份 - USER_DATABASES - LOG
  • 數據庫完整性檢查 - SYSTEM_DATABASES
  • 數據庫完整性檢查 - USER_DATABASES
  • IndexOpitmize - USER_DATABASES
  • sp_delete_backuphistory
  • sp_purge_jobhistory
  • 輸出文件清理
  • 命令日誌清理

提示:請注意,Ola 的解決方案不會創建任何作業計劃!這是您必須自己計劃和創造的事情。

現在,如果您知道這些工作屬於 Ola 的解決方案,那麼您可以保持原樣。否則,如果您希望標記它們,那麼您可能會考慮在MaintenanceSolution.sql執行腳本之前在內部添加一個字元串前綴。SET @JobName[0-9][0-9] = '使用合適的文本編輯器對字元串進行正則表達式搜尋,並為作業名稱添加前綴

例如OLA Database Backup - SYSTEM_DATABASES - FULL

**注意事項:**請記住,如果您稍後使用 Ola 的較新版本更新腳本並且不更改原始名稱以匹配您的命名約定,那麼您將有重複的作業。您可能希望“按原樣”保留作業名稱。

索引優化

OlaIndexOptimize根據以下Microsoft 建議創建了他的儲存過程:

  • 數據/索引 > 1000 頁時的一般索引維護

    • 碎片 >5% 和 <= 30%

      • 做:索引重組
    • 碎片 > 30%

      • 做:索引重建

**提示:**根據您的數據和/或某些表中的記錄數量,您可能需要考慮創建具有不同參數的單個作業,以滿足您對更大表的要求。

數據庫備份

備份作業為每個級別的數據庫實例創建子目錄。因此,如果您在MyServer名為的實例上的伺服器上執行腳本MyInstance並且數據庫已命名MyDatabase並且您正在查看完整備份,那麼備份文件將儲存在以下目錄中,並具有以下名稱:

H:\MyServer\MyInstance\MyDatabase\FULL\MyServer_MyDatabase_FULL_20170712_105500.bak

DIFF 備份將如下所示:

H:\MyServer\MyInstance\MyDatabase\DIFF\MyServer_MyDatabase_DIFF_20170712_105500.bak

等等。

最佳實踐

考慮將解決方案按原樣部署到開發伺服器(好的,修改您將使用的數據庫),然後查看各個腳本、作業和表。熟悉解決方案,然後根據您的要求進行修改。

當然,還可以考慮閱讀 Ola 在他的網站上的文件:

  1. 這些參數將取決於您想要的任務、執行它們的頻率和時間。這真的取決於你。
  2. 預設位置是主數據庫,您可以將它們放在其他位置。但我認為這樣做沒有多大好處。
  3. 執行腳本首先創建命令日誌表。
  4. 腳本可以使用命令日誌表來記錄事件。
  5. 支持可用性組。

這些問題中的大部分都在Ola 的常見問題解答中得到了解答。我強烈推薦你閱讀它。

就個人而言,我發現完整的維護解決方案太多了。我更喜歡使用提供的範例來呼叫我想要的任務。

但值得在 dev 中執行它,因為它將為您提供如何創建代理作業的工作範例。這些東西沒有“正確答案”,你真的需要嘗試並選擇適合你的東西。

我苦苦思索的一件事是,如果要備份到網路地址,則需要授予 SQL Server 使用的帳戶的權限。因此它應該是一個域帳戶。

引用自:https://dba.stackexchange.com/questions/179942