伺服器維護第 6 部分:建立 SQL 維護計畫

維護計畫可用於排程用於確保資料庫正常執行的工作,例如維持較小的資料庫和處理程序記錄檔大小以及檢查資料庫是否有不一致。Autodesk 建議每週至少在非辦公時間執行一次維護計畫。

在連接的工作群組環境中,應在每個 SQL 伺服器上規劃維護計畫。

管理員的其中一部分工作是定期檢查維護計畫是否成功執行。

如果已對舊版 Vault 伺服器規劃維護計畫,請務必按照本文檢查並更新維護計畫。

以下步驟在所有與 Vault 伺服器配合使用的 SQL 版本 (速成版和完整版 SQL) 中通用。受支援的資料庫引擎的完整清單包含在產品的讀我檔案中。

註: 請注意,如果您執行的是 SQL Express 且未安裝 SQL Management Studio,可透過〈建立適用於 Microsoft SQL Express 的維護腳本〉一節下的腳本,使用過命令提示字元完成以下步驟,或者可安裝 SQL Management Studio Express (可從 Microsoft 的網站取得)。
  1. 登入 SQL Management Studio。
  2. 展開「資料庫」,展開「系統資料庫」。
  3. 在 tempdb 上按一下右鍵,然後選取「內容」。
  4. 選取「檔案」頁面。
  5. 如果使用多核心系統,請按照下面的指導方針規劃其他資料檔案。如果使用單核心系統,請跳至下面的步驟 D。
    1. 資料檔案總數應等於可用實體處理核心數量的一半 - 最多為 8 個資料檔案。(例如:8 個實體核心等於總共 4 個資料檔案:tempdev、tempdev_2、tempdev_3、tempdev_4)
    2. 按一下「加入」按鈕,加入其他資料檔案。
    3. 依需要將新檔案命名為 tempdev_2、tempdev_3...。
    4. 將每個資料檔案的初始大小設定為 1,024 MB。如果總共使用 8 個資料檔案,則可使用 512 MB 的初始大小。
    5. 將「自動成長」設定為 100 MB,每個資料檔案成長總量不受限制。
    6. 將 LDF 記錄檔設定為資料檔案總數合計。(例如,如果總共有 2 個資料檔案,產生的 LDF 應設定為 2048 MB 的初始大小)
    7. 結果將如以下影像所示。
  6. 在「選項」頁面上,將「復原模式」設定為「簡單」,將「相容性層級」設定為「SQL Server 2008 (100)」。
  7. 選取「確定」。

建立適用於完整版 SQL 的 SQL 維護計劃

維護計劃可用於排程用於確保資料庫正常執行的工作,例如維持較小的資料庫和事務處理記錄檔大小以及檢查資料庫是否存在不一致。

註: 這些設定由 Autodesk 所建議,並且針對新安裝應會自動規劃。如果從舊版 Vault 伺服器移轉,則不會指定這些設定,因為管理員可能已特意對其進行變更。

SQL Standard/Enterprise 2008 和 2008 R2

  1. 確認已透過 Autodesk Vault Server Console 備份 Vault,然後再繼續。
  2. 確定所有使用者均已登出 Vault 伺服器。
  3. 在「控制台」中,按兩下「系統管理工具」,然後按兩下「服務」圖示。
  4. 找到「SQL Server Agent (AUTODESKVAULT)」服務
  5. 在「SQL Server Agent (AUTODESKVAULT)」上按一下右鍵,然後選取「內容」。
  6. . 將「啟動類型」變更為「自動」,並啟動該服務。
  7. 開啟 Microsoft SQL Management Studio 並連接至 AutodeskVault 例證。使用 <電腦名稱>\AUTODESKVAULT 做為伺服器名稱,並按「連接」。
  8. 在 Vault 資料庫上按一下右鍵,並選取「內容」。
  9. 在「檔案」頁面上,進行以下設定:
    • 將所有 <Vault> 資料庫的「自動成長」值設定為以 100 MB 為單位成長,成長總量不受限制
    • 將所有 <Vault>_log 檔初始大小值設定為 500 MB
    • 將 <自訂資源庫> 檔案的「自動成長」值設定為 25 MB
    • 將所有 _log 檔案的「自動成長」值設定為以 10 個百分比為單位成長,成長總量不受限制

    或者,使用表格形式:

    邏輯名稱

    初始大小 (MB)

    自動成長

    KnowledgeVaultMaster

    以 10 MB 為單位成長,成長總量不受限制

    KnowledgeVaultMaster_log

    以 10 個百分比為單位成長,成長總量不受限制

    <Vault>

    以 100 MB 為單位成長,成長總量不受限制

    <Vault>_log

    500

    以 10 個百分比為單位成長,成長總量不受限制

    <自訂資源庫>

    以 25 MB 為單位成長,成長總量不受限制

    <自訂資源庫>_log

    以 10 個百分比為單位成長,成長總量不受限制

    <標準資源庫>

    以 25 MB 為單位成長,成長總量不受限制

    <標準資源庫>_log

    以 10 個百分比為單位成長,成長總量不受限制

    註: 上表中儲存格如為空白,表示不應變更預設設定。
    儲存格如為灰色,表示此為預設值,如有不同,應設定為上述值。
  10. 在「選項」頁面上,將「復原模式」變更為「簡單」,將「相容性層級」變更為「SQL Server 2008 (100)」,將「自動壓縮」下拉式清單變更為「False」。「自動」標頭下的所有值應如下所示進行設定。
  11. 針對所有 KnowledgeVaultMaster、Vault 和資源庫 Vault 資料庫執行相同步驟 (步驟 8-10)。
  12. 展開「管理」資料夾,然後選取「維護計畫」資料夾。
  13. 在「維護計畫」資料夾上按一下右鍵,然後選取「維護計畫精靈」;如果顯示以下對話方塊,請按一下「下一步」。
  14. 在「選取計畫屬性」對話方塊中,輸入「Vault 維護計畫」做為名稱,然後按一下「變更」按鈕以設定排程。
  15. 在「作業排程屬性」對話方塊中,設定 Autodesk Vault Server Console 備份完成後要執行的計畫。根據您的資料集大小而定,可能需要在每週的不同日和時間執行此排程。建議您在星期六執行此工作,以確定完成工作所需的時間,然後再確定定期執行此工作的最佳日期和時間。
  16. 在「選取維護工作」對話方塊中,勾選以下選項:
  17. 在「選取維護工作順序」對話方塊中,按照如下所示設定順序:
  18. 在「定義資料庫檢查完整性工作」對話方塊中,從「資料庫」下拉清單中選取「所有使用者資料庫」,然後勾選「包含索引」旁邊的方塊。
  19. 在「定義重建索引工作」對話方塊中,從「資料庫」下拉式清單中選取「所有使用者資料庫」。
  20. 在「定義更新統計資料工作」對話方塊中,選取以下選項。
  21. 在「定義記錄清除工作」對話方塊中,視需要選取清除選項。
  22. 在「選取報告選項」對話方塊中,指定維護報告的位置。
  23. 按一下「下一步」,然後按一下「完成」。

建立適用於 Microsoft SQL Express 的維護腳本

Microsoft SQL Express 不允許您在 SQL Server Management Studio Express 內部建立維護計畫。此外,相對於 SQL 2005,SQL 2008 進行了安全性模型變更。同時,也將需要確保執行 SQL 維護計畫的作業系統 (Windows) 使用者具有 SQL 中的系統管理員 (sysadmin) 角色。

透過命令提示字元修改 tempdb

    如上所述,如果未安裝 SQL Server Management Studio,可執行以下步驟,透過命令提示字元完成 tempdb 資料庫的變更:

  1. 以管理員身份開啟命令提示字元。
  2. 複製並貼上以下各行至命令提示字元中,然後按 Enter。

    SQLCMD -E -S".\AutodeskVault" -Q "ALTER DATABASE [tempdb] SET COMPATIBILITY_LEVEL = 100"
    SQLCMD -E -S ".\AutodeskVault" -Q "ALTER DATABASE [tempdb] MODIFY FILE ( NAME = 
    N'tempdev', SIZE = 1024MB, FILEGROWTH = 100MB)"
    SQLCMD -E -S ".\AutodeskVault" -Q "ALTER DATABASE [tempdb] MODIFY FILE ( NAME = 
    N'templog', SIZE = 1024MB )"
  3. 如果使用多核心系統,請按照下面的指導方針規劃其他資料檔案。**注意事項:FILENAME = 下的檔案系統路徑應與 SQL 資料目錄的位置一樣。在以下範例中,該路徑為 N'C:\Program Files\Microsoft SQL Server\MSSQL10.AUTODESKVAULT\MSSQL\DATA。您將要修改腳本以列示正確路徑。
    1. 資料檔案總數應等於可用實體處理核心數量的一半 - 最多為 8 個資料檔案。如果總共使用 8 個資料檔案,則可使用 512 MB 的初始大小,而非 1024 MB,如下所示。(例如:8 個實體核心等於總共 4 個資料檔案:tempdev、tempdev_2、tempdev_3、tempdev_4)
      SQLCMD -E -S ".\AutodeskVault" -Q " ALTER DATABASE [tempdb] ADD FILE ( NAME = 
      N'tempdev_2', FILENAME = N'C:\Program Files\Microsoft SQL 
      Server\MSSQL10.AUTODESKVAULT\MSSQL\DATA\tempdev_2.ndf', SIZE = 1024MB, 
      FILEGROWTH = 100MB)"
    2. 如果需要建立其他資料檔案,僅需修改以上範例中的 NAME 和 FILENAME 以反映 tempdev_3 等即可。
    3. 將 LDF 記錄檔設定為資料檔案總數合計。(例如,如果總共有 2 個資料檔案,產生的 LDF 應設定為 2048 MB 的初始大小)。
      SQLCMD -E -S ".\AutodeskVault" -Q "ALTER DATABASE [tempdb] MODIFY FILE ( 
      NAME = N'templog', SIZE = 2048MB )"

維護計畫

    複製下面的腳本,然後將其貼至新檔案並儲存成 VaultMaintenance.bat。

    以下範例說明了如何針對名為 Vault 的資料庫執行 C:\ 根目錄下的批次檔案,並將結果輸出至文字檔。

    C:\VaultMaintenance.bat Vault > results.txt
    註: 若直接從此文件進行複製貼上,將需要修復換行符。另請注意,執行維護計劃的使用者需要具有在 SQL 中執行這些作業的權限。此作業也可以在 SQL 的安裝期間或之後完成。
    REM This begins the maintenance plan.
    @echo off
    if "%1"=="" goto NOPARAM
    set VAULTNAME=[%1]
    set VAULTLOG=[%1_log]
    @echo Setting %VAULTNAME% database compatibility to 100
    sqlcmd -E -S ".\AutodeskVault" -Q "ALTER DATABASE %VAULTNAME% SET 
    COMPATIBILITY_LEVEL = 100"
    @echo Setting %VAULTNAME% database recovery model to simple...
    sqlcmd -E -S ".\AutodeskVault" -Q "ALTER DATABASE %VAULTNAME% SET RECOVERY 
    SIMPLE"
    @echo Setting %VAULTNAME% database Autogrowth value...
    sqlcmd -E -S ".\AutodeskVault" -Q "ALTER DATABASE %VAULTNAME%  MODIFY FILE 
    (NAME=%VAULTNAME%, FILEGROWTH=100MB)"
    @echo Setting %VAULTNAME% database Log filesize...
    sqlcmd -E -S ".\AutodeskVault" -Q "ALTER DATABASE %VAULTNAME% MODIFY FILE ( NAME = 
    %VAULTLOG%, SIZE = 512000KB )"
    @echo Setting %VAULTNAME% database Autoclose to false...
    sqlcmd -E -S ".\AutodeskVault" -Q "ALTER DATABASE %VAULTNAME% SET AUTO_CLOSE OFF 
    WITH NO_WAIT"
    @echo Reindexing %VAULTNAME% database...
    sqlcmd -E -S ".\AutodeskVault" -Q "USE %VAULTNAME% DECLARE tableCursor CURSOR FOR 
    SELECT NAME FROM sysobjects WHERE xtype in('U') DECLARE @tableName nvarchar(128) 
    OPEN tableCursor FETCH NEXT FROM tableCursor INTO @tableName WHILE 
    @@FETCH_STATUS = 0 BEGIN DBCC DBREINDEX(@tableName, '') FETCH NEXT FROM 
    tableCursor INTO @tableName END CLOSE tableCursor DEALLOCATE tableCursor"
    @echo Updating Statistics on %VAULTNAME% database...
    sqlcmd -E -S ".\AutodeskVault" -Q "USE %VAULTNAME% Exec sp_MSForEachTable 'Update 
    Statistics ? WITH FULLSCAN'"
    goto EXIT
    :NOPARAM
    echo [FAIL] Please indicate Vault database
    pause
    :EXIT
    REM This ends the maintenance plan.