服务器维护第 6 部分:制定 SQL 维护计划

维护计划可用于安排确保数据库正常执行所需的任务,例如保持较小的数据库和事务日志文件,以及检查数据库是否存在不一致。

Autodesk 建议在非办公时间每周至少运行一次维护计划。

在联网的工作组环境中,应该在每个 SQL Server 上配置维护计划。

管理员的部分任务应包括定期检查是否成功运行了维护计划。

如果为早期版本的 Vault 服务器配置了维护计划,请确保按照本文您检查并更新计划。

以下步骤在所有与 Vault 服务器配合使用的 SQL 版本(Express 和完整版 SQL)中通用。受支持的数据库引擎的完整列表位于产品自述文件中。

注: 请注意,如果您运行的是 SQL Express 并且未安装 SQL Management Studio,可以按照“为 Microsoft SQL Express 创建维护脚本”部分下面的脚本通过命令提示完成以下步骤,也可以安装在 Microsoft 的网站上提供的 SQL Management Studio for Express。
  1. 登录 SQL Management Studio。
  2. 展开“数据库”,然后展开“系统数据库”。
  3. 在“tempdb”上单击鼠标右键,然后选择“属性”。
  4. 选择“文件”页面。
  5. 如果使用多核系统,应该使用下面的指导配置其他数据文件。如果使用的是单核系统,请跳至下面的步骤 d。
    1. 数据文件应具有对等数量的可用的逻辑\虚拟处理器。例如,如果计算机有 12 个逻辑处理器,则会有 1x 个 .mdf 文件和 11x 个 .ndf 文件。如果磁盘空间很重要,则可以使用 512 MB 的“大小”,而不是 1024 MB。

      注意:如果使用 SQL 2016 或更高版本,则默认情况下,数据文件的值将小于 8 或为设置过程中检测到的逻辑内核数。可根据需要为特定工作负载增加该值。第二级数据文件的文件名将遵循 tempdb_mssql_#.ndf 命名约定,其中 # 表示每个附加文件的文件序数。

    2. 单击“添加”按钮以添加其他数据文件。
    3. 根据需要为新文件命名 temp2、temp3...。
    4. 将每个数据文件的大小设置为 1,024 MB。如果使用的数据文件总数为 8 个,可以使用 512 MB 的大小。
    5. 设置自动增长到 100 MB,不限制每个数据文件的增长。
    6. 按照合并的数据文件总数来设置 LDF 日志文件。(例如:如果数据文件总数为 2 个,那么生成的 LDF 应设置为大小为 2048 MB)

  6. 对于用户数据库、KMV 和其他 Vault 数据库,在“选项”页面下将“兼容性级别”设置为“SQL Server 2016 (130)”。系统数据库不是由 Autodesk 定义的,将其保留在默认兼容性级别很安全。
  7. 选择“确定”。

为完整版 SQL 创建 SQL 维护计划

维护计划可用于安排确保数据库正常执行所需的任务,例如保持较小的数据库和事务日志文件,以及检查数据库是否存在不一致。

注: Autodesk 建议使用这些设置并应该为新安装自动配置。如果从早期版本的 Vault 服务器中移植,则不会强制执行这些设置,因为管理员可能已经有意更改了这些设置。

SQL Standard/Enterprise

  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 实例。使用 <ComputerName>\AUTODESKVAULT 作为服务器名称,然后按“连接”。
  8. 在 Vault 数据库上单击鼠标右键,然后选择“特性”。
  9. 在“文件”页面上进行以下设置:
    • 将所有 <Vault> 数据库的自动增长值设置为 100 MB(不限制增长)
    • 将所有 <Vault>_log 文件的大小设置为 500 MB
    • 将 <Custom_Library> 文件的自动增长值设置为 25 MB
    • 将所有 _log 文件的自动增长值设置为“按 10%”(不限制增长)

    或者,在表格中:

    逻辑名称

    大小 (MB)

    自动增长

    KnowledgeVaultMaster

    按 10 MB,不限制增长

    KnowledgeVaultMaster_log

    按 10%,不限制增长

    <Vault>

    按 100 MB,不限制增长

    <Vault>_log

    500

    按 10%,不限制增长

    <Custom_Library>

    按 25 MB,不限制增长

    <Custom_Library>_log

    按 10%,不限制增长

    <Standard_Library>

    按 25 MB,不限制增长

    <Standard_Library>_log

    按 10%,不限制增长

    注: 上表中的空白单元指示不应更改默认设置。

    灰色单元指示默认值,如果使用其他值,应按上述方式进行设置的。

  10. 在“选项”页面上,将“兼容性级别”更改为“SQL Server 2016 (130)”,并将“自动收缩”下拉列表更改为“False”。
  11. 对于所有 KnowledgeVaultMaste、Vault 和库 Vault 数据库,执行上述相同步骤。
  12. 展开“管理”文件夹,并选择“维护计划”文件夹。
  13. 在“维护服务合约”文件夹上单击鼠标右键,并选择“维护服务合约向导”。单击“下一步”。

  14. 在“选择计划属性”对话框中,输入“Vault Maintenance Plan”作为名称,然后单击“更改”按钮以设定计划。

  15. 在“作业计划属性”对话框中,将计划设定为完成 Autodesk Vault Server Console 备份后运行。根据数据集的大小,可能需要运行在当周的其他日期和时间运行此计划。您可以在星期六运行该任务以确定完成该任务所需的时间,然后确定定期运行该作业的最佳日期和时间。
  16. 在“选择维护任务”对话框中,选中以下选项:

  17. 在“选择维护任务顺序”对话框中,如下设定该顺序:

  18. 在“定义‘数据库检查完整性’任务”对话框中,从“数据库”下拉列表中选择“所有用户数据库”,然后选中“包括索引”和“仅限物理”旁边的复选框。

  19. 在“定义‘重建索引’任务”对话框中,从“数据库”下拉列表中选择“所有用户数据库”。

  20. 在“定义‘更新统计信息’任务”对话框中,选择以下选项:

  21. 在“定义‘清除历史记录’任务”对话框中,根据需要选择清除选项。

  22. 在“选择报告选项”对话框中,指定维护报告的位置。
  23. 单击“下一步”,然后单击“完成”。

创建 Microsoft SQL Express 2008 的维护脚本

Microsoft SQL Express 不允许您在 SQL Server Management Studio Express 内创建维护计划。

确保运行 SQL 维护计划的操作系统 (Windows) 用户在 SQL 内部拥有系统管理员角色。

通过命令提示修改 Tempdb

    如此部分中先前所述,如果未安装 SQL Server Management Studio,可以通过命令提示执行以下操作来完成 tempdb 数据库更改:

  1. 以管理员身份打开命令提示符。
  2. 复制下面的每一行并粘贴到命令提示中,然后按 Enter 键。

    SQLCMD -E -S".\AutodeskVault" -Q "ALTER DATABASE [tempdb] SET COMPATIBILITY_LEVEL = 130"
    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 数据目录所在的相同位置。在下面的示例中,路径为:C:\Program Files\Microsoft SQL Server\MSSQL15.AUTODESKVAULT\MSSQL\DATA。您将需要修改脚本以列出正确的路径。
    1. 数据文件应具有对等数量的可用的逻辑\虚拟处理器。例如,如果计算机有 12 个逻辑处理器,则会有 1x 个 .mdf 文件和 11x 个 .ndf 文件。如果磁盘空间很重要,则可以使用 512 MB 的“大小”,而不是 1024 MB。

      注意:如果使用 SQL 2016 或更高版本,则默认情况下,数据文件的值将小于 8 或为设置过程中检测到的逻辑内核数。可根据需要为特定工作负载增加该值。第二级数据文件的文件名将遵循 tempdb_mssql_#.ndf 命名约定,其中 # 表示每个附加文件的文件序数。

      SQLCMD -E -S ".\AutodeskVault" -Q " ALTER DATABASE [tempdb] ADD FILE ( NAME = 
      N'tempdev_2', FILENAME = N'C:\Program Files\Microsoft SQL 
      Server\MSSQL15.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 130
    sqlcmd -E -S ".\AutodeskVault" -Q "ALTER DATABASE %VAULTNAME% SET 
    COMPATIBILITY_LEVEL = 130"
    @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.