Microsoft SQL Server 2000 Service Pack 4 - 数据库引擎组件

# Microsoft SQL Server 2000 Service Pack 4

# Database Components

##### 2005 年 3 月 21 日

© 版权所有 Microsoft Corporation，2004。保留所有权利。

SQL Server 文档小组不能解答技术支持问题，但是欢迎您就本自述文档提出建议和意见。通过下面的链接可以快速并直接发送电子邮件反馈。在发送反馈时请使用英文书写。
要提交有关本文档的书面反馈，请单击此处：提交反馈。

# 目录

1.0 简介

1.1 系统要求

1.2 升级到 Database Components SP4 之前

1.3 验证 Microsoft 数据访问组件的版本

1.4 确定 SQL Server 2000 的当前版本

1.5 有关 SP4 的其他信息

1.6 SQL Server 2000 联机丛书更新已可用

2.0 可以找到并下载 Database Components SP4 的位置

2.1 选择正确的语言

2.2 下载 Database Components SP4

2.3 解压缩 Database Components SP4 文件

2.4 下载和解压缩阶段准则

2.5 Database Components SP4 安装文档

3.0 安装 Service Pack

3.1 准备安装 Database Components SP4

3.2 安装 Database Components SP4

3.3 重新启动服务和应用程序

3.4 在故障转移群集上安装

3.5 在复制服务器上安装 Database Components

3.6 将 SP4 应用于复制拓扑中的只读数据库或文件组

3.7 升级链接服务器的目录

3.8 卸载 Database Components SP4

3.9 重新应用 Database Components SP4

4.0 其他安装信息

4.1 无值守安装

4.2 再分发 SP4 Database Components

4.3 Systems Management Server 分布式安装

5.0 文档说明

5.1 数据库增强功能

5.2 复制增强功能

5.3 SQL Server 代理和共享工具增强功能

5.4 SQL Server 连接组件增强功能

5.5 Meta Data Services 增强功能

5.6 数据转换服务增强功能

5.7 XML 增强功能

5.8 虚拟备份设备 API 增强功能

5.9 错误报告

5.10 可维护性增强功能

5.11 English Query 增强功能

5.12 用于 C 语言的 DB-Library 和嵌入式 SQL

[返回页首]

# 1.0 简介

本自述文件描述如何使用 Microsoft® SQL Server™ 2000 Service Pack 4 (SP4) 的 Database Components 部分将现有的 SQL Server 2000 数据库引擎实例升级到 SQL Server 2000 SP4。

安装 SP4 的一般过程如下：

1. 确定是否可以使用 SP4，如果可以，确定需要安装 SP4 的哪一部分或哪些部分。确保查阅了第 1.0 节中的所有部分，然后再下载并安装 SP4。
2. 下载并解压缩 Service Pack 安装文件。第 2.0 节描述如何获取 SP4 安装文件。
3. 准备要升级到 SP4 的实例。第 3.1 节详细描述安装 SP4 之前的准备步骤。
4. 安装 SP4。第 3.2 节详细描述运行 SP4 安装程序的选项。

SQL Server 2000 SP4 包含四个部分：

- Database Components SP4 更新 SQL Server 2000 数据库引擎的实例，不包括 SQL Server 2000 Desktop Engine (MSDE 2000) 的实例。Database Components SP4 可以用来升级 SQL Server 2000 Workgroup Edition 实例。Database Components SP4 包括对下列各项的更新：
  - 数据库引擎。
  - 所有数据库客户端工具和实用工具，如 SQL Server 企业管理器和 osql 实用工具。
  - 数据库客户端连接组件，如用于 SQL Server 2000 的 Microsoft OLE DB 提供程序、SQL Server 2000 ODBC 驱动程序和客户端 Net-Library。
  - 复制。
  - 数据转换服务 (DTS)。
  - Meta Data Services。
- Analysis Services SP4 更新 SQL Server 2000 安装中 SQL Server 2000 Analysis Services 的各部分。
- MSDE 2000 SP4 更新 SQL Server 2000 MSDE 2000 和 MSDE 2000 Release A 的实例。
- SQL Server 2000 SP4（64 位）包含 SQL Server 2000（64 位）的所有更新，是 SQL Server 2000（64 位）的第一个 Service Pack。

所有 SQL Server Service Pack 都是累积的。SQL Server SP4 包含 SP1、SP2、SP3 和 SP3a 中提供的修复程序。

Database Components SP4 只能对企业版、标准版、开发版或个人版中的 SQL Server 2000 数据库引擎实例使用。SQL Server 2000 SP4 的其他部分应用于其他 SQL Server 2000 组件，例如 Analysis Services、MSDE 2000 或 SQL Server 2000（64 位）。Analysis Services SP4、MSDE 2000 SP4 和 SQL Server 2000 SP4（64 位）的用法都有各自的自述文件进行描述。其他自述文件可以从此 Microsoft 网站获得。

[返回页首]

## 1.1 系统要求

本节描述系统要求的更改以及影响 Database Engine SP4 安装的相关系统问题。有关 SQL Server 2000 系统要求的常规信息，请访问此 Microsoft 网站。

##### 所支持系统的更改

- Windows NT 4.0、Windows Millennium Edition 和 Windows 98 平台上不支持 SQL Server 2000 SP4。
- SQL Server 2000 SP4 最终发布之后的 12 个月内，Windows NT 4.0、Windows Millennium Edition 和 Windows 98 平台上安装的 SQL Server 2000 SP3a 可以继续得到关键热修复程序的支持。
- SQL Server 2000 SP4 支持在 Windows 2003 SP1 的 X64 或兼容处理器上以 Windows-on-Windows 64 模式运行 SQL Server 2000（32 位）。

##### 所支持系统的安装问题

如果下列任一安全策略已被设置为“禁止安装”，则 Database Components SP4 安装将失败。

- Windows XP 的本地安全策略“设备：未签名驱动程序的安装操作”
- Windows 2000 的本地安全策略“未签名非驱动程序的安装操作”

如果使用“禁止安装”设置，则必须在安装 Database Components SP4 之前将该设置更改为“默认继续”。如有必要，可以在安装完成之后将该策略还原为以前的设置。

说明 “禁止安装”不是这些安全策略的默认设置。

设置安全策略

1. 在“控制面板”中，双击“管理工具”。
2. 双击“本地安全策略”。
3. 展开“本地策略”。
4. 选中“安全选项”。
5. 确保在安装 Database Components SP4 之前，右窗格中的下列选项被设置为“默认继续”：
6. 对于 Windows XP 和 Windows 2003：“设备：未签名驱动程序的安装操作”。
7. 对于 Windows 2000：“未签名非驱动程序的安装操作”。

[返回页首]

##### 应用程序要求

如果某个应用程序正在使用您的 SQL Server 2000 实例，则在升级到 Database Components SP4 之前，应询问应用程序提供商是否所有 SQL Server 2000 升级注意事项都适用于该应用程序。

[返回页首]

## 1.2 升级到 Database Components SP4 之前

本节描述在使用 Database Components SP4 升级现有的 SQL Server 2000 数据库引擎实例之前，必须解决的问题以及必须执行的任务。

在 Database Components SP4 实例上创建的数据库或数据库备份可以在早期版本的 SQL Server 2000 上附加或还原。但是，对复制拓扑中的数据库有一些限制。有关更多信息，请参见 1.2.2 复制拓扑或日志传送拓扑中实例的注意事项。

Database Components SP4 安装程序自动检测要升级的 SQL Server 2000 实例所使用的 SQL Server 2000 的版本。安装程序仅升级该实例已安装的组件。例如，如果对运行 SQL Server 2000 标准版的计算机应用此 Service Pack，则不会尝试升级只有 SQL Server 2000 企业版中才有的组件。

可以将 Database Components SP4 应用于 SQL Server 的单个默认实例或命名实例。如果要将多个 SQL Server 2000 实例升级到 SP4，则必须对每个实例应用 SP4。如果计算机上有一个或多个 SQL Server 2000 实例，那么当其中一个实例升级到 SP4 时，所有的工具都将升级到 SP4。每个实例并不具有单独的工具副本。

如果某个应用程序正在使用您的 SQL Server 2000 实例，应首先咨询应用程序提供商是否存在任何特定于该应用程序的 SQL Server 2000 升级注意事项。

[返回页首]

### # 1.2.1 确定如何删除 Database Components SP4

在使用 Database Components SP4 升级现有的数据库引擎实例之前，建议您计划一下如何在以后需要时将实例还原到先前状态。安装 SQL Server 2000 Database Components SP4 时，会为了进行维护而更改系统表。还会升级作为复制拓扑成员的用户数据库和分发数据库。由于这些更改的性质，无法轻易删除 Database Components SP4。要还原为安装 Database Components SP4 前所运行的版本，必须先卸载 SQL Server 2000 数据库引擎实例，然后重新安装该实例。接下来，如果运行过以前的 SQL Server 2000 Service Pack 或应用过任何热修复程序，必须将相应的 Service Pack 和修复程序重新应用于该实例。

说明 要删除 SP4，必须拥有在应用 SP4 之前最新备份的 master、model 和 msdb 数据库。有关更多信息，请参见 3.1.1 备份 SQL Server 数据库。

有关更多信息，请参见 3.8 卸载 SP4。

[返回页首]

### 1.2.2 复制拓扑或日志传送拓扑中实例的注意事项

SQL Server 2000 SP4 安装程序升级作为复制拓扑成员的用户数据库。此升级因素可能会影响复制的用户数据库的备份和还原功能。在安装 SP4 之前，确保复制数据库和文件组是可写的。有关将 SP4 应用于复制拓扑中的数据库的更多信息，请参见 3.5 在复制服务器上安装 Database Components。复制的其他备份和还原注意事项在 5.2.6 合并复制的备份和还原问题中详细描述。

说明 如果 SQL Server 实例不是复制拓扑的一部分，则可以在任何其他版本的 SQL Server 2000 上备份用户数据库并进行还原。

如果 SP4 安装程序检测出用户数据库或文件组不可写，将执行以下操作：

- 将 SP4 复制更新应用于所有可写的用户数据库。
- 将只读数据库的列表写入安装程序日志（该日志位于 winnt\sqlsp.log）。
- 显示以下警告消息：

      Setup has detected one or more databases and filegroups which are not writable.

  说明 该消息不会影响 Database Components 的无值守安装。有关无值守安装的更多信息，请参见 4.1 无值守安装。

除非安装程序日志中列出的某些数据库是复制拓扑的成员，否则可以忽略此警告。如果安装程序日志中列出的任何只读数据库是复制拓扑的成员，则必须使这些数据库可写，并将 SP4 安装程序重新应用于该 SQL Server 2000 实例。

有关使数据库可写的信息，请参见 3.6 将 SP4 应用于复制拓扑中的只读数据库或文件组。有关重新应用 SP4 的更多信息，请参见 3.9 重新应用 Database Components SP4。

##### 日志传送和 Database Components

由于不可写数据库不会导致安装失败，因此不必在升级到 Database Components SP4 之前删除日志传送。但是，如果该数据库要将日志传送到作为复制发布服务器的数据库，则必须执行下列操作：

1. 在应用 SP4 之前，使数据库脱机。
2. 将 SP4 应用于该实例。
3. 使数据库重新联机。
4. 登录到查询分析器并运行以下脚本：

       USE master
       GO
       EXEC sp_vpupgrade_replication
       GO

如果在应用 SP4 时未将所有向发布数据库传送日志的不可写数据库脱机，将收到以下错误：

`Error Running Script sp_vpupgrade_replication (1)`

如果收到该错误，请按照前面的步骤操作。

说明 安装过程中，安装程序不会区分只读数据库和脱机或可能有问题的数据库。如果在安装过程中，某个复制数据库或文件组处于脱机状态或可疑状态，并包含在复制拓扑中，则必须使数据库可写后再重新应用 Service Pack。

[返回页首]

## 1.3 验证 Microsoft 数据访问组件的版本

Database Components SP4 安装程序确定是否要将已安装的 Microsoft 数据访问组件 (MDAC) 版本升级为 MDAC 2.8 SP1。

- 运行 Windows 2000 的计算机升级到 MDAC 2.8 SP1。
- 运行 Windows XP 或 Windows Server 2003 的计算机不升级到 MDAC 2.8 SP1。如果系统要求安装 MDAC 2.8 SP1 中包含的任何修复程序，请将系统升级为 Windows XP SP2 或 Windows Server 2003 SP1，以便获取 MDAC 2.8 SP2。
- 在安装了相同或更高版本的 MDAC 的计算机上，不会安装 MDAC 2.8 SP1。

  说明 如果安装了 Database Components SP4 的计算机随后升级到更新的操作系统平台，则 SP4 安装的 MDAC 版本将不再存在。

说明 有关确定计算机上 MDAC 版本的说明，请参见知识库文章 301202。

Database Components SP4 安装 MDAC 2.8 SP1 时，MDAC 的语言版本与 Database Components SP4 的语言版本相同。如果要保留与 Database Components SP4 不同的 MDAC 语言版本，则必须下载并安装相应的 MDAC 2.8 SP1 语言版本，然后再运行 Database Components SP4 安装程序。可以从此 Microsoft 网站下载 MDAC 2.8 SP1 的特定语言版本。

MDAC 2.8 SP1 包括到 MSXML 3.0 SP7 的升级。MDAC 2.81 还更新 Microsoft SQL Server 2000 附带的 SQLXML 1.0。此 Service Pack 不安装或更新 SQLXML 3.0。如果应用程序要求使用 SQLXML 3.0，必须从此 Microsoft 网站下载并安装。有关 MDAC 2.8 SP1 的更多信息，请访问此 Microsoft 网站。有关 MDAC 版本的更多信息，请参见知识库文章 822758。知识库文章 884930 中介绍了 MDAC 2.8 SP1 中包含的修复程序。

说明 预发行版的 SQL Server 2000 SP4 安装预发行版的 MSXML 3.0 SP7。如果已安装了预发行版的 SQL Server 2000 SP4，建议您从此 Microsoft 网站下载并安装 MSXML 3.0 SP7 最终发布版。

[返回页首]

## 1.4 确定 SQL Server 2000 的当前版本

在运行安装程序之前，必须确定要升级的 Database Components 实例的版本。

确定已安装的 SQL Server 2000 Database Components 版本

1. 使用 isql、osql 或查询分析器，对数据库引擎实例执行以下查询之一。
   - `SELECT SERVERPROPERTY('ProductLevel')`
   - `SELECT @@VERSION`
   - `SELECT SERVERPROPERTY('ProductVersion')`
2. 利用下表确定您的 Database Components 版本。

   SQL Server 2000 版本和级别 | @@VERSION | 产品级别
   SQL Server 2000 原始版本 | 8.00.194 | RTM
   Database Components SP1 | 8.00.384 | SP1
   Database Components SP2 | 8.00.534 | SP2
   Database Components SP3、SP3a 或 MSDE 2000 Release A | 8.00.760 | SP3
   Database Components SP4 | 8.00.2039 | SP4

   说明 如果在安装产品之后或安装以前的 Service Pack 之后应用了热修复程序，您的产品版本与上述值可能会有所不同。例如，在对 SQL Server 2000 SP3a 应用了安全修复程序 MS03-031 之后，`@@VERSION` 返回值 8.00.818。

3. （可选）如果无法确定正在运行的版本是 SQL Server 2000 数据库引擎还是 MSDE 2000，请使用 isql、osql 或查询分析器对不确定的实例执行以下查询。
   - `SELECT SERVERPROPERTY('Edition')`

   如果该查询返回“desktop engine”，则说明您正在运行 MSDE 2000 实例；否则，您正在运行 SQL Server 2000 数据库引擎实例。

[返回页首]

## 1.5 有关 SP4 的其他信息

该 Service Pack 中包含的修复程序列表将列在 Microsoft 知识库文章 888799 中。888799 中列出的每个修复程序都包含一个链接，指向有关该修复程序所解决问题的知识库文章。使用指向各个知识库文章的链接可以了解各个修复程序的信息。

对于未能及时包含在本自述文件中、与 SQL Server 2000 Service Pack 4 相关的信息，将发布在 Microsoft 知识库文章 884525 中。

本自述文件中提到的知识库文章位于 Microsoft 支持知识库。

在知识库中查找文章

1. 在“高级搜索”下的“搜索”文本框中，键入所需的文章编号。
2. 在“搜索类型”中，选择“文章 ID”。
3. 单击“运行搜索”右箭头按钮。

##### 热修复程序

所有公开发布的 SQL Server 2000 SP3a 和 SQL Server 2000（64 位）安全公告已在 SP4 中解决。

如果您在 2004 年 12 月 2 日后收到 SQL Server 2000 热修复程序，则该热修复程序可能未包括在 SP4 中。请与主要的产品支持提供商联系获取用于 SQL Server 2000 SP4 的同一热修复程序。

SQL Server 2000 SP4 包括可维护性增强功能，使您可以卸载以后的热修复程序。有关更多信息，请参见 5.10 可维护性增强功能。

##### 与 Slammer 蠕虫有关的修复程序

Microsoft SQL Server 2000 SP4 包含了对 SQL Server 2000 组件的更改，可以解决 Slammer 蠕虫造成的问题：

- 可以对 SQL Server 2000 企业评估版应用 SP4，以便将修复程序应用于该版本 SQL Server 的实例。
- SP4 解决了一些客户在 SQL Server 2000 SP3 中安装 Microsoft 数据访问组件 (MDAC) 时遇到的安装问题。
- 如果将 SQL Server 2000 SP4 或 SP3a 的某个实例配置为不支持网络连接，则该实例也将停止使用 UDP 端口 1434。

##### SQL Server CE 和 SQL Mobile Server 工具更新

对于已升级或计划将 SQL Server 2000 数据库和发布服务器升级到 SP4 的 Microsoft SQL Server 2000 Windows® CE Edition (SQL Server CE) 和 SQL Server 2005 Mobile Edition (SQL Mobile) 用户，还应该更新 Microsoft Internet 信息服务 (IIS) 服务器上的服务器复制组件。对于 SQL Server CE 和 SQL Mobile，更新的服务器工具安装程序已可用。

说明 即使在升级到 SQL Server 2000 SP3 或 SP3a 之后更新了服务器复制组件，仍必须安装最新的 SP4 特定服务器工具组件更新。

##### OPENXML 更新

SQL Server 2000 SP4 消除了 OPENXML 对操作系统安装的 MSXML 版本的依赖性。Database Components SP4 将安装 MSXML 技术的内部版本，该版本向后兼容 MSXML 2.6。

[返回页首]

## 1.6 SQL Server 2000 联机丛书更新已可用

SQL Server 2000 联机丛书是 Database Components 2000 的主要用户文档。联机丛书会使用修复程序和新的信息定期更新。

- 最新版本的联机丛书位于此联机丛书下载网站，是一组可下载的文件。
- 可以从此 网站获取最新版本的联机丛书（英语版）。

##### 更新的 SQL Server 2000 示例已可用

针对 SP3 和 SP3a 更新的 SQL Server 2000 数据库引擎和 Analysis Services 的示例已经可用。可以从此 Microsoft 网站下载这些更新的示例。

[返回页首]

# 2.0 可以找到并下载 Database Components SP4 的位置

SQL Server 2000 SP4 通过下列方式分发：

- SQL Server 2000 Service Pack 4 光盘，其中包含下列组件的 Service Pack：
  - Database Components SP4
  - Analysis Services SP4
  - MSDE 2000 SP4
  - SQL Server 2000 SP4（64 位）

  如果您有 SP4 光盘，则可以直接使用光盘中的 Database Components SP4 文件，将 SQL Server 2000 实例升级到 SP4。

- 可以从 Internet 上的此 Microsoft 网站下载的四个自解压缩安装包文件：
  - SQL2000-KB884525-SP4-x86-LLL.exe (Database Components SP4)
  - SQL2000.AS-KB884525-SP4-x86-LLL.exe (Analysis Services SP4)
  - SQL2000.MSDE-KB884525-SP4-x86-LLL.exe (Desktop Engine (MSDE 2000) SP4)
  - SQL2000-KB884525-SP4-ia64-LLL.exe（SQL Server 2000 SP4（64 位））

  说明 LLL 代表因语言而异的指示符。

  如果没有 SP4 光盘，可以下载 SQL2000-KB884525-SP4-x86-LLL.exe，然后运行该文件，将 Database Components SP4 文件解压缩到计算机上。SQL2000-KB884525-SP4-x86-LLL.exe 会在磁盘上创建一组文件夹和文件，组织结构与 SP4 光盘上的 Database Components 文件夹和文件相同。在完成该文件解压缩阶段之后，即可从磁盘上的文件夹安装 Database Components SP4。

[返回页首]

## 2.1 选择正确的语言

SQL Server 2000 Database Components Service Pack 是针对各种语言提供的。要升级 SQL Server 2000 实例，必须获取与实例语言相同的 Service Pack。Service Pack 可以在 SQL Server 2000 SP4 光盘上获取，也可以通过下载 Database Components SP4 文件获取。例如，如果升级日语版的 SQL Server 2000 实例，必须获取日语版的 Database Components SP4。

如果无法确定 SQL Server 2000 实例的语言，请执行下列操作：

- 单击“开始”，然后单击“运行”。
- 在“打开”框中，键入“Regedit”，然后单击“确定”。
- 查找并选择下列注册表项之一：
  - 对于 SQL Server 2000 的默认实例，查找并选择以下子注册表项：

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion

  - 对于 SQL Server 2000 的命名实例，查找并选择以下子注册表项：

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\InstanceName\CurrentVersion

    其中，InstanceName 是实例的名称。

- 查看右侧列表窗格中 Language 条目的值。将该值与下表中的值进行比较，确定 SQL Server 2000 实例的语言：

  Language 注册表值（用十六进制表示） | Language 注册表值（用十进制表示） | 该实例的语言
  0x00000404 | 1028 | 繁体中文
  0x00000407 | 1031 | 德语
  0x00000409 | 1033 | 英语
  0x0000040a | 1034 | 西班牙语
  0x0000040c | 1036 | 法语
  0x00000410 | 1040 | 意大利语
  0x00000411 | 1041 | 日语
  0x00000412 | 1042 | 朝鲜语
  0x00000804 | 2052 | 简体中文

[返回页首]

## 2.2 下载 Database Components SP4

下载 Database Components SP4 的自解压缩安装包：

- 转至此 Microsoft 网站。
- 从该页右上方的“完整下载”下拉列表中，选择与 SQL Server 2000 实例的语言相匹配的语言，并单击“Go”。
- 在与所选语言对应的 Microsoft Download Center 页面上，选择文件 SQL2000-KB884525-SP4-x86-LLL.exe，其中 LLL 因语言而异。

[返回页首]

## 2.3 解压缩 Database Components SP4 文件

下载了包含安装包的自解压缩文件之后，必须解压缩 Database Components SP4 文件：

- 打开 Windows 资源管理器，浏览到保存所下载自解压缩安装包文件的文件夹。
- 双击下载的文件，以便解压缩 Database Components SP4 文件。按照系统要求，指定要将 SP4 文件解压缩到的文件夹。

[返回页首]

## 2.4 下载和解压缩阶段准则

在从 Internet 下载并解压缩 Database Components SP4 安装文件时，请遵循下列准则：

- 要安装或升级到 Database Components SP4，请将 SQL2000-KB884525-SP4-x86-LLL.exe 下载到计算机上的某个文件夹或网络共享目录上的某个文件夹。确保可用空间大约是该可执行文件大小的三倍，以便解压缩并存储 Service Pack 安装文件。必须拥有足够的空间来存储自解压缩文件和解压缩后的 Service Pack 文件，并拥有足够的临时工作空间来存储自解压缩程序。
- 将 SQL2000-KB884525-SP4-x86-LLL.exe 下载到本地目录或共享目录并运行安装文件时，SQL2000-KB884525-SP4-x86-LLL.exe 会提示您输入要保存 Service Pack 文件的文件夹的名称。

  说明 如果将 Service Pack 解压缩到网络共享目录中，指定的文件夹路径是运行 SQL2000-KB884525-SP4-x86-LLL.exe 的文件夹的相对路径。

- 解压缩组件之后，可以重命名或移动该文件夹。但是，请确保文件夹路径名不包含空格。
- 自解压缩文件将生成一组文件夹和文件，它们与 SP4 CD-ROM 上的文件夹和文件完全相同。如果下载 SP4，则必须先对下载的文件解压缩，生成 Service Pack 文件夹，然后才能运行 SQL Server 安装程序。
- 对于 Database Components SP4，CD-ROM 和解压缩文件的安装过程是相同的。
- 可以将全部三个 SP4 文件下载到同一个目标文件夹，以便创建的文件夹与完整的 SQL Server 2000 SP4 光盘具有相同的结构。三个自解压缩文件不会相互覆盖，也不会相互干扰。

[返回页首]

## 2.5 Database Components SP4 安装文档

Database Components SP4 安装文件包含经过更新的安装文档，在 Database Components SP4 安装过程中，通过单击“帮助”可以访问此文档。此安装文档不会更新计算机上已安装的 SQL Server 2000 联机丛书的版本。有关如何获取更新版 SQL Server 2000 联机丛书的信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。如果只希望访问更新的 SQL Server 2000 SP4 安装文档，而不更新 SQL Server 2000 联机丛书，请运行 Setupsql.chm 文件。Setupsql.chm 位于 SP4 CD-ROM、包含解压缩 Service Pack 文件的本地文件夹或网络共享位置下的 \Books 子文件夹中。

[返回页首]

# 3.0 安装 Service Pack

要安装 Database Components SP4，请遵循以下各节中的安装说明。在安装 Database Components SP4 之前，请查阅 1.0 简介中的资料。安装 Database Components SP4 的步骤如下：

1. 准备安装 Database Components SP4
2. 安装 Database Components SP4
3. 重新启动服务和应用程序

[返回页首]

## 3.1 准备安装 Database Components SP4

在安装 Database Components SP4 之前，必须执行下列操作：

1. 备份 SQL Server 数据库
2. 确认系统数据库具有足够的可用空间
3. 停止服务和应用程序

[返回页首]

### 3.1.1 备份 SQL Server 数据库

在安装 Database Components SP4 之前，需要备份 master、msdb 和 model 数据库。安装 SP4 会修改 master、msdb 和 model 数据库，从而导致它们与 SQL Server SP4 之前的版本不兼容。如果决定重新安装 SQL Server 2000 而不安装 SP4，则必须备份这些数据库。

尽管 SP4 只对作为复制拓扑成员的用户数据库执行更新，但是备份用户数据库仍不失为明智之举。

如果在升级到 SP4 之后出现故障，则可以使用现有的复制备份方案将数据库还原到已知点。建议在应用 SP4 之后，为复制拓扑中包含的所有用户数据库创建日志或完整的数据库备份。这样，如果复制数据库失败，就不必在还原数据库之后重新应用 SP4。

[返回页首]

### 3.1.2 确认系统数据库具有足够的可用空间

如果没有为 master 和 msdb 数据库选择“自动增长”选项，那么数据库必须至少有 500 KB 的可用空间。要确认 master 或 msdb 数据库是否具有这么多空间，请分别对它们运行 sp_spaceused 系统存储过程。如果任一数据库中未分配的空间少于 500 KB，则应增加相应数据库的大小。有关更多信息，请参见 SQL Server 2000 联机丛书中的“扩充数据库”。

如果为 master 和 msdb 数据库选择了“自动增长”选项，并且驱动器上有足够的空间，可以跳过上述空间确认步骤。

要确认是否已在 SQL Server 2000 中选中了“自动增长”选项，请打开 SQL Server 企业管理器，右键单击数据库图标，然后单击“属性”。确认已选中“文件自动增长”复选框。

[返回页首]

### 3.1.3 在运行 Database Components SP4 安装程序之前停止服务和应用程序

在安装 Database Engine SP4 之前，应停止所有应用程序和服务，包括“控制面板”、“添加和删除程序”、“SQL Server 2000 Reporting Services”、“SQL Server 2000 Notification Services”以及所有连接到所升级的数据库引擎实例的应用程序。

可以在不事先关闭服务的情况下应用 Database Components SP4，但事后除非重新启动系统，否则有些服务将无法重新启动。如果不关闭服务，安装程序完成时将提示您重新启动计算机。如果不重新启动系统，下列服务可能会无法启动：

- Microsoft 分布式事务处理协调器 (DTC) 和 Microsoft 搜索服务。
- 用于正在升级的实例（例如，MSSQL$NamedInstance）的 MSSQLServer 和 SQLServerAgent 服务。
- Microsoft 组件服务、Microsoft 消息队列和 Microsoft COM 事务集成器。

您可以降低安装 Database Components SP4 之后需要重新启动计算机的可能性。为降低这种可能性，在运行安装程序之前，应停止上表中的服务和应用程序。

不能在群集环境中停止这些服务。有关更多信息，请参见 3.4 在故障转移群集上安装。

[返回页首]

## 3.2 安装 Database Components SP4

下列信息仅适用于 SQL Server 2000 的 Database Components 部分。

从下列任一位置运行 Setup.bat 脚本：

- 在本地计算机上，包含从 SQL2000-KB884525-SP4-x86-LLL.exe 解压缩的 Service Pack 文件的文件夹，其中 LLL 因语言而异。
- SQL Server 2000 SP4 CD-ROM 上的根文件夹。
- 在网络共享位置上，包含从 SQL2000-KB884525-SP4-x86-LLL.exe 解压缩的 Service Pack 文件的文件夹。

说明 为了从网络共享位置安装数据库组件，必须首先执行下列操作之一：

- 将包含解压缩的 Service Pack 文件的网络共享位置映射为本地计算机上的可用驱动器号，转到映射驱动器上包含 Setup.bat 的文件夹，然后运行 Setup.bat。
- 运行 \X86\Setup 中的 Setupsql.exe 文件开始安装，\X86\Setup 是网络共享位置中包含解压缩 Service Pack 文件的文件夹中的子文件夹。

##### 运行 Database Components SP4 安装程序

安装程序会显示对话框提示您输入信息，例如，是使用 SQL Server 身份验证还是 Windows 身份验证。如果选择 SQL Server 身份验证，则必须为安装程序提供 sa 登录的密码。如果选择 Windows 身份验证，则必须在登录到 Windows 时使用作为 sysadmin 固定服务器角色成员的 Windows 登录帐户为要升级的 SQL Server 2000 实例运行安装程序。

然后，安装程序将执行下列任务：

- 如果检测到安装使用的是混合模式身份验证，并且 sa 登录密码为空，将显示“身份验证模式”对话框。保留 sa 登录密码为空可使用户很容易获取 SQL Server 或 MSDE 的管理权限，但建议不要这样做；请强制使用 sa 密码或使用 Windows 身份验证保护您的系统。要了解有关此对话框的更多信息，请参见本节后面的“身份验证模式”对话框。
- 如果检测到 sa 登录密码为空，将显示“SA 密码警告”对话框。通过明确选择忽略警告框并继续执行安装程序，可以在 sa 登录密码为空的情况下继续安装。但是，空白密码会导致安全风险，建议不要这样做。无论使用何种身份验证模式，都会显示此警告对话框。

  说明 该密码更改会立即生效，即使安装失败，密码仍会被改变。

- 显示“后向兼容性一览表”对话框，针对将 Service Pack 应用于 SP3 之前的 SQL Server 版本可能遇到的任何问题向您发出警告。要了解有关此对话框的更多信息，请参见本节后面的“后向兼容性一览表”对话框。
- 如果检测到有不可写的数据库或文件组，将显示一个消息对话框。此时，如果其中任何数据库或文件组是复制拓扑的一部分，可以执行以下任一操作：
  - 停止安装过程，使这些对象可写，然后重新启动安装程序。
  - 继续当前的 SP4 安装过程，并在使这些对象可写后的某个时间重新应用 SP4。

  说明 只有在对属于复制拓扑的不可写数据库或文件组应用 SP4 时，才需执行上述步骤。有关更多信息，请参见 3.6 将 SP4 应用于复制拓扑中的只读数据库或文件组。

- 显示“错误报告”对话框，其中有如何启用 SP4 中包括的新错误报告功能的信息。有关错误报告的更多信息，请参见 5.9 错误报告。
- 根据需要更新 MDAC 组件。有关更多信息，请参见 1.3 验证 Microsoft 数据访问组件的版本。
- 将现有的 SQL Server 2000 文件替换为 SP4 文件。
- 运行 Transact-SQL 脚本文件以更新系统存储过程。
- 如果安装程序确定需要重新启动，将在最后的对话框中显示重新启动计算机的选项。

[返回页首]

##### “身份验证模式”对话框

“身份验证模式”对话框并不选择当前的默认设置用于安装。该对话框的默认设置是 Windows 身份验证。通过非空的 sa 登录密码，可以使用该对话框切换到 Windows 身份验证或混合模式身份验证。

说明 在更改身份验证模式或 sa 登录密码之前，请确保这种更改不会影响现有的应用程序。例如，如果将一个 SQL Server 实例从选择混合模式身份验证更改为仅使用 Windows 身份验证，则试图使用 SQL Server 身份验证进行连接的现有应用程序将无法连接，直到将身份验证模式设置为 Windows 身份验证为止。此外，如果更改 sa 登录密码，则使用旧密码的应用程序或管理进程将无法连接，直到将它们配置为使用新密码为止。

重要 出于安全考虑，绝对不要使 sa 登录密码为空。

安装程序在 Sqlsp.log 文件中记录所执行的每个操作。该日志文件存储在运行安装程序的计算机的 Windows 文件夹中。如果升级多个实例，则只有最近的升级操作记录在此日志中。

[返回页首]

##### “后向兼容性一览表”对话框

“后向兼容性一览表”对话框列出了将 Service Pack 应用于 SP3 之前的 SQL Server 版本时可能遇到的问题。进行升级的 SQL Server 2000 实例的配置不同，一览表中显示的兼容性问题也不同。

在此对话框中可解决下列后向兼容性问题：

- 从 SP2 或更低版本升级时，SP4 将升级 Microsoft 搜索服务，并自动为使用该服务的所有应用程序重建全文目录。重建期间，全文功能可能无法完全起作用。继续安装之前，必须选中此复选框。有关更多信息，请参见 5.1.4 安装完成后重建全文目录。
- 应用 Service Pack 前，必须升级 SQL Server 2000 主/目标服务器配置。SP4 中引入的增强功能只与运行 SQL Server 2000 SP3 或更高版本的服务器兼容。继续安装之前，必须选中此复选框。有关更多信息，请参见 5.3.2 主/目标服务器配置的更改。
- 默认情况下，在 SP4 中关闭了跨数据库所有权链接。安装后，可以为单个数据库启用跨数据库所有权链接。选中此可选复选框将允许所有数据库进行跨数据库所有权链接。有关更多信息，请参见 5.1.10 跨数据库所有权链接。

  安全说明 建议不要对所有数据库启用跨数据库所有权链接。

[返回页首]

## 3.3 重新启动服务和应用程序

完成安装后，可能会提示您重新启动系统。3.1.3 在运行 Database Components SP4 安装程序之前停止服务和应用程序中提供了有关何时必须重新启动的准则。在系统重新启动（或者完成安装但未请求重新启动）之后，使用“控制面板”中的“服务”应用程序，确保在应用 Service Pack 之前停止的所有服务现在正在运行。在应用 Service Pack 之前可能已经停止的服务包括 DTC、Microsoft Search、MSSQLServer、MSSQLServerOLAPService 和 SQLServerAgent 服务或其实例专用的同等服务。

请重新启动运行 Service Pack 安装程序之前关闭的应用程序。

此时，还建议您对升级后的 master 和 msdb 数据库进行备份。

[返回页首]

## 3.4 在故障转移群集上安装

以下信息仅适用于作为故障转移群集一部分的 SQL Server 2000 组件。

在故障转移群集上安装 Service Pack

1. 如果添加的任何资源依赖于 SQL Server 资源，则在安装 SP4 之前，必须删除这些依赖关系或者或者使依赖资源脱机。如果不删除依赖关系，SP4 安装将导致这些资源脱机。

   说明 群集资源脱机后，群集服务还将导致所有依赖资源脱机。

2. 从包含计划升级的虚拟服务器的组所在的节点运行此 Service Pack。这将在所有故障转移群集节点上安装 Service Pack 文件。
3. 在“安装”对话框中，键入计划升级的虚拟服务器的名称。
4. 在安装过程中，使群集中的所有节点都处于联机状态。这可确保群集中的每个节点都被升级。
5. 如果在步骤 1 中删除了依赖关系或使资源脱机，请还原这些依赖关系或使资源联机。

说明 安装程序可能需要重新启动故障转移群集节点。该重新启动将使用经过更新的文件替换安装时使用的文件。

如果要将默认的（非群集的）SQL Server 实例升级为虚拟服务器，则必须将默认的（非群集的）实例升级为虚拟实例，然后应用 SP4。有关升级的更多信息，请参见 SQL Server 2000 联机丛书中的“如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 2000 安装）”。

有关如何在故障转移群集上安装 SP4 的其他信息，请参见知识库文章 811168。

如果需要在故障转移群集中重建节点

1. 在故障转移群集中重建节点。有关重建节点的更多信息，请参见 SQL Server 2000 联机丛书中的“如何从第一种情况的故障转移群集失败中恢复”。
2. 运行原始 SQL Server 2000 安装程序，将节点添加回故障转移群集。
3. 在已添加的节点上运行 Database Components SP4 安装程序。该安装过程仅将新节点上的二进制文件更新到 SP4。

说明 如果从正在运行虚拟服务器的节点上运行安装程序，则必须将 SP4 重新应用于所有节点。还必须再次运行数据库升级脚本。

[返回页首]

## 3.5 在复制服务器上安装 Database Components

以下信息仅适用于作为复制拓扑一部分的现有 SQL Server 2000 实例：

- 在升级到 SP4 之前，请确保用来运行 SQL Server 服务的 Windows 帐户是 sysadmin 固定服务器角色的成员。之所以必须这样做，是因为要通过 SQL Server 服务帐户的上下文升级复制分发数据库。在升级到 SP4 之后，应从 sysadmin 角色中删除该 Windows 帐户。
- 升级发布服务器前，必须先升级分发服务器。
- 对于基于事务复制及只读订阅服务器的复制拓扑，如果需要升级拓扑中的 MSDE 2000 实例，可以在升级发布服务器和分发服务器之前或之后升级订阅服务器。
- 对于基于合并复制或事务复制及更新订阅服务器的复制拓扑，如果需要升级拓扑中的 MSDE 2000 实例，必须在升级发布服务器和分发服务器之后升级订阅服务器。

  说明 许多情况下，尤其在合并复制中，分发服务器和发布服务器位于同一台服务器，在同一时间升级。

- 如果要使用合并复制，而分发服务器位于另一台计算机或数据库实例（远程分发服务器）上，则必须在应用 SP4 之后生成一个新快照。

[返回页首]

##### 在用作发布服务器和订阅服务器的服务器上安装 SP4

在以下情况下，可能需要使系统暂停（停止所有更新）并同时升级所有服务器。

- 对于基于合并复制的复制拓扑
- 对于基于更新订阅服务器的事务复制的复制拓扑，其中一个或多个服务器既充当订阅服务器，又充当发布服务器（或分发服务器）。

###### 示例 1：需要同时升级的拓扑

下表中包括的服务器既发布又订阅允许在订阅服务器上进行更新的发布。如前所述，对于允许在订阅服务器上进行更新的拓扑，必须遵循下列升级顺序：分发服务器、发布服务器、订阅服务器。此顺序要求，对于合并发布，先升级服务器 A；对于通过更新订阅服务器进行的事务发布，先升级服务器 B。在此情况下，必须使系统暂停，然后同时升级这些服务器。

服务器 A | 服务器 B
--- | ---
用于合并复制的发布服务器/分发服务器 | 用于合并复制的订阅服务器
用于通过更新进行事务复制的订阅服务器 | 用于通过更新进行事务复制的发布服务器/分发服务器

###### 示例 2：允许依次升级的拓扑

在此示例中，可以首先升级服务器 A，因为只读事务复制允许在升级发布服务器/分发服务器之前先升级订阅服务器。

服务器 A | 服务器 B
--- | ---
用于合并复制的发布服务器/分发服务器 | 用于合并复制的订阅服务器
用于只读事务复制的订阅服务器 | 用于只读事务复制的发布服务器/分发服务器

[返回页首]

## 3.6 将 SP4 应用于复制拓扑中的只读数据库或文件组

以下信息仅适用于作为复制拓扑一部分的 SQL Server 2000 组件。

如果存在只读数据库或文件组，则安装程序将显示以下消息：

    Setup has detected one or more databases and filegroups which are not writable.

通常，可以忽略此警告并继续运行安装程序。但是，如果安装程序日志中列出的任何只读数据库是复制拓扑的成员，则必须使这些数据库可写，并将 SP4 安装程序重新应用于该 SQL Server 2000 实例。

说明 此消息不影响无值守安装。有关无值守安装的更多信息，请参见 4.1 无值守安装。

安装过程中，安装程序不会区分只读数据库和脱机或可能有问题的数据库。如果复制拓扑中的数据库或文件组在安装时是只读的，必须重新应用 Service Pack 来升级该数据库。有关如何使数据库联机的更多信息，请参见 SQL Server 2000 联机丛书中的“附加和分离数据库”主题。有关诊断可能有问题的数据库的更多信息，请参见 SQL Server 联机丛书中的“服务器和数据库疑难解答”主题。

对只读数据库应用 Database Components SP4

1. 使用 `ALTER DATABASE` 语句使只读数据库可写，如下所示：

       ALTER DATABASE database SET READ_WRITE

2. 对所有只读数据库重复步骤 1。
3. 应用（或重新应用）SP4。
4. 如果需要，使用 `ALTER DATABASE` 重新使数据库只读，如下所示：

       ALTER DATABASE database SET READ_ONLY

对只读文件组应用 SP4

1. 使用 `ALTER DATABASE` 使只读文件组可写，如下所示：

       ALTER DATABASE Database
       MODIFY FILEGROUP filegroup_name READWRITE

2. 对所有只读文件组重复步骤 1。
3. 应用（或重新应用）Service Pack。
4. 使用 `ALTER DATABASE` 重新使文件组只读，如下所示：

       ALTER DATABASE Database
       MODIFY FILEGROUP filegroup_name READONLY

有关 ALTER DATABASE 的更多信息，请参见 SQL Server 2000 联机丛书中的“ALTER DATABASE”参考主题。有关重新应用 SP4 的更多信息，请参见 3.9 重新应用 Database Components SP4。

[返回页首]

## 3.7 升级链接服务器的目录

将 SQL Server 2000 数据库引擎实例升级到 Database Components SP4 时，可能需要确保某些系统存储过程在其他 SQL Server 或 MSDE 实例中已更新。

Database Components SP4 包括将 Microsoft 数据访问组件 (MDAC) 升级到 MDAC 2.8 SP1。MDAC 2.8 SP1 包括对 SQLOLEDB 提供程序和 SQL Server ODBC 驱动程序的更新。有关更多信息，请参见 1.3 验证 Microsoft 数据访问组件的版本。如果提供程序或驱动程序连接到 SQL Server 或 MSDE 实例，则该提供程序或驱动程序将使用一组系统存储过程，称为目录存储过程。实例上目录存储过程的版本必须等于或高于提供程序和驱动程序所使用的版本。如果尝试连接到的 SQL Server 或 MSDE 实例包含更低版本的目录存储过程，将收到以下错误消息：

`The ODBC catalog stored procedures installed on server <ServerName>
are version <OldVersionNumber>; version <NewVersionNumber> or later
is required to ensure proper operation. Please contact your system
administrator.`

[返回页首]

##### 运行 Instcat.sql 脚本

每个版本的提供程序和驱动程序都是随名为 Instcat.sql 的脚本附带的。Instcat.sql 会升级任何包含更低目录版本的 SQL Server 或 MSDE 实例中的目录存储过程。

安装了 Database Components SP4 之后，必须针对任何版本低于 SQL Server 2000 SP4 并具有以下特性的 SQL Server 或 MSDE 实例，从 Database Components SP4 运行 Instcat.sql 脚本：

- 通过使用 SQLClient 托管命名空间、ADO、OLE DB 或 ODBC 并且在任何安装了 SQL Server 2000 SP4 的计算机上运行的应用程序进行访问。
- 通过对 SQL Server 2000 SP4 实例运行的分布式查询引用。分布式查询包括对使用 sp_addlinkedserver 以及 OPENROWSET 和 OPENQUERY 函数定义的链接服务器条目的引用。

在使用 Windows 身份验证模式的实例上升级目录存储过程：

1. 使用作为 SQL Server sysadmin 固定服务器角色成员的登录帐户登录 Windows。
2. 打开命令提示符窗口。
3. 运行 osql 实用工具：
   - 对于默认实例，执行：

         osql -E -SComputerName -ilocation\instcat.sql

   - 对于命名实例，执行：

         osql -E -SComputerName\InstanceName -ilocation\instcat.sql

在使用混合模式的实例上升级目录存储过程：

1. 使用任意登录帐户登录 Windows。
2. 打开命令提示符窗口。
3. 运行 osql 实用工具：
   - 对于默认实例，执行：

         osql -UAnAdminLogin -PAdminPassword -SComputerName
         -ilocation\instcat.sql

   - 对于命名实例，执行：

         osql -UAnAdminLogin -PAdminPassword
         -SComputerName\InstanceName -ilocation\instcat.sql

其中：

- AnAdminLogin 是一个 SQL Server 登录，它是 sysadmin 固定服务器角色的成员。
- AdminPassword 是 AnAdminLogin 的密码。
- ComputerName 是运行 SQL Server 或 MSDE 实例的计算机的名称。
- InstanceName 是 SQL Server 2000 或 MSDE 2000 命名实例的名称。
- location 是包含 Instcat.sql 的文件夹的完整路径。已安装的 SQL Server 2000 实例的默认位置是 c:\program files\Microsoft SQL Server\MSSQL\Install。

Instcat.sql 脚本可生成许多消息。通常，这些消息不指示任何错误；它们只是通知您脚本中每条 Transact-SQL 语句所影响的行数。最后一条消息应指明脚本是否成功运行。

[返回页首]

## 3.8 卸载 Database Components SP4

要删除 Database Components SP4，请执行本节中的步骤。

说明 不卸载 MDAC 更新。有关更多信息，请参见 1.3 验证 Microsoft 数据访问组件的版本。

为了能够还原到安装 SP4 之前 SQL Server 2000 组件的版本，必须先备份 master、msdb 和 model 数据库，然后再安装 SP4。有关更多信息，请参见 3.1.1 备份 SQL Server 数据库。

如果复制涉及到任何数据库，必须禁用发布。

禁用发布：

1. 在 SQL Server 企业管理器中，展开 SQL Server 组，展开服务器，右键单击“复制”文件夹，然后单击“配置发布、订阅服务器和分发”。
2. 单击“发布数据库”选项卡。
3. 清除复制所涉及到的各个数据库对应的复选框。这将允许分离数据库。

还原到安装 SP4 之前的 SQL Server 版本

1. 分离所有用户数据库。有关更多信息，请参见 SQL Server 联机丛书中的“如何附加和分离数据库（企业管理器）”。
2. 卸载 SQL Server。在“控制面板”中，双击“添加/删除程序”，然后选择要卸载的 SQL Server 实例，再单击“删除”。
3. 从 CD-ROM 或最初安装 SQL Server 的位置重新安装 SQL Server 2000。
4. 应用安装 Database Components SP4 之前安装的所有 Service Pack 和热修复程序。
5. 从安装之前创建的最后一个备份中还原 master、msdb 和 model 数据库。如果数据文件的位置未更改，此还原将自动附加创建备份时附加的所有用户数据库。
6. 附加最后一次备份 master 数据库之后创建的所有用户数据库。
7. 必要时对复制进行配置。

   警告 还原到安装 SP4 之前的 SQL Server 2000 版本后，将丢失自应用 SP4 之后对 master、msdb 和 model 数据库所做的所有更改。

[返回页首]

## 3.9 重新应用 Database Components SP4

以下信息适用于所有组件。

在以下情况中，必须重新应用 SP4：

- 应用 SP4 之后添加了新的 SQL Server 2000 组件。
- 使最初应用 SP4 时属于复制拓扑的只读数据库或文件组可写后。

要重新应用 SP4，请执行 3.0 安装 Service Pack 中的步骤。

[返回页首]

# 4.0 其他安装信息

本节描述仅在某些特殊情况下适用的其他一些 Service Pack 安装注意事项。

[返回页首]

## 4.1 无值守安装

Database Components SP4 不再包括预定义的安装程序初始化 (.iss) 文件。但是，每次运行 Database Components SP4 的有值守安装时，都会将安装选项写入位于系统文件夹的 setup.iss 文件。以后可以使用此 .iss 文件来运行 Database Components SP4 的无值守安装。有关执行无值守安装的更多信息，请参见 SQL Server 2000 联机丛书中的主题“执行无值守安装”。

[返回页首]

##### 无值守安装的注意事项

以下是有关无值守安装的注意事项：

- 必须为运行无值守安装要使用的每种系统配置和安装设置组合生成单独的 setup.iss 文件。要更改安装操作，必须修改 setup.iss 文件。有关更多信息，请参见 SQL Server 2000 联机丛书中的主题“手动创建安装文件”。
- 每次运行 Database Components SP4 的有值守安装时，都会覆盖 setup.iss 文件。如果从命令提示符运行 Analysis Services SP4 的有值守安装，并选择生成 Setup.iss 文件，则默认情况下，还会在系统文件夹中创建该文件，并覆盖现有的 .iss 文件。有关更多信息，请参见 Analysis Services SP4 自述文件中的第 4.1 节“无值守安装”。
- 在终端服务环境中安装 Database Components SP4 时，将在登录用户的临时目录中创建 setup.iss 文件。
- 尽可能使用 Windows 身份验证运行无值守安装。
- 如果必须使用 SQL Server 身份验证运行无值守安装，请不要在 .iss 文件或批处理文件中包括 sa 登录密码，因为这些文件是不加密的。而应当使用 sapwd 参数，在命令行中提供 sa 登录密码，如下所示：

      start /wait setupsql.exe -s -sms -f1 C:\Windows\setup.iss -sapwd password

  安全说明 如果可能，请在运行时提供安全凭据。如果将凭据存储在脚本文件中，必须确保文件安全，以防未经授权的访问。

- 如果要升级到 SP4 的 SQL Server 实例的 sa 登录帐户具有空白密码，则必须在运行无值守安装之前提供一个密码。可以通过运行 sp_password 更改空白密码。有关更多信息，请参见 SQL Server 2000 联机丛书中的“sp_password”主题。

  安全说明 强烈建议您不要使用空白密码，因为空白密码会大大增加安全隐患。

- 在使用手动创建的 .iss 文件或安装 SP3 之前生成的 .iss 文件运行 SP4 的无值守安装时，必须根据“后向兼容性一览表”和“错误报告”对话框手动设置下列安装开关。否则，无值守安装将失败。

无值守安装开关 | 描述
--- | ---
UpgradeMSSearch | 此开关用于设置全文目录的重建。如果启用了全文搜索，必须将此开关设置为 1。有关更多信息，请参见 5.1.4 安装完成后重建全文目录。
MSXTSXUpgraded | 此开关用于解决有关升级主/目标服务器配置的问题。如果要对主服务器或目标服务器应用 SP4，则必须将此开关设置为 1。有关更多信息，请参见 5.3.2 主/目标服务器配置的更改。
EnableCrossDBChaining | （可选）此开关用于启用跨数据库所有权链接。要启用跨数据库所有权链接，请将此开关设置为 1。有关更多信息，请参见 5.1.10 跨数据库所有权链接。
EnableErrorReporting | （可选）此开关用于启用错误报告。要启用错误报告，请将此开关设置为 1。有关更多信息，请参见 5.9 错误报告。

- 在无值守安装过程中，如果安装程序检测到任何不可写的数据库或文件组，则会将该信息写入安装程序日志，并继续进行无值守安装。如果安装程序日志中列出的任何不可写数据库是复制拓扑的成员，则必须使这些数据库可写，并将 Database Components SP4 安装程序重新应用于该 SQL Server 2000 实例。有关使数据库可写的更多信息，请参见 3.6 将 SP4 应用于只读数据库或文件组。有关重新应用 SP4 的更多信息，请参见 3.11 重新应用 SP4。

[返回页首]

## 4.2 再分发 SP4 Database Components

Database Components SP4 包括自解压缩文件 Sqlredis.exe。在运行 Sqlredis.exe 时，它将执行以下操作：

1. 执行来自 Microsoft 数据访问组件 (MDAC) 2.8 Service Pack 1 的文件 Mdac_typ.exe。这将安装 SP4 所附带的 MDAC 2.8 SP1 核心组件（如果未检测到相同或更新的版本）、SQL Server 版本和 Desktop Engine 客户端连接组件。有关更多信息，请参见 1.3 验证 Microsoft 数据访问组件的版本。
2. 安装 Microsoft Jet ODBC 驱动程序和连接组件。

可以按照 SP4 附带的 Redist.txt 文件中的条款和条件再分发 Sqlredis.exe 文件。

[返回页首]

## 4.3 Systems Management Server 分布式安装

无法从远程位置安装 Database Components SP4。但是，可以使用 Microsoft Systems Management Server 在运行 Windows Server 2003、Windows XP 或 Windows 2000 的多台计算机上自动安装 SP4。要执行该操作，必须使用包定义文件 (Smssql2ksp4.pdf) 在 Systems Management Server 中自动创建 SQL Server 包。然后，SQL Server 包将被分发并安装在运行 Systems Management Server 的计算机上。Sms2kdef.bat 是批处理文件，它使用 Systems Management Server 启动无值守安装。在这种类型的安装中，安装程序会自动检测所需的相关系统信息。不需要任何用户输入。

[返回页首]

# 5.0 文档说明

本节介绍在应用 Database Components SP4 之后可能发生的问题以及运行 SP4 时可以使用的新功能。在通过运行 Service Pack 从任何早期版本的 SQL Server 2000 升级时，可能会出现这些问题。本节不描述 SP4 中提供的所有修复程序。有关这些修复程序的完整列表，请参见 Microsoft 知识库文章 888799。

对于未能及时包含在本自述文件中、与 SQL Server 2000 Service Pack 4 相关的信息，将发布在 Microsoft 知识库文章 884525 中。

[返回页首]

## 5.1 数据库增强功能

下列增强功能适用于安装了 Database Components SP4 的 SQL Server 2000 实例。

[返回页首]

### 5.1.1 删除了散列组

在 SP1 中引入

散列组 (hash teams) 已删除。由于 SQL Server 2000 中的某些增强功能，使用散列组已不能获得它们在 SQL Server 7.0 中所提供的性能优势。而且，删除散列组使得 SQL Server 2000 更加稳定。

因此，查询优化器不再用散列组生成查询计划。

在极个别的情况下，删除散列组可能会使查询的处理速度减慢。请分析这类查询并确定创建更适合的索引是否能使查询性能恢复到以前的水平。

[返回页首]

### 5.1.2 添加了 Affinity Mask 开关

在 SP1 中引入

此 Service Pack 添加了两个 Affinity Mask 开关。

##### Affinity Mask I/O 开关

使用此 Service Pack，可以指定使用哪些 CPU 来运行用于磁盘 I/O 操作的线程。这一开关必须与 Affinity Mask 选项结合起来使用。有关更多信息，请参见文章 298402。

##### Affinity Mask 连接开关

使用此 Service Pack，可以将支持虚拟接口体系结构 (VIA) 的系统配置为将 SQL Server 连接从某些网卡绑定到一个处理器或一组处理器。这一开关必须与 Affinity Mask 选项结合起来使用。有关更多信息，请参见文章 299641。

[返回页首]

### 5.1.3 筛选的索引视图

在 SP2 中引入

如果遇到 Microsoft 知识库文章 306467 中描述的 SQL Server 2000 错误 355069，此 Service Pack 只能防止由于数据修改而在未来出现意外结果。所以，除了应用此修复程序外，所有基于带有筛选条件的视图的索引都必须重新创建。

[返回页首]

### 5.1.4 安装完成后重建全文目录

在 SP3 中引入

从 SP2 或更低版本升级时，作为 SP4 安装的一部分将重建所有全文目录。该重建过程是自动执行的，并且会大量耗用资源。完成该重建过程之前，查询全文目录可能会仅返回部分结果或不返回任何结果。安装 SP4 之后，系统事件日志中包含一些消息，指出目录已破坏、版本太旧以及必须重建。

有关信息，请参见知识库文章 327217，其中还讨论了重建过程中保持全文搜索可用以及避免自动重建的可能解决办法。

[返回页首]

### 5.1.5 sp_change_users_login 的语法更改

在 SP3 中引入

使用 @Action=Auto_Fix 参数运行 sp_change_users_login 时，现在必须指定密码。sp_change_users_login 将把此密码赋给它为用户创建的任何新的登录。下例显示了新的 @Password 参数：

    sp_change_users_login [ @Action = ] 'action'
        [ , [ @UserNamePattern = ] 'user' ]
        [ , [ @LoginName = ] 'login' ]
        [ , [ @Password = ] 'password' ]

@Password 参数只能与 @Action=Auto_Fix 一起使用。下例显示了在使用 Auto_Fix 时 sp_change_users_login 命令的新语法。SQL Server 联机丛书中的其他示例没有变化。

    USE pubs
    go
    EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-36'
    Go

[返回页首]

### 5.1.6 默认情况下禁用对 OLE DB 提供程序的特殊访问

在 SP3 中引入

如果未明确设置 DisallowAdhocAccess 注册表选项，则默认情况下，不允许对 OLE DB 提供程序进行特殊访问。这意味着特殊查询语法（如 OPENDATASOURCE 和 OPENROWSET）无法针对远程服务器工作。要允许特殊访问，必须明确将 DisallowAdhocAccess 选项设置为 0。

[返回页首]

### 5.1.7 新的 SqlServerLike 提供程序选项

在 SP3 中引入

为了更有效地处理包含 LIKE 谓词的远程查询，在 SP3 中添加了 SqlServerLike 选项。在 SQL Server 2000 SP3 或更高版本中，现在有两个选项可用来将 LIKE 运算发送到链接服务器。如果用于链接服务器的 OLE DB 提供程序支持 LIKE 运算符和通配符的 SQL Server 语法，则可以指定 SqlServerLIKE 选项，以便让 SQL Server 使用 SQL Server 语法发送 LIKE 运算。如果用于链接服务器的 OLE DB 提供程序报告它支持 Entry Level ANSI/ISO SQL-92 语法或者返回 SQLPROP_ANSILIKE 属性，则 SQL Server 将使用 SQL-92 语法将 LIKE 运算发送到链接服务器。有关 SQLPROP_ANSILIKE 的更多信息，请参见 SQL Server 2000 联机丛书中的“SQLPROPSET_OPTHINTS 属性集程序设计”主题。

必须添加一个注册表项值，才能为 OLE DB 提供程序启用 SqlServerLIKE 选项。

安全说明 如果注册表编辑不当，可能会导致严重问题并需要重新安装操作系统。Microsoft 不能保证因注册表编辑不当而导致的问题会得到解决。编辑注册表之前，请备份所有重要数据。

1. 打开 Regedit32。
2. 查找正确的注册表项：
   - 对于命名实例，查找以下注册表项：

     HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<Provider Name>

   - 对于默认实例，查找以下注册表项：

     HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Providers\<Provider Name>

3. 在 <Provider Name> 注册表项中，添加一个名为 SqlServerLIKE 的 DWORD 值，并将其值设置为 1。

[返回页首]

### 5.1.8 分布式查询的扩展错误消息

在 SP3 中引入

对于分布式查询，SQL Server 除了返回服务器错误信息以外，还返回提供程序错误信息。当相互链接的服务器之间的查询导致错误时，SQL Server 将检查该提供程序是否支持 IErrorRecords OLE DB 接口。如果支持此接口，则 SQL Server 将调用 GetErrorInfo 函数从该提供程序中获取附加的错误信息，并将这些信息作为错误消息的一部分返回给用户。如果不支持 IErrorRecords 接口，则 SQL Server 的行为没有任何更改：SQL Server 将返回一般性错误。

例如，如果对使用 MSDASQL 的服务器（该服务器不支持 sql_variant）运行下列查询：

    SELECT * FROM remote2k.dqtable.dbo.sqlvariantnotnull
    --Remote2k is a loopback server.

在应用 SP3 之前，SQL Server 返回下列错误消息：

`Server: Msg 7356, Level 16, State 1, Line 1`

`OLE DB provider 'msdasql' supplied inconsistent metadata for a column.
Metadata information was changed at execution time.`

在应用 SP3 或更高版本之后，SQL Server 返回下列错误消息：

`Server: Msg 7356, Level 16, State 1, Line 1`

`OLE DB provider 'msdasql' supplied inconsistent metadata for a column.
Metadata information was changed at execution time.`

`OLE DB error trace [Non-interface error: Column 'sql_variant' (compile-time
ordinal 3) of object '"dqtable"."dbo"."sqlvariantnotnull"' was reported
to have a DBCOLUMNFLAGS_ISFIXEDLENGTH of 16 at compile time and 0 at run time].`

[返回页首]

### 5.1.9 新函数 fn_get_sql 返回 SQL 语句

在 SP3 中引入

SP3 以及更高版本包含新函数 fn_get_sql，该函数为指定的 SQL 句柄返回 SQL 语句的文本。此外，为了支持该函数，已在 sysprocesses 系统表中添加了三个新列：sql_handle、stmt_start 和 stmt_end。

fn_get_sql 在最新版本的 SQL Server 2000 联机丛书中描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。这是 fn_get_sql 的英语版参考主题。

[返回页首]

### 5.1.10 跨数据库所有权链接

在 SP3 中引入

此 Service Pack 提供了一个新选项，可以用来打开和关闭跨数据库所有权链接。

在安装 Database Components SP4 时，安装程序的“后向兼容性一览表”对话框中将显示一个用来配置跨数据库所有权链接的选项。默认情况下，安装程序对所有用户数据库关闭跨数据库所有权链接。您可以对所有数据库启用跨数据库所有权链接。有关更多信息，请参见“后向兼容性一览表”对话框。

说明 建议不要对所有数据库启用跨数据库所有权链接。

安装后，可以使用下列方法对实例中的所有数据库打开或关闭跨数据库的所有权链接：

- 使用 sp_configure 系统存储过程的新参数 Cross DB Ownership Chaining。
- 在企业管理器中，使用“SQL Server 属性”对话框中“安全性”选项卡上的“允许跨数据库所有权链接”选项。
- 使用 SQLServer.Configuration.ConfigValues 数据库管理对象 (DMO) 集合。当 SQLServer 对象引用 SQL Server 2000 SP3 或更高版本的实例时，该集合将包含一个名为 Cross DB Ownership Chaining 的 ConfigValue 对象。

如果对该实例关闭了跨数据库所有权链接，则可以对单个数据库进行配置。使用下列方法可以对数据库打开和关闭跨数据库的所有权链接：

- 使用 sp_dboption 系统存储过程的新选项 db chaining。
- 在企业管理器中，使用“数据库属性”对话框中“选项”选项卡上的“允许跨数据库所有权链接”选项。
- 使用 DMO 对象 DBOption2 的 DBChaining 属性。

有关更多信息，请在运行安装程序时单击“后向兼容性一览表”页上的“帮助”按钮、下载 SQL Server 2000 联机丛书的更新版，或者查看知识库文章 810474。

[返回页首]

### 5.1.11 跟踪标志 1204 的增强功能

在 SP3 中引入

跟踪标志 1204 返回参与死锁的锁的类型以及当前受影响的命令。在 SP3 和更高版本中，当启用此跟踪标志时，会将死锁信息自动写入错误日志。

[返回页首]

### 5.1.12 sp_changedbowner 的权限更改

在 SP3 中引入

只有 sysadmin 固定服务器角色的成员可以运行 sp_changedbowner 系统存储过程。

[返回页首]

### 5.1.13 调试功能的更改

在 SP3 中引入

默认情况下，禁用在 Microsoft Visual Studio® 6.0 及更早版本或 SP3 之前的 SQL Server 查询分析器中调试存储过程的功能。默认情况下还将禁用应用程序调试（在调试客户端应用程序时停止于 SQL Server Transact-SQL 断点处）。要启用调试功能，请运行 sp_sdidebug 并传递参数 legacy_on。要禁用调试功能，请将 legacy_off 传递给此过程。

说明 建议不要在生产用服务器上运行 sp_sdidebug 存储过程。

有关更多信息，请参见 Microsoft 知识库文章 328151。

说明 联机丛书引用了客户端调试组件 sqldbreg.exe。在 SP3 中，该组件文件被重命名为 sqldbreg2.exe。

[返回页首]

### 5.1.14 在群集服务器上不能禁用命名管道

在 SP3 中引入

应用了 Service Pack 之后，将无法再在参与故障转移群集的数据库引擎实例上禁用命名管道协议。

[返回页首]

### 5.1.15 UDP 端口 1434 的操作

在 SP3a 中引入

从 SQL Server 2000 SP3a 开始，如果 SQL Server 2000 数据库引擎和 MSDE 2000 实例未被配置为支持网络通信，将停止使用用户数据报协议 (UDP) 端口 1434。配置为支持网络通信的实例将使用 UDP 端口 1434。

对于升级到 SP3a 或更高版本的实例，只要所有服务器 Net-Library（共享内存 Net-Library 除外）都被禁用，它将停止使用 UDP 端口 1434。只要启用任何一个服务器 Net-Library，该实例又将开始使用端口 1434。有关禁用或启用服务器 Net-Library 的更多信息，请参见 SQL Server 2000 联机丛书中的“SQL Server 网络实用工具”主题。

只有将计算机上所有 SQL Server 2000 和 MSDE 2000 实例都升级到了 SP3a 或更高版本并配置为不支持网络通信，该计算机才会停止使用 UDP 端口 1434。

UDP 端口 1434 的打开和关闭与共享内存 Net-Library 的状态无关。共享内存 Net-Library 只供本地连接使用，它不使用网络。共享内存 Net-Library 始终处于活动状态；它不能被启用或禁用。

安装或升级 SQL Server 2000 数据库引擎实例时，不能禁用所有服务器 Net-Library。

[返回页首]

### 5.1.16 最大网络数据包大小的更改

在 SP4 中引入

在 SP4 中，网络数据包大小选项的最大值（使用 sp_configure 设置）为 32767。该值略小于以前的最大值 65536 的一半。在升级期间，大于 32767 的现有值将自动调整为 32767。如果脚本尝试使用 sp_configure 设置一个大于 32767 但小于等于 65536 的值，该值也将设置为 32767。将网络数据包大小设置为大于 65536 的值将导致错误。

[返回页首]

### 5.1.17 优化具有大的 IN 列表或许多 OR 子句的查询

在 SP4 中引入

SP4 包含对 SQL Server 优化器行为的更改，此更改影响包含具有大的 IN 列表或许多 OR 子句的谓词的查询。更具体的讲，此更改（在 SQL Server 2000 热修复程序 789 中引入）影响包含以下内容的查询（或可以使用包含以下内容的对应表达式重写的查询）：

- IN 列表中包含 10,000 个以上的元素
- 两个 IN 列表，每个列表都包含 100 个以上的元素
- OR 子句中包含 10,000 个以上的分离项
- OR 子句和 IN 列表组合，使对应的表达式包含 10,000 个以上的分离项

由于该更改，在编译这些类型的语句时 SQL Server 将使用更少的内存，因此避免了内存不足错误。在极少数情况下，如果运行此类查询的系统具有大量内存但并行程度很低，优化器可能会选择性能较差的查询计划。为了覆盖优化器行为的更改，此 Service Pack 中提供了跟踪标志 9060。默认情况下，禁用跟踪标志 9060。如果启用该跟踪标志，热修复程序 789 之前的 SP3 行为将启用。如果启用该跟踪标志时遇到错误 701（系统内存不足），应考虑使用 IN 列表中的值的临时表或表变量重写查询。对于数字范围，应使用 BETWEEN 子句或者大于 (>) 或小于 (<) 运算符。有关使用跟踪标志的信息，请参见 SQL Server 联机丛书中的“跟踪标志”。

[返回页首]

### 5.1.18 支持未来的网络协议

在 SP4 中引入

SP4 中支持 Banyan VINES、多协议、AppleTalk 和 NWLink IPX/SPX 网络协议。但是，在 SQL Server 2005 以及更高版本中将不支持这些协议。请做出相应计划。

[返回页首]

### 5.1.19 监视在 Windows-on-Windows 64 模式中运行的 SQL Server 实例

在 SP4 中引入

如果在 Windows Server 2003 x64 SP1 或更高版本上以 Windows-on-Windows 64 (WOW) 模式运行，则无法用默认的 64 位版本的 Windows 性能监视器来访问用于监视 SQL Server 2000 SP4 实例的 SQL Server 性能计数器。而必须使用 32 位版本的 Windows 性能监视器。32 位版本位于：

%systemdrive%\WINDOWS\SysWOW64\perfmon.exe

在 WOW 模式中，只有当 32 位版本的性能监视器与 SQL Server 2000 SP4 实例运行在同一台计算机上时，才能查看 SQL Server 性能计数器。

该限制不适用于基于 64 位 Itanium 系统的 Windows Server 2003。

[返回页首]

## 5.2 复制增强功能

本节讨论 SP4 中包含的 SQL Server 2000 复制增强功能。

[返回页首]

### 5.2.1 事务复制 UPDATE 自定义存储过程

在 SP1 中引入

在事务复制设置期间，将在订阅数据库中创建插入、删除和更新操作的自定义存储过程。不管 UPDATE 语句会影响多少列，更新自定义存储过程都将更新订阅表中的所有列。任何未更改的列都将重置为更新前已存在的相同值。通常，此操作不会引起问题。但是，如果这些列中的任意一列被编制索引，则重置操作会占用大量资源。

如果您使用事务复制，并且订阅表中有若干个索引，而且只有几个列值因为更新而发生改变，则在订阅服务器应用更改时，维护索引的开销可能会成为限制性能的因素。例如，用于报告用途的订阅数据库可能具有比发布数据库更多的索引。在运行时动态生成 UPDATE 语句可以改善性能。此更新将仅包括已更改的列，从而创建最优的 UPDATE 字符串。

此 Service Pack 包含一个新的能够生成自定义存储过程的存储过程 sp_scriptdynamicupdproc，在运行时，您可以在订阅服务器中使用该自定义存储过程动态生成 UPDATE 语句。但是，在运行时生成动态 UPDATE 语句需要额外的处理。

sp_scriptdynamicupdproc 在最新版本的 SQL Server 2000 联机丛书中描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。这是 sp_scriptdynamicupdproc 的英语版参考主题。

[返回页首]

### 5.2.2 唯一列上的事务复制 UPDATE 语句

在 SP1 中引入

在事务复制中，通常将 UPDATE 语句作为更新进行复制。但是，如果更新改变了唯一索引、聚集索引或用作唯一约束的表达式中的任何列，则在订阅服务器中执行更新时首先执行一个 DELETE 语句，然后执行一个 INSERT 语句。这是因为这种更新可能影响到多行，而且如果更新是逐行进行的，则可能会破坏唯一性。

如果更新操作只影响一行，则不可能出现唯一性冲突。因此，在此 Service Pack 中添加了跟踪标志 8207，以允许将对任何唯一列进行的并且只影响一行的更新作为 UPDATE 语句进行复制。这是针对这样一种应用程序特别进行的优化：在订阅服务器上安装用户定义的 UPDATE 触发器，并且要求这些触发器在更新操作仅影响唯一列中的一行时才触发。

要使用跟踪标志 8207，请从命令提示符处打开该标志 (sqlservr.exe -T8207)，或在日志读取器代理程序启动之前，使用 DBCC TRACEON(8207, -1) 在运行时将其打开。

重要 通常，跟踪标志 8207 用于只读事务复制。如果在订阅服务器上可能发生主键 UPDATE，则不要对可更新的订阅使用此跟踪标志。

[返回页首]

### 5.2.3 去除对并发快照处理的限制

在 SP1 中引入

在 SQL Server 2000 中，如果发布表中包含一个既非主键又非聚集键的唯一索引，建议不要使用并发快照处理。如果在生成并发快照时修改了聚集键的数据，则为订阅服务器应用并发快照时，可能会出现重复键错误，从而导致复制失败。此 Service Pack 去除了对使用并发快照处理的限制。

[返回页首]

### 5.2.4 事务复制脚本自定义存储过程

在 SP1 中引入

设置 nosync 订阅（即不接收初始快照的订阅）时，必须手动创建 INSERT、UPDATE 和 DELETE 语句的自定义存储过程。通常，在传送初始快照时，会在订阅服务器上创建这些语句。新添加的存储过程 sp_scriptpublicationcustomprocs 可以为发布级的自定义存储过程生成脚本。这一新功能可以使设置 nosync 订阅变得更加容易。

sp_scriptpublicationcustomprocs 在最新版本的 SQL Server 2000 联机丛书中描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。这是 sp_scriptpublicationcustomprocs 的英语版参考主题。

[返回页首]

### 5.2.5 合并复制基于保持的元数据清除

在 SP1 中引入

如果在合并复制系统表中有大量元数据，清除元数据将会改善性能。在 SQL Server 2000 SP1 之前，元数据只能通过运行 sp_mergecleanupmetadata 来清除。但是，SQL Server 2000 SP1 及更高版本包含基于保持的元数据清除功能，这意味着可以从下列系统表中自动删除元数据：

- MSmerge_contents
- MSmerge_tombstone
- MSmerge_genhistory
- 任何前映像表（如果存在）

说明 如果在发布中启用了 @keep_partition_changes 同步优化选项，则前映像表是存在的。

出现下列情况时，将发生基于保持的元数据清除：

- 如果合并代理程序参数 –MetadataRetentionCleanup 设为 1（这是默认情况），合并代理程序将清除合并所涉及的订阅服务器和发布服务器。
- 如果参数 -MetadataRetentionCleanup 设为 0，则不进行自动清除。在这种情况下，请通过执行 sp_mergemetadataretentioncleanup 手动启动基于保持的元数据清除。必须在每一个应被清除的发布服务器和订阅服务器上执行此存储过程。建议（但不是必须）在相似的时刻清除发布服务器和订阅服务器（请参见本节后面的防止虚假冲突）。

  说明 对于 SQL Server 2000 SP1 及更高版本中包括的所有合并代理程序配置文件，将 -MetadataRetentionCleanup 参数设置为 1。如果将服务器升级到 SP1 或更高版本，然后添加合并复制，则合并代理程序配置文件将自动更新以包括此参数。如果将已启用合并复制的服务器升级到 SP1 或更高版本，则合并代理程序配置文件不会自动更新；请通过运行 sp_add_agent_parameter 来更新配置文件（请参见本节后面的 sp_add_agent_parameter 的其他参数）。

  重要 发布的默认保持期为 14 天。如果某个项目同时属于多个发布，则可能有几个不同的保持期。此时，将使用最长的保持期来确定清除可能发生的最早时刻。如果在数据库上有多个发布，并且其中有一个发布使用无限的发布保持期 (@retention=0)，则不会自动清除该数据库的合并元数据。因此，使用无限发布保持时要格外小心。

##### sp_add_agent_parameter 的其他参数

系统存储过程 sp_add_agent_parameter 现在有一个 MetadataRetentionCleanup 参数，通过此参数可在合并代理程序配置文件中添加或删除元数据保持清除操作。值为 1 表明配置文件应包括清除；值为 0 表明不应包括清除。例如，要将元数据保持清除添加到配置文件中，请执行下列代码：

    EXEC sp_add_agent_parameter @profile_id=<my_profile_id>,
      @parameter_name='MetadataRetentionCleanup', @parameter_value=1

##### 不同版本的 SQL Server 拓扑中的元数据清除

要在与合并复制有关的数据库中自动进行基于保持的清除，此数据库及合并代理程序必须都位于运行 SQL Server 2000 SP1 或更高版本的服务器上。例如：

- SQL Server 7.0 请求订阅服务器不会在 SQL Server 2000 SP1 发布服务器上运行清除。
- SQL Server 2000 SP1 强制合并代理程序不会在 SQL Server 2000（无 SP1）订阅服务器数据库上运行清除。
- SQL Server 2000 SP1 强制合并代理程序会在 Server 2000 SP1 发布服务器数据库上运行清除，即使该发布服务器上有正在运行 SQL Server 2000 或更早版本的订阅服务器。

在某些服务器上进行自动清除而在其他服务器上不进行自动清除时，最多会引起虚假冲突，而这种冲突极少发生。对于包括 SQL Server 2000 SP1 之前的 SQL Server 版本的拓扑，可以通过在所有未被自动清除的服务器上运行 sp_mergemetadatacleanup 来改善其性能。

##### 防止虚假冲突

基于保持的元数据清除可以防止在其他节点上发生未汇集的和无提示的更改覆盖。然而，下列情况下会发生虚假冲突：

- 在一个节点上清除元数据，而在其他节点上不清除。
- 已清除节点上的后续更新发生在元数据被删除的那一行。

例如，如果元数据在发布服务器上被清除而在订阅服务器上未被清除，并且在发布服务器进行了一次更新，则即使数据似乎已同步，仍会发生冲突。

要防止此冲突，需确保元数据几乎同时在相关节点上被清除。如果将 -MetadataRetentionCleanup 设为 1，则在合并开始之前将自动清除发布服务器和订阅服务器，从而确保节点被同时清除。如果发生冲突，请使用合并复制冲突查看器检查冲突并在必要时更改结果。

如果某个项目属于多个发布或位于某个重新发布方案中，则给定行在发布服务器和订阅服务器上的保持期可能不同。要减少元数据在一侧清除而在另一侧未清除的可能性，建议对不同的发布使用相似的保持期。

说明 如果在系统表中有大量必须清除的元数据，合并处理的运行时间可能会比较长。请定期清除元数据以避免出现此情况。

[返回页首]

### 5.2.6 合并复制的备份和还原问题

在 SP1 中引入

从某个备份还原的发布数据库首先应与一个具有全局订阅（即具有分配的优先级值的订阅）的订阅数据库同步，以确保正确的汇集行为。同步可以确保能够重新正确地应用发布数据库中由于还原操作而丢失的更改。

不要将发布数据库与含有匿名订阅的订阅数据库同步。因为匿名订阅没有将更改应用于发布数据库所需的足够元数据，所以这种同步可能会导致数据未汇集。

在规划合并复制的备份和还原操作时，还需考虑下列几个问题：

- 从没有超过保持期的备份中还原订阅数据库。

只有当备份时间不超过订阅服务器所订阅的所有发布的最短保持期时，才从备份中还原订阅数据库。例如，如果订阅服务器订阅了三个保持期分别为 10 天、20 天和 30 天的发布，则用于还原数据库的备份的保持时间不应超过 10 天。

- 生成备份之前进行同步。

强烈建议您在进行备份前将订阅服务器与发布服务器同步。否则，如果从该备份恢复订阅服务器，系统可能无法正常汇集。虽然备份文件本身也许是新的，但与发布服务器的最近一次同步至今的时间也可能和保持期一样长。例如，假设有一个保持期为 10 天的发布。最近一次同步在 8 天前，现在执行备份。如果 4 天后应用备份，则最近一次同步发生在 12 天之前，已过了保持期。如果订阅服务器在备份之前刚刚同步过，订阅数据库将在保持期之内。

- 如果更改了发布保持期值，请重新初始化订阅服务器。

如果需要更改发布的保持期值，可手动重新初始化订阅服务器，以避免数据不汇集。当到达发布保持期时，基于保持的元数据清除功能将从合并系统表中删除过时的元数据。

发布的保持期值用于确定保持期内尚未同步的发布何时到期。如果在清除之后增加了发布的保持期，而某个订阅试图与发布服务器（已删除元数据）合并，则该订阅将不会到期，这是因为保持期值已经增加了。而且，发布服务器没有足够的元数据来下载对订阅服务器所做的更改，从而导致数据不汇集。

- 请对所有发布服务器及其可选同步伙伴使用相同的发布保持期值。使用其他值可能导致数据不汇集。

[返回页首]

### 5.2.7 从不同版本的 SQL Server 还原复制的数据库

在 SP1 中引入

将备份还原到备份创建时所在的服务器或数据库，并且其上运行的服务器版本不变时，可保留复制设置。如果将复制的数据库还原到与备份数据库时不同的 SQL Server 版本，则需考虑下列问题：

- 如果要从使用 SQL Server 2000 创建的备份中将数据库还原到 Database Components SP4，且希望保留复制设置，则必须运行 sp_vupgrade_replication。运行 sp_vupgrade_replication 可以确保复制元数据会被升级。如果不运行 sp_vupgrade_replication，则复制元数据可能会处于一种无法预知的状态。
- 如果要从使用 SQL Server 7.0 的任何版本（发行版本或任何 Service Pack）创建的备份中将数据库还原到 SQL Server 2000，且希望保留复制设置，则必须在安装 Service Pack 之前重建备份。可以直接从在 SQL Server 7.0 中创建的复制数据库备份将数据库还原到 Database Components SP4，但是将不会保留复制设置。

[返回页首]

### 5.2.8 日志读取器代理的新参数 -MaxCmdsInTran

在 SP1 中引入

从 SP1 开始，为日志读取器代理添加了一个新的命令提示符参数 -MaxCmdsInTran。对于影响大量命令的事务（通常是大规模更新或删除），分发代理必须等待日志读取器代理将整个事务写入分发数据库之后，才能开始将该事务传播到订阅服务器。这一延迟会阻塞分发代理，并降低这两个代理之间的并行能力。

通过使用 –MaxCmdsInTran，日志读取器代理可以将大的事务分割成较小的事务块，每个事务块所包含的命令数量不超过 -MaxCmdsInTran 输入。因此，在日志读取器代理处理事务的后续块时，分发代理可以开始处理该事务前面的块。

日志读取器代理与分发代理之间并行能力的改善提高了总复制吞吐量。但是，请注意，这些事务块在订阅服务器上是作为单个事务提交的，这破坏了作为 ACID 属性（原子性、一致性、隔离性和持久性）之一的原子性属性。在大多数情况下，这一结果不是问题，但建议进行测试以确保不会引起问题。

##### 定义 –MaxCmdsInTran 参数

请为 -MaxCmdsInTran 参数值指定正整数值（大于或等于 1）。指定值 0 等效于不使用该参数。因为只有当事务非常大时此参数才能改善性能，所以此参数的值通常不应小于 5000。例如：

    logread.exe -MaxCmdsInTran 10000.

要使用此参数，发布服务器必须运行 SQL Server 2000 SP1 或更高版本，且必须将日志读取器代理和分发数据库升级至 SP3 或更高版本。否则，将忽略 -MaxCmdsInTran。

[返回页首]

### 5.2.9 非唯一聚集索引的限制

在 SP2 中引入（仅适用于事务复制）。

在发布某个表以便进行事务复制后，将无法在该表上创建非唯一聚集索引。在创建该索引之前，首先必须除去任何包含该表的发布。

[返回页首]

### 5.2.10 快照代理程序的新命令行参数 -MaxNetworkOptimization

在 SP2 中引入。

在正常处理过程中，当某些行不属于订阅服务器的分区时，合并复制会向订阅服务器发送 DELETE 命令。这种 DELETE 命令也称为不相干删除。不相干删除不会影响数据的完整性或汇集，但可能导致不必要的网络通信。

要减少不相干删除导致的网络通信，可以在合并复制发布中使用新的快照代理程序参数
-MaxNetworkOptimization。将该参数设为 1 可尽量减少不相干删除，从而最大程度地优化网络性能。

说明 仅当合并复制的同步优化选项设为 true（sp_addmergepublication 的 @keep_partition_changes 参数）时，将此参数设为 1 才有用。

默认值为 0，因为如果存在多级联接筛选器和复杂的子集筛选器，则将该参数设为 1 会导致存储更多的元数据，并导致发布服务器的性能降低。应当认真评估复制拓扑结构，并且只有当不相干删除导致的网络通信量高得无法接受时，才将 -MaxNetworkOptimization 设为 1。

可以通过执行系统过程 sp_add_agent_parameter 将此参数添加到快照代理程序配置文件中，如下所示：

    EXEC sp_add_agent_parameter 1, 'MaxNetworkOptimization', 1

[返回页首]

### 5.2.11 合并复制使用新角色

在 SP3 中引入

SP3 和更高版本自动创建一个角色供合并复制使用。该新角色的名称形式为 MSmerge-<publication ID>。该角色是在发布服务器上为每个合并复制发布而创建的，并且作为发布访问列表 (PAL) 来控制对发布服务器上合并发布的访问。如果除去了该角色，可以运行 SP3 或更高版本中附带的新存储过程 sp_createmergepalrole 来重建该角色。此存储过程将在发布服务器的发布数据库上执行，以便重建该角色。

sp_createmergepalrole 在最新版本的 SQL Server 2000 联机丛书中描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。这是 sp_createmergepalrole 的英语版参考主题。

[返回页首]

### 5.2.12 非系统管理员用户创建的订阅的新要求

在 SP3 中引入

如果创建某个订阅的用户不是 sysadmin 固定服务器角色的成员，则必须执行下列任一操作：

- 使用登录名和密码配置 SQL Server 代理的代理帐户，以便与复制代理程序关联的 SQL Server 代理作业步骤能够拥有足够的运行权限。有关更多信息，请参见 SQL Server 联机丛书中的“xp_sqlagent_proxy_account”主题。
- 在运行该代理之前，请将作业步骤的所有者更改为作为 sysadmin 固定服务器角色成员的用户。

说明 远程代理程序激活功能总是要求作业步骤在 sysadmin 固定服务器角色的用户帐户的上下文中运行。

[返回页首]

### 5.2.13 存储过程权限的更改

在 SP3 中引入

许多用于实现、管理和监视复制拓扑的存储过程的权限已经更改。这些更改中的大多数都涉及到使运行存储过程所需的权限变得更为严格。有关新权限的更多信息，请查阅 SQL Server 联机丛书更新版中有关复制存储过程的 Transact-SQL 参考文档。有关更新的 SQL Server 联机丛书的更多信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。

[返回页首]

### 5.2.14 sp_addmergearticle 和 sp_changemergearticle 的新参数

在 SP3 中引入

sp_addmergearticle 和 sp_changemergearticle 中已经同时添加了一个新参数 @published_in_tran_pub。此参数用于指明是否将合并发布中的一个项目同时发布到事务发布中。@published_in_tran_pub 的数据类型为 nvarchar(5)，默认值为 FALSE。TRUE 用于指明将某个项目同时发布于事务发布中。

说明 在 sp_changemergearticle 中更改此参数时，必须使快照无效并且必须重新初始化订阅服务器。

[返回页首]

### 5.2.15 配置发布和分发向导的新页面

在 SP3 中引入

配置发布和分发向导现在包含一个新页：分发服务器密码。如果选择一个或多个发布服务器将此服务器用作远程分发服务器，并且这些发布服务器中有一个或多个需要密码，则必须键入密码。发布服务器和远程分发服务器之间的连接是链接服务器和远程服务器组成的混合网络。此连接使用登录名 distributor_admin。默认情况下，会在远程分发服务器中将服务器配置为非信任的发布服务器，因而需要密码。

说明 如果已下载并安装最新版本的 SQL Server 2000 联机丛书，则在单击该新页的“帮助”按钮时可得到该信息。

[返回页首]

### 5.2.16 对 Windows 同步管理器支持的更改

在 SP3 中引入

SQL Server 允许您启用现有的订阅（使用 SQL Server 企业管理器 SQL-DMO 和复制存储过程创建），以便与 Windows 同步管理器一起使用。还可以使用 Windows 同步管理器创建新订阅。在您应用该 Service Pack 以后，当 Windows 同步管理器同步订阅时，将提示您输入连接到参与同步的服务器所需的一个或多个密码。

[返回页首]

### 5.2.17 附加或还原复制数据库要求的更改

在 SP3 中引入

在某些情况下，在附加或还原发布数据库的过程中，复制可能无法正常工作。包括以下情况：

- 已应用 SP3 或更高版本。
- 附加数据库的用户不是 sysadmin 固定服务器角色的成员。
- 尚未启用跨数据库链接。

如果符合上述所有情况，则应在附加或还原的数据库上执行 sp_changedbowner 存储过程。将所有权指定给内置的 sa 管理员登录。这将确保复制功能能够正常运行。

说明 只有 sysadmin 固定服务器角色的成员能够执行 sp_changedbowner。

有关跨数据库所有权链接的更多信息，请参见 5.1.10 跨数据库所有权链接。

[返回页首]

### 5.2.18 复制 ActiveX 控件的安全性指定的更改

在 SP4 中引入

复制 ActiveX(R) 控件（sqlinitx.dll、sqldistx.dll、sqlmergx.dll 和 replerrx.dll）不再指定为“对于脚本是安全的”和“对于初始化是安全的”。控件的安全性和功能行为在 SP3 之后未曾更改；但是，安全性指定已根据安全标准进行了更改。这些更改可能会影响调用网页中的嵌入式复制 ActiveX 控件的应用程序。

[返回页首]

### 5.2.19 合并发布中项目的新参数

在 SP4 中引入

在调用 sp_addmergearticle 时，可以指定新参数 @compensate_for_errors。该参数指定如果在同步期间遇到错误（例如违反约束），是否要进行补偿操作。如果设置为 TRUE（默认值），则同步期间无法在节点上应用的更改将通过补偿操作撤消所有其他节点上的更改。在某些情况下需要此行为，但某些情况下也可能会产生问题；例如，一个因配置不当而出错的订阅服务器可能会撤消在发布服务器和所有其他订阅服务器上的更改。

如果指定值 FALSE，将禁用这些补偿操作；但是，仍会记录错误，后续的合并将继续尝试应用更改。尽管受影响的行中的数据似乎没有汇集，但是，只要您解决了错误，即可应用更改，数据也将汇集。

说明 如果项目的源表已在另一个发布中发布，则两个项目的 @compensate_for_errors 值必须相同。

[返回页首]

### 5.2.20 用于复制事务发布中标识列的新架构选项

在 SP4 中引入

在以前的版本中，事务发布中的标识列作为基本数据类型（例如 int）进行复制，而不设置标识属性。此方法适合不允许在订阅服务器上进行插入的应用程序。SQL Server 2000 SP4 为事务发布引入了一个新的架构选项 (0x4)，用于将标识列作为一个标识列进行复制。这在许多情况下都适用，包括双向复制以及使用订阅服务器作为备用服务器。在上述情况下，可能会在订阅服务器上进行插入，而插入会使标识列增加。

指定标识列应作为一个标识列复制：

1. 在发布服务器上创建表时，为标识列指定 NOT FOR REPLICATION 选项。这样可以确保只有用户插入会使标识列增加，复制代理程序插入不会增加标识列。有关更多信息，请参见 SQL Server 联机丛书中的“CREATE TABLE”。
2. 在添加包含标识列的项目时，应为 sp_addarticle 的 @schema_option 参数设置 0x4 选项。有关此参数的更多信息，请参见 SQL Server 联机丛书中的“sp_addarticle”。
3. 初始化订阅服务器之后，对每个包含标识列的表执行 DBCC CHECKIDENT。这样可以为在订阅服务器的标识列中的插入指定起始值，使插入的值不会与发布服务器上已插入的值相同。例如，可以指定在订阅服务器上的插入应从 1,000,000 开始：

       USE Northwind
       GO
       DBCC CHECKIDENT ('Employees', RESEED, 1000000)
       GO

有关更多信息，请参见 SQL Server 联机丛书中的 DBCC CHECKIDENT。

### 5.2.21 在 Windows-on-Windows 64 模式下运行的分发服务器不支持非 SQL Server 订阅服务器

在 SP4 中引入

对于在 X64 或兼容的处理器上运行的 Windows 2003 SP1 系统，以 Windows-on-Windows 64 模式运行的 SQL Server 2000（32 位）分发服务器实例不能包含非 SQL Server 订阅服务器。尽管 SQL Server 2000 SP4 现在支持以 Windows-on-Windows 64 模式运行，但是用于从分发服务器连接到非 SQL Server 订阅服务器的驱动程序或提供程序不支持此模式。

[返回页首]

## 5.3 SQL Server 代理和共享工具增强功能

本节讨论 SP4 中包含的 SQL Server 代理和共享工具的增强功能。

[返回页首]

### 5.3.1 SQL Server 代理记录帐户信息

在 SP2 中引入

SQL Server 代理作业历史记录现在会记录运行每个作业步骤的 Windows 帐户。此信息可以帮助管理员诊断与调度作业（包括为复制和数据转换服务 (DTS) 任务定义的调度作业）有关的安全性问题。

[返回页首]

### 5.3.2 主/目标服务器配置的更改

在 SP3 中引入

多服务器管理是自动执行跨越多个 SQL Server 实例的管理任务的过程。如果管理两个以上的服务器并且要执行集中式维护任务，请使用多服务器管理。

在 SP3 或更高版本中，SQL Server 代理服务帐户不必一定是 Windows 管理员帐户，除非您需要使用 SQL Server 代理的代理帐户。有关 SQL Server 代理的代理帐户的更多信息，请参见 5.6.3 SQL Server 代理的代理帐户的改进。SQL Server 代理服务帐户必须是 sysadmin 固定服务器角色的成员。

必须具有至少一个主服务器和至少一个目标服务器才能使用多服务器管理。主服务器将作业分发到目标服务器并接收来自目标服务器的事件。主服务器集中存储目标服务器上运行的作业的作业定义副本。目标服务器定期连接到其主服务器以更新它要执行的作业列表。如果存在新作业，目标服务器将下载该作业然后断开与主服务器的连接。目标服务器在完成作业后，会重新连接到主服务器并报告作业状态。

在应用 SP4 之前，必须完成几个步骤以升级 SQL Server 2000 主/目标服务器配置。SP4 引入的更改与 SQL Server 7.0 目标服务器以及未运行 SP3 或更高版本的任何服务器都不兼容。这是在原始 SQL Server 2000 功能基础上的更改。

升级主/目标服务器配置

1. 在主服务器上新建一个 MSX（主服务器）帐户。这样做是为了让目标服务器 (TSX) 做好升级准备。要完成此操作，请运行下列命令。

       --Option A: Windows authentication
       EXEC sp_grantlogin 'DOMAIN\user'
       GO
       USE msdb
       GO
       EXEC sp_adduser 'DOMAIN\user', 'DOMAIN\user', 'TargetServersRole'
       GO

       --Option B: SQL Server authentication – see explanation below for
       --details.
       EXEC sp_addlogin <MSXAccount>, <MSXAccountPassword>, 'msdb'
       GO
       USE msdb
       GO
       EXEC sp_adduser <MSXAccount>, <MSXAccount>, 'TargetServersRole'
       GO

   其中，<MSXAccount> 代表所选的 SQL 登录名，<MSXAccountPassword> 代表关联的密码。

   说明 这些值必须包含在单引号内。

   选择 MSX 帐户时可考虑下列选项：

   - Windows 身份验证。这是最安全的选项，因为不需要存储密码，而且不具有本地 Windows 管理员权限也可以配置 SQL Server 和 SQL Server 代理。
   - SQL Server 身份验证。这要求 SQL Server 代理服务帐户具有本地 Windows 管理员权限，原因在于 SQL Server 将用户名和密码作为 LSA（本地安全权限）机密进行存储，并只允许本地 Windows 管理员访问。可以为所有 TSX 服务器创建一个帐户，也可以为每个 TSX 服务器分别创建一个帐户。

   不要指定 SQL Server 代理探测帐户 (<computer_name>_msx_probe_login)。在升级到 SP3 或更高版本的过程中，SQL Server 会删除旧的探测帐户，因为 TSX 服务器不再使用它们。

2. 将 TSX 服务器逐个升级到 SP4。（在应用 Service Pack 之前，请参见步骤 3 了解有关计划升级的更多信息。）
3. 为了尽可能缩短停机时间，请在完成 SP4 更新之后，尽快在每个 TSX 服务器上运行扩展存储过程 xp_sqlagent_msx_account。

   说明 运行 xp_sqlagent_msx_account 之后，必须在每个服务器上停止并重新启动 SQL 代理。

   有关 xp_sqlagent_msx_account 的更多信息，请参见 5.3.3 新的 SQL Server 代理扩展存储过程。

4. 对主服务器应用 SP4。SP4 安装程序将删除旧的 _msx_probe 帐户，因为 TSX 服务器将不再使用它们。不会删除拥有 SQL 代理作业的帐户，您必须将这些作业的所有者更改为其他用户并手动删除这些帐户。如果您希望继续使用拥有 SQL 代理作业的旧 _msx_probe 帐户，则可能必须更改 _msx_probe 帐户的密码。

[返回页首]

### 5.3.3 新的 SQL Server 代理扩展存储过程

在 SP3 中引入

SP3a 包含一个新的扩展存储过程 xp_sqlagent_msx_account，该存储过程允许您配置一个帐户，以供 SQL Server 代理 TSX 服务器用来从 MSX 服务器下载指令。该帐户也称为 MSX 帐户，即主服务器帐户。

xp_sqlagent_msx_account 在最新版本的 SQL Server 2000 联机丛书中描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.6 SQL Server 2000 联机丛书更新已可用。这是 xp_sqlagent_msx_account 的英语版参考主题。

[返回页首]

### 5.3.4 SQL Server 代理权限检查

在 SP3 中引入

SQL Server 现在会检查以确保代理作业的所有者具有追加或重写每个作业所产生的输出日志文件的权限。存在三种情况：

- 如果作业所有者是 sysadmin 固定服务器角色的成员，则可以将作业输出日志文件写入服务器。
- 如果作业所有者是 Windows 用户，则 SQL Server 将测试该用户是否对服务器上所选作业输出日志文件位置具有写权限。
- 如果作业所有者是 SQL Server 用户，则 SQL Server 将测试 SQL Server 代理的代理帐户是否对服务器上所选作业输出日志文件位置具有写权限。如果尚未设置代理帐户，则不会写入日志。

在所有情况下，均使用 SQL Server 代理凭据写入作业，但 SQL Server 现在将进行测试以确保用户对服务器上所选作业输出日志文件位置具有写权限。错误被记录在作业历史记录中，但如果无法写入日志文件，作业步骤也不会失败。

[返回页首]

### 5.3.5 SQL 代理邮件 MAPI 配置文件

在 SP3 中引入

在 32 位版本的 SQL Server 2000 中，可以配置 SQL 代理邮件以使用扩展 MAPI 电子邮件配置文件来发送电子邮件警报。可以使用扩展 MAPI 电子邮件应用程序（如 Microsoft Outlook）来创建扩展 MAPI 配置文件。在 64 位版本的 SQL Server 2000 中，SQL 代理邮件只能使用简单 MAPI 配置文件来发送电子邮件警报。不要在 32 位版本的 SQL Server 2000 中使用简单 MAPI 配置文件。

[返回页首]

### 5.3.6 视图设计器帮助主题不可用

在 SP4 中引入

在 SQL Server 企业管理器中，不能从“设计视图”和“创建视图”获取帮助主题“视图属性”。可以从此 Microsoft 网站获取经过更新的主题。

[返回页首]

## 5.4 SQL Server 连接组件增强功能

本节讨论 SP4 中包含的 SQL Sever 2000 连接组件增强功能。

[返回页首]

### 5.4.1 支持 QLogic 虚拟接口构架

在 SP3 中引入

SQL Server 现在支持 QLogic 虚拟接口构架 (VIA) 系统区域网络 (SAN) 实现。要启用对 QLogic VIA 连接的 SQL Server 支持，客户端计算机和服务器计算机都必须在相应的 Windows system32\drivers\etc 文件夹内名为 Vihosts 的文件中提供 IP 地址解析。

Vihosts 文件的格式应如下所示：

<服务器计算机的 VI IP 地址> <SERVER_COMPUTERNAME>

<客户端计算机的 VI IP 地址> <CLIENT_COMPUTERNAME>

例如：

139.4.130.1 SQLCOMPUTER

139.4.130.2 SQLCLIENT

请使用 QLogic VIA 网卡各自的 IP 地址和实际的计算机名。否则，将无法与命名实例或其他 IP 协议（如 TCP 或命名管道）建立连接。Giganet VIA 连接不一定需要 Vihosts 文件。

说明 您必须在客户端计算机上使用客户端网络实用工具标识正确的 VIA 供应商。请在“供应商”下拉框中选择适当的值。还应在服务器计算机上通过服务器网络实用工具完成相应的操作。

[返回页首]

## 5.5 Meta Data Services 增强功能

本节讨论 Database Components SP4 所附带的 SQL Server 2000 Meta Data Services 增强功能。

[返回页首]

### 5.5.1 元数据浏览器以 Unicode 导出元数据

在 SP1 中引入

现在，元数据浏览器以 Unicode 格式导出基于 XML 的元数据。在 SQL Server 2000 SP1 之前，此浏览器导出的是不支持非英语字符的 ANSI 码。用户可能看不到这一功能性的改变。自 SP4 版起，导出的数据总是用 Unicode 表示。您仍可以通过将注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Repository\Engine\XMLExport 的值设置为 0，以 ANSI 码导出元数据。下表列出了可以为此注册表项设置的值：

- NOOBJID=1
- NOHEADER=2
- INDENTATION=4
- UNICODE=8
- LOGUNMAPPEDTAGS=16
- EXPORTBASE=32

有关每个标志的更多信息，请参见 SQL Server 联机丛书中的“IExport::Export 方法”。

[返回页首]

### 5.5.2 禁用脚本支持

在 SP3 中引入

禁用了信息模型中的脚本支持。安装 SP3a 或更高版本之后，当应用程序访问为其定义了脚本的属性或方法时，将收到以下错误：

    EREP_SCRIPTS_NOTENABLED

启用脚本支持

如果需要继续执行脚本，可以使用下列过程来创建用于启用脚本支持的注册表设置。

1. 打开注册表编辑器并定位至 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft。
2. 创建一个名为 Repository 的注册表项（如果尚不存在），然后创建一个名为 Engine 的子注册表项，以便路径等于 Repository\Engine。
3. 在 Engine 注册表项中，添加一个名为 AllowScripting 的新 DWORD 值，并将该值设为 1。

如果以后希望禁用脚本，请将此新注册表项的值设为 0。

重要 出于安全考虑，绝对不要使 sa 登录密码为空。

[返回页首]

### 5.5.3 用于访问知识库信息的新 RepositoryUser 角色

在 SP3 中引入

SQL Server 在其 msdb 数据库中包含了一组表、存储过程和视图，用于存储由 Meta Data Services 知识库引擎使用的信息。在 SP3 中，添加了一个新的专用角色 RepositoryUser，必须使用该角色才能访问和更新知识库信息。此角色已被授予对上述对象进行创建、读取、更新、删除和执行的权限。public 角色不再具有访问这些对象的权限。

此项更改不仅影响由知识库引擎在以后创建的任何其他对象，还将影响现有的知识库对象。必须将通过 public 角色访问知识库的用户和应用程序添加到 RepositoryUser 角色中。

[返回页首]

## 5.6 数据转换服务增强功能

本节讨论 SP4 中包含的 SQL Server 2000 数据转换服务增强功能。

[返回页首]

### 5.6.1 DTS 向导不再将字符串列限制为不超过 255 个字符

在 SP2 中引入

现在，将数据导出到文本文件时，对于任何包含字符串类型数据的列，DTS 导入/导出向导将程序包配置为最多可以写入这些列中的 8000 个字符。

[返回页首]

### 5.6.2 SQL Server 代理记录运行 DTS 程序包时的安全上下文

在 SP2 中引入

SQL Server 代理会记录运行作业的每个步骤时的安全上下文。在 SP3 或更高版本中，安全上下文出现在“作业历史记录”对话框中。如果从作业中的某个步骤运行 DTS 包，SQL Server 代理将记录运行该程序包的用户帐户。该信息可以帮助管理员诊断当 DTS 包按日程安排在服务器上运行时出现的权限和身份验证问题。

[返回页首]

### 5.6.3 SQL Server 代理的代理帐户的改进

在 SP2 中引入

在 SP2 之前，存储在服务器上的 DTS 包不能使用 SQL Server 代理的代理帐户凭据运行，除非该代理帐户有权访问运行服务器（对于从 xp_cmdshell 运行的作业）或代理（对于代理作业）的帐户的用户 Temp 文件夹。因此，用户经常需要调整 SQL Server 或 SQL 代理启动帐户的 TEMP 环境变量，以使其指向启动帐户和代理帐户都可访问的文件夹，如 C:\Temp。在 SP2 和更高版本中，对 DTS 进行了一些改进，以便在用户 Temp 文件夹不可用时使用系统 Temp 文件夹，从而大大减少了进行这种调整的需要。

[返回页首]

### 5.6.4 默认情况下禁止保存到 Meta Data Services

在 SP3 中引入

默认情况下，SP3 和更高版本会禁用在 Meta Data Services 中存储 DTS 包的选项。这意味着 Meta Data Services 选项不会显示在“保存 DTS 包”对话框的“位置”下拉列表中。此外，此选项在 DTS 导入/导出向导的“保存、调度和复制包”页上也被禁用。

允许将包保存到 Meta Data Services 中

- 在 SQL Server 企业管理器中，右键单击“数据转换服务”节点，单击“属性”，然后单击“允许保存到 Meta Data Services”。

  说明 必须以具有管理员权限的帐户登录才能修改此属性。

当在 Meta Data Service 中存储包的选项被禁用时，可以从 Meta Data Services 中装载现有包，并对其进行编辑，然后使用“保存”选项将其保存到 Meta Data Services 中。但是，无法从“另存为”选项使用 Meta Data Services。例如，不能使用其他名称将包重新保存到 Meta Data Services 中。

[返回页首]

## 5.7 XML 增强功能

以下主题讨论 SP4 中包含的 XML 和 SQLXML 的增强功能。

[返回页首]

### 5.7.1 改进的 XPath 表达式验证

在 SP3 中引入，在 SP4 中更新

在应用 SP4 时，OPENXML 更新为使用自定义的 XML 分析技术，该技术是为了向后兼容 MSXML 2.6。

在 SP3 之前，OPENXML 使用的 XML 分析器版本允许 XPath 表达式中的谓词跟在用于标识当前上下文节点（在 XPath 语法中，当前上下文节点由句点 `.` 表示）的特殊字符缩写词后面。这种做法违反了 XPath 语法规范，该规范要求此字符后跟一个位置路径表达式。

对于新的 OPENXML 行为，谓词不能紧跟在当前上下文节点缩写词特殊字符的后面。在升级到 SP3 或更高版本之后，SQLXML 查询（对所批注的映射架构执行的 XPath 查询以及用于转换 SQLXML 查询结果的 XSLT 样式表中的 XPath 查询）存在语法错误的 XPath 表达式将失败。

要防止发生这些失败，请标识并修复所有使用错误语法的表达式。例如，在下面的 `xsl:if` 元素中，被指定为测试特性值的 XPath 表达式的语法是无效的，原因在于谓词 `[@ResourceTypeID='2']` 直接跟在用于标识当前上下文节点的特殊字符缩写词的后面。

以下语句在以前不生成错误，但是在安装 SP3 或更高版本之后将失败。

    <xsl:if test=".[@ResourceTypeID='2']">

要防止失败，必须按如下所示修改该 XPath 表达式：

    <xsl:if test="@ResourceTypeID='2'">

[返回页首]

## 5.8 虚拟备份设备 API 增强功能

以下信息适用于 SQL Server 2000 虚拟备份设备 API。

[返回页首]

### 5.8.1 在单个快照中捕获多个数据库

在 SP2 中引入

虚拟备份设备 API 允许独立软件供应商将 SQL Server 2000 集成到其产品中。此 API 被设计为能够提供最高可靠性和最优性能。它完全支持 SQL Server 2000 的备份及还原功能，包括完整的热备份和快照备份功能。

在 SP1 及更低版本中，无法一次固定或备份一个以上的数据库。现在，SP2 或更高版本通过 VDC_PrepareToFreeze 命令为在单个快照中固定和捕获多个数据库提供了服务器端支持。

SP4 中的虚拟备份设备接口规范包含有关 VDC_PrepareTo Freeze 命令的更新信息。更新版本的虚拟设备接口头文件 (Vdi.h) 位于 SP4 安装文件夹内的 \Devtools\Include 中。

可以从 Microsoft 下载中心中的 Microsoft SQL Server 下载网站下载更新的规范。

[返回页首]

## 5.9 错误报告

在 SP3 中引入

默认情况下，Microsoft SQL Server 错误报告是被禁用的。可以在安装过程中通过 SQL Server 安装程序或 Analysis Services 安装程序启用错误报告功能，也可以在安装后通过企业管理器中的“服务器属性”对话框或 Analysis Manager 中的“服务器属性”对话框启用错误报告功能。在运行 SQL Server 安装程序时启用错误报告功能，可以使错误报告功能供 SQL Server 数据库引擎和 SQL Server 代理使用。在运行 Analysis Services 安装程序时启用错误报告功能，可以使错误报告功能供 Analysis Services 使用。如果要同时为 SQL Server 和 Analysis Services 启用错误报告功能，则必须在运行 SQL Server 安装程序时为 SQL Server 启用错误报告功能，并且在运行 Analysis Services 安装程序时为 Analysis Services 启用错误报告功能。

如果启用了此功能，当 SQL Server 数据库引擎、SQL Server 代理或 SQL Server Analysis Services 中发生致命错误时，SQL Server 会自动向 Microsoft 发送一个报告。Microsoft 利用错误报告来改进 SQL Server 的功能，并且对所有信息保密。

有关错误的信息将通过安全 (HTTPS) 连接发送并保存到 Microsoft，并且 Microsoft 会限制对这些信息的访问。另外，您也可以将这些信息发送到您自己的“公司错误报告”服务器。有关设置“公司错误报告”服务器的更多信息，请访问此 Microsoft 网站。

错误报告包含下列信息：

- 出现问题时 SQL Server 的状态。
- 操作系统版本和计算机硬件信息。
- 用户产品的数字 ID（可用来标识许可证）。
- 计算机的网络 IP 地址。
- 来自出错进程的内存或文件的信息。

Microsoft 无意收集您的文件、姓名、地址、电子邮件地址或任何其他私人信息。但是，错误报告可能包含来自出错进程的内存或文件的客户特定信息。虽然使用这些信息有可能可以确定您的身份，但 Microsoft 不会将这些信息用于此目的。

有关 Microsoft 错误报告数据收集策略的信息，请访问此 Microsoft 网站。

如果启用了错误报告功能并出现致命错误，Windows 事件日志中可能会包含来自 Microsoft 的一条响应，该响应指向与特定错误有关的 Microsoft 知识库文章。响应可能类似于以下示例：

    Source = MSSQLServerOlapServicesDW
    EventID = 1010
    data = http://support.microsoft.com/support/misc/kblookup.asp?id=Q123456
    &iBucketTable=1&iBucket=39980&Cab=21474432.cab&LCID=1033
    &OS=5.1.2600.2.00010100.0.0

要禁止 SQL Server 数据库引擎和 SQL Server 代理使用错误报告功能，请转至企业管理器中的“SQL Server 属性”对话框，清除“常规”选项卡中的“启用错误报告功能”复选框。要禁止 Analysis Services 使用错误报告功能，请转至 Analysis Services 中的“服务器属性”对话框，并清除“启用错误报告功能”复选框。如果同时为 SQL Server（数据库引擎和 SQL Server 代理）和 Analysis Services 启用了错误报告功能，要使两者都不能使用错误报告功能，则必须分别在上述两处关闭错误报告功能。

[返回页首]

## 5.10 可维护性增强功能

在 SP4 中引入

SQL Server 2000 SP4 引入了新的可维护性功能，使您可以卸载在 Windows XP 和 Windows Server 2003 上运行的 SQL Server 2000 SP4 以及更高版本所应用的热修复程序。（SQL Server 2000 SP3 也提供了此功能，但是只有在应用了附加的热修复程序之后才可用。）

[返回页首]

## 5.11 English Query 增强功能

在 SP1 中引入

Microsoft 已经发布了针对 English Query 应用程序的安全增强功能。该增强功能不作为 Service Pack 的一部分安装。但是，如果使用 English Query，则建议您应用它。该安全增强功能位于 SP4 CD-ROM 上的 \EQHotfix 文件夹中。有关 English Query 增强功能的详细信息，请参见知识库文章 297105。

[返回页首]

## 5.12 用于 C 语言的 DB-Library 和嵌入式 SQL

在 SP1 中引入，在 SP4 中更新

虽然 SQL Server 2000 仍然支持用于 C 语言应用程序接口 (API) 的 DB-Library 和嵌入式 SQL，但是以后的 SQL Server 版本将不再包含编写使用这些 API 的应用程序所需的文件或文档。SQL Server 的下一个版本仍然支持来自使用用于 C 语言的 DB-Library 和嵌入式 SQL 编写的现有应用程序的连接，但在此之后的版本中将不再提供这种支持。在编写新的应用程序时不要使用 DB-Library 或嵌入式 SQL。修改现有应用程序时消除对这些技术的依赖性。使用 .NET Framework 中的 System.Data.SQLClient 命名空间或者 ADO、OLE DB 或 ODBC 等 API 访问 SQL Server 中的数据，代替用于 C 语言的 DB-Library 或嵌入式 SQL。有关这些技术的更多信息，请参见 SQL Server 联机丛书或 .NET Framework SDK。

[返回页首]