部署 Ola Hallengrens 腳本 - 索引優化
我以前從未使用過 Ola Hallengren Scripts 。
我計劃第一次為索引優化部署 Ola Hallengren 腳本。我需要在 PROD 中部署它們,所以我要更加小心。無論如何將首先在開發環境中進行測試。但請幫助我了解在部署 OH 索引優化腳本之前要記住的重要事項。
我從連結和以下命令複製了媒體:
正如我所提到的,我以前從未部署過 OH 腳本。
已經部署並成功使用 OH 索引優化腳本的任何人都可以在下面指導我:
- 我需要修改的重要參數值?
- 這些命令將在哪裡創建 SP 和相關的命令執行和命令日誌,都在主數據庫或 MSDB 中?
- 系列程式碼執行 - 我需要先執行哪些程式碼?
- 這裡的命令日誌是什麼?
- 我們在 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 $$
入門
開箱即用的 Ola
MaintenanceSolution.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 的較新版本更新腳本並且不更改原始名稱以匹配您的命名約定,那麼您將有重複的作業。您可能希望“按原樣”保留作業名稱。
索引優化
Ola
IndexOptimize
根據以下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 在他的網站上的文件:
- 這些參數將取決於您想要的任務、執行它們的頻率和時間。這真的取決於你。
- 預設位置是主數據庫,您可以將它們放在其他位置。但我認為這樣做沒有多大好處。
- 執行腳本首先創建命令日誌表。
- 腳本可以使用命令日誌表來記錄事件。
- 支持可用性組。
這些問題中的大部分都在Ola 的常見問題解答中得到了解答。我強烈推薦你閱讀它。
就個人而言,我發現完整的維護解決方案太多了。我更喜歡使用提供的範例來呼叫我想要的任務。
但值得在 dev 中執行它,因為它將為您提供如何創建代理作業的工作範例。這些東西沒有“正確答案”,你真的需要嘗試並選擇適合你的東西。
我苦苦思索的一件事是,如果要備份到網路地址,則需要授予 SQL Server 使用的帳戶的權限。因此它應該是一個域帳戶。