不受支持和支持的 SharePoint Server 数据库更改

原始 KB 编号: 841057

Microsoft SharePoint Server 将数据存储在 Microsoft SQL Server 数据库中,并使用各种存储过程进行常规处理。 因此,SQL Server数据库对于 SharePoint Server 的成功操作非常重要。 SharePoint Server 使用由 Microsoft SharePoint Server 开发团队设计的数据库结构进行测试。 然后,根据该结构批准发布。 如果更改数据库,Microsoft 无法可靠地预测对 SharePoint Server 操作的影响。 本文介绍一些不受支持和支持的数据库更改,以及必须执行哪些操作。

警告

Microsoft 严格禁止对 SharePoint Server 数据库进行所有第三方更改。 如果安装或使用任何第三方工具更改 SharePoint Server 数据库中的数据,则整个 SharePoint Server 场将不受支持。

不支持的数据库更改

不支持的数据库更改包括但不限于以下示例:

  • 添加数据库触发器。

  • 添加新索引或更改表中的现有索引。

  • 添加、更改或删除任何主键或外键关系。

  • 更改或删除现有存储过程。

  • 直接调用现有存储过程,但以下文章中所述的存储过程除外:

  • 添加新的存储过程。

  • 添加、更改或删除任何 SharePoint Server 数据库表中的任何数据。

  • 添加、更改或删除任何 SharePoint Server 数据库表中的任何列。

  • 更改数据库架构。

  • 将表添加到 SharePoint Server 数据库。

  • 更改数据库排序规则。

  • 运行命令 DBCC_CHECKDB WITH REPAIR_ALLOW_DATA_LOSS

    注意 支持运行这些 DBCC_CHECKDB WITH REPAIR_FAST 命令和 REPAIR_REBUILD 命令,因为这些命令仅更新关联数据库的索引。

  • 针对 SharePoint Server 数据库运行即席查询。

  • 启用SQL Server更改数据捕获 (CDC)

  • 启用SQL Server事务复制。

  • 启用SQL Server合并复制。

如果在支持调用期间发现了不受支持的数据库更改,则必须至少使用以下过程之一:

  • 从最后一个已知的良好备份执行数据库还原,其中不包括不受支持的数据库更改。
  • 回滚所有数据库更改。

如果不能执行任一过程,则必须手动恢复数据。 必须先将数据库还原到未修改的状态,然后 Microsoft SharePoint Server 支持才能提供任何数据迁移帮助。

如果需要更改数据库,应联系Microsoft 支持部门以确定产品问题是否存在并应得到解决。

支持的数据库更改

对于某些特定的使用情况,对数据库更改的禁止有以下例外:

  • 从 SharePoint Server 管理用户界面启动的操作。
  • SharePoint Server 特定的工具 (,例如 Microsoft 直接提供的 SharePoint PowerShell cmdlet) 。
  • 通过 SharePoint Server 对象模型以编程方式进行且符合 SharePoint Server SDK 文档的更改。
  • 符合 SharePoint Server 协议文档的活动

Microsoft SharePoint Server 支持代理可以提供在支持事件期间更改 SharePoint Server 数据库的脚本。 在这种情况下,SharePoint Server 开发团队会查看所有更改。 这可确保执行的操作不会导致数据库状态不稳定或不受支持。 在支持事件期间,在 Microsoft SharePoint Server 支持代理的指导下进行的数据库更改不会导致数据库状态不受支持。 不应重新应用 Microsoft SharePoint Server 支持在支持事件之外提供的脚本或更改。

不受支持的读取操作

以编程方式或手动从 SharePoint Server 数据库读取可能会导致意外锁定SQL Server。 这可能会影响性能。 如果以下条件属实,则对 SharePoint Server 数据库执行的任何读取操作都被视为不受支持:

  • 读取操作使用 Microsoft SharePoint Server 开发团队或 Microsoft SharePoint Server 支持部门未提供的查询、脚本、.dll文件等。
  • 读取操作由Microsoft 支持部门标识为解析的屏障。

在此方案中,数据库被视为处于不受支持的状态。 若要将数据库返回到受支持的状态,必须停止所有不受支持的读取操作。