# Microsoft SQL Server 2000 Service Pack 4

# Desktop Engine (MSDE 2000)

##### 2005 年 3 月 29 日

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

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

# 目录

1.0 简介

1.1 系统要求

1.2 升级到 MSDE 2000 SP4 之前

1.3 MSDE 2000 SP4 的安全注意事项

1.4 确定实例名称

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

1.6 确定 MSDE 2000 的当前版本

1.7 有关 SP4 的其他信息

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

2.0 可以找到并下载 MSDE 2000 SP4 的位置

2.1 选择正确的语言

2.2 下载 MSDE 2000 SP4

2.3 解压缩 MSDE 2000 SP4 文件

2.4 下载和解压缩阶段准则

3.0 安装 Service Pack

3.1 准备安装 MSDE 2000 SP4

3.2 运行 MSDE 2000 SP4 安装程序

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

3.4 在复制服务器上安装 MSDE 2000

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

3.6 升级链接服务器的目录

3.7 卸载 MSDE 2000 SP4

3.8 重新应用 MSDE 2000 SP4

4.0 其他安装注意事项

4.1 再分发 MSDE 2000 SP4

4.2 MSDE 2000 SP4 文件位置

5.0 文档说明

5.1 MSDE 2000 增强功能

5.2 复制增强功能

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

5.4 XML 增强功能

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

5.6 MSDE 2000 安装程序增强功能

5.7 可维护性增强功能

[返回页首]

# 1.0 简介

本自述文件描述如何使用 Microsoft® SQL Server™ 2000 Service Pack 4 (SP4) 的 SQL Server Desktop Engine (MSDE) 部分。使用 Desktop Engine SP4，可以将现有的 MSDE 实例升级到 MSDE 2000 SP4，也可以安装新的 MSDE 2000 SP4 实例。

安装 SQL Server SP4 的一般过程如下：

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

说明 除非特别指定，否则，本自述文件中对 SQL Server 2000 Desktop Engine 的所有引用均是指 MSDE 2000 Release A。MSDE 2000 Release A 下载版的功能与 SQL Server 2000 Desktop Engine SP3a 相当，但是包括新的最终用户许可协议 (EULA)，赋予了用户不同于以前的 MSDE 2000 许可证所赋予的权利。

SQL Server 2000 SP4 包含四个部分。使用每个部分可以将 SP4 应用于不同的 SQL Server 组件：

- MSDE 2000 SP4 更新 SQL Server 2000 MSDE 2000 和 MSDE 2000 Release A 的实例。由 MSDE 2000 SP4 更新的组件包括：
  - MSDE 2000 数据库引擎。
  - MSDE 2000 附带的数据库命令提示符实用工具，如 osql 和 bcp 实用工具。
  - 数据库客户端连接组件，如用于 SQL Server 2000 的 Microsoft OLE DB 提供程序、SQL Server 2000 ODBC 驱动程序和客户端 Net-Library。
  - 随 MSDE 2000 附带的复制和数据转换服务 (DTS) 的相应部分。
- Database Components SP4 更新 SQL Server 2000 企业版、标准版、开发版、企业评估版或个人版数据库引擎的实例。
- Analysis Services SP4 更新 SQL Server 2000 安装中 SQL Server 2000 Analysis Services 的各部分。
- 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 中提供的修复程序。

MSDE 2000 SP4 只能用于 SQL Server 2000 Desktop Engine 或 MSDE 2000 Release A 的实例。SQL Server 2000 SP4 的其他部分将 SP4 应用于其他 SQL Server 2000 组件，例如 Analysis Services 或数据库引擎。使用 Database Components SP4 和 Analysis Services SP4 的方式都有各自的自述文件进行描述。其他自述文件可以从此 Microsoft 网站获得。

[返回页首]

##### 使用 MSDE 2000 SP4

MSDE 2000 的此 Service Pack 针对创建使用 MSDE 的可再分发应用程序的开发人员。MSDE 2000 SP4 可以用于执行下列操作：

- 将现有的 2000 MSDE 2000 或 MSDE 2000 Release A 实例升级到 MSDE 2000 SP4（前提是实例最初使用 MSDE 2000 安装程序进行安装）。
- 安装新的 MSDE 2000 SP4 实例（前提是您的 MSDE 2000 许可证允许您安装 MSDE 2000 实例）。
- 将 MSDE 1.0 实例升级到 MSDE 2000（前提是您的 MSDE 2000 许可证允许您运行 MSDE 2000 实例）。
- 为开发人员提供编写应用程序安装程序所需的文件，以便将 MSDE 2000 SP4 的实例作为应用程序安装的一部分进行安装。开发人员必须拥有随应用程序分发 MSDE 的许可证。
- 为开发人员提供所需的文件来构建修补程序模块，分发给其应用程序使用 MSDE 2000 合并模块安装了 MSDE 2000 实例的客户。

有关 MSDE 2000 许可的更多信息，请参见使用 MSDE 2000。如果尚未获得安装或运行 MSDE 2000 的许可证，可以通过在 MSDE 2000 Release A 网页上注册来获得。

[返回页首]

##### 在开始安装 MSDE 2000 SP4 之前

要安装 MSDE 2000 SP4，请查阅本自述文件第 1 节和第 2 节中的资料，然后按照第 3 节中的说明操作，前提是符合下列条件：

- 已经确定可以对现有的 MSDE 实例应用 MSDE 2000 SP4。
- 准备安装新的 MSDE 2000 实例。
- 准备将 MSDE 2000 SP4 文件合并到应用程序的安装实用工具中。

[返回页首]

##### 在升级和安装期间期望出现的情况

本自述文件的下列各节包含的示例是将现有的 MSDE 实例升级到 MSDE 2000 SP4 或安装新的 MSDE 2000 实例的最常见方案：

- 3.2.2 将现有的 MSDE 2000 实例升级到 MSDE2000 SP4
- 3.2.3 安装新的 MSDE 2000 SP4 实例
- 3.2.4 将 MSDE 1.0 升级到 MSDE 2000 SP4

[返回页首]

## 1.1 系统要求

在尝试运行 MSDE 2000 SP4 安装程序之前，您的计算机必须满足下列硬件和软件要求。

##### 硬件要求

下表列出了安装并运行 MSDE 2000 的硬件要求。

硬件 | 最低要求
计算机 | Intel Pentium 或兼容机，166 MHz 或更高
内存 (RAM) | Microsoft Windows XP 和 Windows 2003 Server 要求 128 MB Windows 2000 要求最低 64 MB
硬盘空间 | Microsoft Windows XP 和 Windows 2003 Server 要求 75 MB Windows 2000 要求 100 MB
驱动器 | CD-ROM 驱动器（如果是从 CD-ROM 安装 MSDE 2000 SP4）

MSDE 2000 没有硬件兼容性列表 (HCL)。如果计算机满足上表所列的最低要求，MSDE 2000 软件即可在经鉴定能够随 Windows 操作系统使用的硬件上运行。有关经鉴定能够随 Windows 操作系统使用的硬件的更多信息，请参见此 Microsoft 网站上的 Windows 硬件兼容性列表。

[返回页首]

##### 操作系统要求

要使用 MSDE 2000，必须已安装下列操作系统之一：

- Windows Server 2003 Standard Edition、Windows Server 2003 Enterprise Edition、Windows Server 2003 Datacenter Edition、Windows Server 2003 Web Edition。
- Windows 2000 Server、Windows 2000 Advanced Server、Windows 2000 Datacenter Server。
- Windows XP Professional、Windows XP Home Edition。
- Windows 2000 Professional。

重要 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 可以继续得到关键热修复程序的支持。

[返回页首]

##### 软件要求和系统要求

如果要运行 MSDE 2000 安装程序，必须启用文件和打印机共享。

确认文件和打印机共享已启用

1. 在“控制面板”中，双击“网络连接”。
2. 在“高级”菜单中，单击“高级设置”。
3. 在“适配器和绑定”选项卡上，确定选中了“Microsoft 网络的文件和打印机共享”。

如果下列任一安全策略已被设置为“禁止安装”，则 MSDE 2000 SP4 的安装将失败：

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

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

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

设置安全策略

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

如果使用的是 Microsoft Windows Installer 2.0.2600.0 或更高版本，则只能从 CD-ROM 安装 MSDE 2000 SP4 的升级文件。如果需要升级 Windows 安装程序，MSDE 2000 SP4 应包含必要的文件。

升级 Windows 安装程序

1. 在 Windows 资源管理器中，浏览到 \MSDE\MSI 文件夹，该文件夹位于 SQL Server 2000 SP4 CD 上或从自解压缩 Service Pack 4 下载文件 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 将文件解压缩到的文件夹中，其中 LLL 因语言而异。
2. 运行 InstMsi20.exe。
3. 根据提示重新启动计算机。

[返回页首]

##### 应用程序要求

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

[返回页首]

## 1.2 升级到 MSDE 2000 SP4 之前

本节描述在使用 MSDE 2000 SP4 将现有的 MSDE 实例升级到 MSDE 2000 SP4 之前，必须解决的问题以及必须执行的任务。

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

[返回页首]

### 1.2.1 确定是否可以将 MSDE 2000 SP4 应用于现有的 MSDE 2000 实例

将 MSDE 2000 SP4 应用于现有的 MSDE 2000 实例的过程因安装实例的方式而异。大多数应用程序通过下列方式之一安装 MSDE 2000：

- 运行 MSDE 2000 安装程序。可以使用 MSDE 2000 SP4 文件将通过这种方式安装的 MSDE 2000 实例升级到 SP4。MSDE 2000 安装实用工具可以从命令提示符运行，也可以通过应用程序的安装实用工具调用。
- 直接利用 MSDE 2000 合并模块。如果应用程序的安装实用工具使用 Windows 安装程序技术，则可以使用此安装方法。使用 MSDE 2000 SP4 文件无法升级通过这种方式安装的 MSDE 2000 实例。要进行升级，必须向应用程序供应商索取修补程序文件。MSDE 2000 SP4 提供合并模块以支持使用合并模块的现有应用程序。

  说明 新应用程序的安装实用工具必须编写为调用 MSDE 2000 安装实用工具，而不是直接使用 MSDE 2000 合并模块。MSDE 2000 SP4 包含合并模块。但是，只有应用程序供应商才可以使用这些合并模块，这些供应商必须为最初通过直接利用合并模块的实用工具安装的 MSDE 实例构建修补程序文件。

如果计算机上有多个 MSDE 2000 实例，则必须逐个评估每个实例，以便确定是否可以应用 MSDE 2000 SP4。还必须对每个实例分别应用 SP4。

说明 Microsoft 不支持在一台计算机上配置 16 个以上的 SQL Server 数据库引擎实例。包括以下实例：SQL Server 6.5、SQL Server 7.0、SQL Server 2000、MSDE 1.0 和 MSDE 2000。

Microsoft 知识库文章 311762 包含确定 MSDE 2000 实例安装方式的说明。按照文章 311762 中的过程进行操作之后，应注意以下事项：

- 如果信息表明实例是使用 MSDE 2000 安装程序文件 SqlRun01.msi 到 SqlRun16.msi 安装的，则可以使用 SQL Server 2000 SP4 下载文件升级 MSDE 2000 实例。
- 如果信息表明实例是通过 Microsoft 应用程序安装的，请参见此 Microsoft 网站上有关升级该 MSDE 2000 实例的说明。
- 知识库文章 311762 将指导您读取注册表项中 ProductCode 字段的值，并在已知值表中查找该值。如果注册表项中的值未在文章 311762 中列出，则表示实例是通过应用程序的安装实用工具安装的。不能使用 SQL Server 2000 SP4 的下载文件将 SP4 应用于此类 MSDE 实例。而是必须从编写应用程序的公司获取修补程序文件。如果编写应用程序的公司不是 Microsoft，必须向相应公司索取修补程序文件。如果编写应用程序的公司是 Microsoft，请参见以下网页，其中列出了 Microsoft 开发的 MSDE 应用程序（此页使用如何升级这些 MSDE 2000 实例的信息不断更新）：Microsoft MSDE 应用程序网页
- 如果文章 311762 指明 ProductCode 值的原始包名称为 Sample.msi 或 SampleUpg.msi，请参见知识库文章 314131，查看如何为此 MSDE 2000 实例构建修补程序的说明。

[返回页首]

### 1.2.2 确定是否必须使用原始 MSDE 2000 安装文件

可以从硬盘、网络共享位置或 CD-ROM 运行 MSDE 2000 SP4 安装程序。如果从硬盘运行安装程序，则不必使用原始 MSDE 2000 安装文件。但是如果从网络共享位置或 CD 将 MSDE 2000 实例升级到 MSDE 2000 SP4，则最初用于安装 MSDE 2000 的文件必须在原始安装时文件所处的位置。如果最初是从 CD 进行的安装，则 MSDE 2000 SP4 安装程序在升级过程中将要求插入原始 CD。如果原始文件不在原始的网络共享位置，或者原始 CD-ROM 不可用，则必须将 MSDE 2000 SP4 文件复制到硬盘驱动器中，然后从硬盘驱动器中运行安装程序。

[返回页首]

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

MSDE 2000 SP4 安装程序升级作为复制拓扑成员的用户数据库。此升级因素可能会影响复制的用户数据库的备份和还原功能。在安装 MSDE 2000 SP4 之前，确保复制数据库和文件组是可写的。

有关将 SP4 应用于复制拓扑中的数据库的更多信息，请参见 3.4 在复制服务器上安装 MSDE 2000。复制的其他备份和还原注意事项在 5.2.4 合并复制的备份和还原问题中详细描述。

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

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

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

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

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

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

[返回页首]

### 1.2.4 确定如何删除 MSDE 2000 SP4

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

重要 要将系统安全地还原到安装 MSDE 2000 SP4 之前的状态，必须立即备份 master、model 和 msdb 数据库，然后再安装 MSDE 2000 SP4。有关更多信息，请参见 3.1.1 备份 SQL Server 数据库。

有关更多信息，请参见 3.7 卸载 MSDE 2000 SP4。

[返回页首]

## 1.3 MSDE 2000 SP4 的安全注意事项

在 SP3a 中更改了 MSDE 2000 安装程序的行为，以使默认设置的配置更安全。这些更改在 SP4 中继续生效，如下所述：

- 默认情况下禁用网络支持

  默认情况下，在安装新的 MSDE 2000 实例时，SP4 禁用网络支持。升级现有实例时，将保留其网络支持设置。如果另一台计算机上没有任何应用程序连接到您的 MSDE 2000 实例，则实例不需要网络支持。最好关闭不使用的资源。如果将 DISABLENETWORKPROTOCOLS 安装参数的值指定为 0，则可以在安装过程中启用网络支持。如果安装 MSDE 2000 SP4 实例时启用了网络支持功能，稍后可以重新配置此实例来禁用网络支持。有关如何禁用和还原网络访问的更多信息，请参见 Microsoft 知识库文章 814130。

- 安装程序要求使用强 sa 密码

  如果不指定强 sa 密码，MSDE 2000 SP4 安装程序不会安装新的 MSDE 2000 实例。可以使用 SAPWD 参数指定强 sa 密码。如果不为 sa 登录指定一个强密码，MSDE 2000 SP4 安装程序不会升级现有的 MSDE 2000 实例。除非使用 MSDE 实例的应用程序在某些方面依赖空的 sa 密码，否则，即使是升级现有的实例，也必须为 sa 登录指定一个强密码。即使 MSDE 2000 实例使用的是 Windows 身份验证，sa 登录也会在实例切换到混合模式身份验证时立即被激活。空、空白、简单或者众所周知的 sa 密码可能很容易被利用来进行未经授权的访问。如果在将 MSDE 2000 实例升级到 MSDE 2000 SP4 之前需要指定一个强 sa 密码，请参见 Microsoft 知识库文章 322336。

- Windows 身份验证

  为了提高安全性，只要有可能，请对 MSDE 2000 安装使用 Windows 身份验证。如果下列两个条件都为真，可以考虑从混合模式身份验证切换到 Windows 身份验证：

  - 如果选中了“Windows 身份认证”选项，则可以运行使用 MSDE 2000 的应用程序。
  - 已经为所有需要连接到该实例的用户定义了 Windows 身份验证登录。有关如何添加登录的更多信息，请参见 SQL Server 2000 联机丛书中的“添加 Windows 用户或组”。

  有关将 MSDE 2000 实例从混合模式身份验证更改为 Windows 身份验证的更多信息，请参见 Microsoft 知识库文章 322336。

[返回页首]

## 1.4 确定实例名称

如果要在一台计算机上安装 MSDE 2000 和 SQL Server 2000 数据库引擎的多个副本（即实例），必须知道实例名称。一台计算机上最多可以安装 16 个实例。其中一个实例没有名称，被称为默认实例。其他 15 个实例必须具有唯一的实例名称，被称为命名实例。

使用 MSDE SP4 安装程序安装或升级 MSDE 实例。如果要安装或升级 MSDE 的命名实例，必须使用 INSTANCENAME 参数来指定实例名称。如果不指定 INSTANCENAME，安装程序将对该计算机上默认的 MSDE 实例操作。不能使用 MSDE 2000 SP4 升级 SQL Server 2000 数据库引擎实例。

查找计算机上的现有实例：

1. 在 Windows 资源管理器中，右键单击“我的电脑”，然后单击“管理”。
2. 展开“服务和应用程序”。
3. 单击“服务”。

默认实例将作为名为 MSSQLSERVER 的一项服务出现在右侧列表窗格中。命名实例将作为 MSSQL$InstanceName 服务列出，其中 InstanceName 是实例的名称。

实例名称必须遵循此 Microsoft 网页中包含的规则。

[返回页首]

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

MSDE 2000 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。

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

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

MSDE 2000 SP4 安装 MDAC 2.8 SP1 时，MDAC 的语言版本与 MSDE 2000 SP4 的语言版本相同。如果要保留与 MSDE 2000 SP4 不同的 MDAC 语言版本，则必须下载并安装相应的 MDAC 2.8 SP1 语言版本，然后再运行 MSDE 2000 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 中包含的修复程序。

MSDE 2000 支持的所有 Windows 版本包括与 MSDE 2000 SP4 配合使用的 MDAC 软件的版本。如果将 MSDE 2000 实例配置为支持网络通信并充当数据库服务器，那么不需要在任何 Windows 计算机上安装客户端软件，即可使应用程序从该计算机连接到 MSDE 2000 实例。有关网络通信的更多信息，请参见此 Microsoft 网页。

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

[返回页首]

## 1.6 确定 MSDE 2000 的当前版本

在运行安装程序之前，应先确定要升级的 MSDE 2000 实例的版本。如果 MSDE 2000 的版本已达到或高于 SP4，则不需要安装 SP4。

确定所安装的 MSDE 2000 版本：

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

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

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

3. （可选）如果无法确定安装的版本是 SQL Server 2000 数据库引擎还是 MSDE 2000，请使用 isql、osql 或查询分析器对不确定的实例执行以下查询。

   `SELECT SERVERPROPERTY('Edition')`

   如果返回值 Desktop Engine，表示实例为 MSDE 2000。

[返回页首]

## 1.7 有关 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.7 可维护性增强功能。

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

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

- SP4 解决了一些客户在 SQL Server 2000 SP3 中安装 Microsoft 数据访问组件 (MDAC) 时遇到的安装问题。
- 如果将 MSDE 2000 SP4 或 SP3a 的某个实例配置为不支持网络连接，则该实例也将停止使用 UDP 端口 1434。

##### SQL Server CE 和 SQL Mobile 服务器工具更新

对于已升级或计划将 SQL Server 2000 数据库和发布服务器升级到 SP4 的 Microsoft SQL Server 2000 Windows® CE Edition (SQL Server CE) and 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 版本的依赖性。MSDE 2000 SP4 安装内部版本的 MSXML 技术，可以向后兼容 MSXML 2.6。

[返回页首]

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

SQL Server 2000 联机丛书是 MSDE 2000 的主要用户文档。联机丛书会使用修复程序和新的信息定期更新。在 2004 年 1 月，联机丛书进行了更新，包括了有关 MSDE 2000 的更多信息。强烈建议您下载并安装最新版本的联机丛书，原因如下：

- MSDE 2000 安装文档进行了更新，以反映 SQL Server 2000 SP3 和 SP3a 中引入的更改。安装文档中有关 MSDE 2000 安装程序 SP4 版本的内容也是最新的，SAVESYSDB 参数除外，该参数是在 SP4 中引入的。有关更多信息，请参见 5.6.1 MSDE 2000 安装程序的新参数 SAVESYSDB。
- 其中描述了 osql 实用工具的用法。本资料主要针对 MSDE 2000 的新客户。
- 新增了一节来说明 SQL Server 2000 联机丛书中哪些部分适用于 MSDE 2000。
- 对 MSDE 2000 工作负荷调控器的描述已更新。
- 针对 MSDE 2000 的主题已编制索引，以便随 MSDE 2000 一起出现。所有这些主题还包含字符串 MSDE 2000，以便在搜索 MSDE 2000 资料时出现。

当前版本的联机丛书位于下列位置：

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

[返回页首]

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

可以从此 Microsoft 网站获取针对 SQL Server 2000 SP3 和 SP3a 更新过的 SQL Server 2000 数据库引擎示例。 引用了 MSDE 2000 中所包括的 SQL Server 2000 组件的所有示例同样适用于 MSDE 2000，但 MSDE 2000 中不支持的功能除外。包括的功能有数据库引擎、数据库客户端连接组件和程序设计 API、复制以及数据转换服务 (DTS)。

[返回页首]

# 2.0 可以找到并下载 SQL Server 2000 SP4 的位置

在准备下载并解压缩 SQL Server 2000 SP4 之前，请先阅读本节后面的“下载和解压缩阶段准则”。SQL Server 2000 SP4 通过下列方式分发：

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

  如果有 SQL Server 2000 SP4 光盘，可以直接通过该光盘，使用自解压缩文件 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 将 MSDE 2000 实例升级到 MSDE 2000 SP4。

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

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

从下载网站或 SP4 光盘获取了 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 之后，可以运行该文件，将 MSDE 2000 SP4 文件解压缩到计算机上。SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 会在硬盘上创建一组文件夹和文件，可以用于安装 MSDE 2000 SP4。

[返回页首]

## 2.1 选择正确的语言

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

说明 因为葡萄牙语（巴西）、瑞典语和荷兰语版本的 SQL Server 2000 只包含 SQL Server 2000 Desktop Engine，所以为这些语言提供的 Service Pack 中只包含 MSDE 2000 SP4。对于这些语言，不能通过 Database Components SP4 或 Analysis Services SP4 升级 SQL Server 2000 组件。

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

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

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion

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

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

    其中，InstanceName 是实例的名称。

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

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

[返回页首]

## 2.2 下载 MSDE 2000 SP4

如果 MSDE 2000 实例是使用 MSDE 安装实用工具安装的，则可以使用 SQL Server 2000 SP4 下载文件升级 MSDE 2000 实例。安装实用工具的原始包名称为 SqlRun01.msi 到 SqlRun16.msi。

下载 MSDE 2000 SP4：

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

[返回页首]

## 2.3 解压缩 MSDE 2000 SP4 文件

必须先从 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 解压缩安装文件，然后才可以安装 MSDE 2000 SP4。可以直接从 SP4 光盘执行 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe，也可以从将该文件下载到的文件夹或将该文件从光盘复制到的文件夹执行该文件。

解压缩 MSDE 2000 SP4 文件：

- 打开 Windows 资源管理器并浏览到包含 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 的文件夹。
- 双击下载的文件，以便解压缩 MSDE 2000 SP4 文件。按照系统要求，指定要将 SP4 文件解压缩到的文件夹。

[返回页首]

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

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

- 在运行 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 将 SP4 文件置于某个文件夹时，确保可用空间大约是该可执行文件大小的三倍，以便解压缩并存储 Service Pack 安装文件。必须拥有足够的空间来存储自解压缩文件和解压缩后的 Service Pack 文件，并拥有足够的临时工作空间来存储自解压缩程序。
- 在运行自解压缩文件 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 时，文件会提示您输入要将 Service Pack 文件保存到的文件夹的名称。

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

- 解压缩组件之后，可以重命名或移动该文件夹。但是，请确保文件夹路径名不包含空格。
- 可以将全部四个 SP4 自解压缩文件下载并解压缩到同一个目标文件夹，以便建立一个位置，从该位置安装 SQL Server 2000 SP4 的每个部分。四个自解压缩文件不会相互覆盖，也不会相互干扰。

[返回页首]

# 3.0 安装 Service Pack

要安装 MSDE 2000 SP4，请遵循以下各节中的安装说明。在安装 MSDE 2000 SP4 之前，请查阅 1.0 简介中的资料。MSDE 2000 SP4 的安装阶段如下：

1. 准备安装 MSDE 2000 SP4
2. 通过运行 MSDE 2000 SP4 安装 Service Pack
3. 重新启动服务和应用程序

MSDE 2000 SP4 包含安装或升级 SQL Server 2000 Desktop Engine 实例所需的一整套文件。如果具有安装或升级 MSDE 2000 实例的许可证，您可以使用 MSDE 2000 SP4 中的文件执行所有 MSDE 2000 安装操作。有关 MSDE 2000 许可的更多信息，请参见此 Microsoft 网站。

如果需要有关运行安装程序的更多信息，请参见主要文档源 SQL Server 2000 联机丛书。有关安装最新版本的 SQL Server 2000 联机丛书或访问 MSDN Library 中的联机副本的更多信息，请参见 1.8 SQL Server 2000 联机丛书更新已可用。

以下是指向 MSDN Library 的联机丛书副本中安装程序可执行文件参考主题的链接：Customizing Desktop Engine Setup.exe（自定义 Desktop Engine Setup.exe）。

在最新版本的 SQL Server 2000 联机丛书中，“Customizing Desktop Engine Setup.exe”（自定义 Desktop Engine Setup.exe）介绍了 Desktop Engine SP3a 和 MSDE 2000 Release A 中包含的安装程序可执行文件版本的功能。文档中有关 Desktop Engine 安装程序 SP4 版本的内容也是最新的，SAVESYSDB 参数除外，该参数在 SP4 中引入。有关更多信息，请参见 5.6.1 MSDE 2000 安装程序的新参数 SAVESYSDB。

说明 在 SQL Server 2000 SP3 之前的 MSDE 安装程序版本中，用户必须指定用于安装或升级 MSDE 2000 实例的 .msi 安装包文件。在 SP3 以及更高版本的安装程序中，由安装程序管理 .msi 文件，不需要用户在升级或新安装中指定 .msi 文件。

[返回页首]

## 3.1 准备安装 MSDE 2000 SP4

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

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

### 3.1.1 备份 SQL Server 数据库

在安装 MSDE 2000 SP4 之前，需要备份 master、msdb 和 model 数据库。安装 MSDE 2000 SP4 时将修改 master、msdb 和 model 数据库，会使其与 SP4 之前的 MSDE 2000 版本不兼容。如果决定重新安装没有 SP4 的 MSDE 2000，必须备份这些数据库。

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

现有备份方案考虑到了复制，因此，在升级到 SP4 之后，可以在出现故障后将数据库还原到某个已知点。建议在应用 SP4 之后，为复制拓扑中包含的所有用户数据库创建日志备份或完整的数据库备份。如果执行了上述数据库备份，之后某个复制数据库出现故障，则还原数据库以后不必重新应用 SP4。

[返回页首]

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

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

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

要确认是否已在 MSDE 2000 中选中了“自动增长”选项，请使用 osql 命令提示符实用工具执行下列 SQL 语句：

- `sp_helpdb master`
- `sp_helpdb msdb`

在这些语句的输出结果中，确认增长列的值不为 0。

[返回页首]

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

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

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

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

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

[返回页首]

## 3.2 运行 MSDE 2000 SP4 安装程序

本节包括运行 MSDE 2000 SP4 安装实用工具的一般准则。之后，本节还提供最常见 MSDE 2000 SP4 方案的示例：

- 3.2.2 将现有的 MSDE 2000 实例升级到 SP4
- 3.2.3 安装新的 MSDE 2000 SP4 实例
- 3.2.4 将 MSDE 1.0 升级到 MSDE 2000 SP4

要安装 MSDE 2000 SP4，请从下列任一位置运行 Setup.exe：

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

这将启动安装过程。

MSDE 2000 SP4 中包含的安装程序可执行文件是 MSDE 2000 的 Desktop Engine 安装程序的 SP4 版本。除了 SAVESYSDB 参数之外，MSDE 2000 SP4 安装程序的操作均在最新版本的 SQL Server 2000 联机丛书中有所描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.8 SQL Server 2000 联机丛书更新已可用。以下是描述 Setup.exe 行为的英语版参考主题：Customizing Desktop Engine Setup.exe（自定义 Desktop Engine Setup.exe）。

[返回页首]

### 3.2.1 运行安装程序的一般准则

MSDE 2000 SP4 被设计为可以随应用程序一起分发并通过应用程序安装程序来安装。MSDE 2000 没有交互式安装程序。MSDE 2000 的安装机制被设计为由应用程序的安装实用工具来调用。应用程序安装程序处理所有与最终用户的必需交互。MSDE 2000 有两种安装机制：

- 命令提示符安装实用工具 (Setup.exe)。此安装实用工具通常由应用程序的安装实用工具来调用，但也可以从命令提示符窗口来运行。MSDE 2000 安装实用工具没有可由用户来控制该实用工具的行为的图形用户界面。但它可以接受一组参数，这些参数定义了该实用工具执行的操作。

  重要 一定要通过运行 Setup.exe 来安装或升级 MSDE 实例。不要试图通过 .msi 文件间接启动安装程序；例如，不要双击某个 MSDE 2000 .msi 文件。

- 一定要使用 /L*v 开关生成安装程序日志输出文件。
- 一组 Windows 安装程序合并模块。编写基于 Windows 安装程序的安装实用工具的开发人员可以对应用程序的安装程序进行编程，以便通过使用 MSDE 2000 合并模块来安装 MSDE 2000 实例。开发人员可以通过指定与 MSDE 2000 安装实用工具参数相对应的安装包属性来控制已安装实例的配置。

[返回页首]

##### 安装参数

必须通过从命令提示符运行 Setup.exe 来安装或升级任意 MSDE 实例。用户可通过指定参数来控制 MSDE 2000 安装程序的行为。安装参数可通过下列两种方式指定：

- 在命令提示符处。
- 在安装实用工具将读取的 .ini 文件中。

如果指定的 MSDE 安装参数值中包含特殊字符（如空格），则必须将该值放在引号中。如果没有特殊字符，则引号是可选的。

第 3.2.2、3.2.3 和 3.2.4 节提供了最常见的 MSDE 2000 SP4 安装方案使用的参数示例。可以为安装程序指定的参数在最新版本的 SQL Server 2000 联机丛书中有所描述。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.8 SQL Server 2000 联机丛书更新已可用。以下是描述 Setup.exe 行为的英语版参考主题：Customizing Desktop Engine Setup.exe（自定义 Desktop Engine Setup.exe）。

说明 如果使用终端服务连接尝试将现有的 MSDE 实例升级到 MSDE 2000 SP4，或者安装新的 MSDE 2000 SP4 实例，可能会出现问题。如果遇到问题，请从本地计算机重新启动安装程序。

[返回页首]

##### 使用 .ini 文件

可以在 .ini 文件中指定 MSDE 2000 Setup.exe 参数，.ini 文件的位置由 /settings 开关指定。.ini 文件是一个文本文件，如使用记事本创建并使用扩展名 .ini 保存的文件。.ini 文件中的第一行是 [Options]。您可以在后面指定参数，每行指定一个参数。

安全说明 如果安装时使用 .ini 文件，请不要将安全凭据存储在该文件中。

下例说明了如何在命令提示符处指定参数：

    setup SAPWD="AStrongPassword" INSTANCENAME="InstanceName"
    TARGETDIR="C:\MyInstanceFolder"

要使用 .ini 文件中的相同参数运行安装程序，请使用记事本创建一个名为 `MyParameters.ini` 的文件，其内容如下：

    [Options]
    INSTANCENAME="InstanceName"
    TARGETDIR="C:\MyInstanceFolder"

然后在运行安装程序时，使用 /settings 开关指向该 .ini 文件：

    setup /settings "MyParameters.ini" SAPWD="AStrongPassword"

[返回页首]

##### 请求安装程序日志

使用详细日志来验证 N 安装是否成功，或者帮助解决出现的问题。

要生成详细日志，请指定 /L*v <LogFileName>，其中 <LogFileName> 是安装程序用于记录所有操作的日志文件的名称。如果指定名称时没有包含路径，将在当前文件夹中创建日志文件。如果是从 CD-ROM 执行安装程序，则必须指定指向硬盘上某个文件夹的完整路径。

下例将在 C: 驱动器的根文件夹中创建一个名为 MSDELog.log 的日志文件：

    setup SAPWD="AStrongSAPassword" /L*v C:\MSDELog.log

如果安装成功，在日志末尾将显示如下所示的条目：

    === Logging stopped: 5/16/03  0:06:10 ===
    MSI (s) (BC:7C): Product: Microsoft SQL Server Desktop Engine
     -- Installation operation completed successfully.

如果安装失败，在日志末尾将显示如下所示的条目：

    === Logging stopped: 5/15/03  23:50:34 ===
    MSI (c) (6A:CE): Product: Microsoft SQL Server Desktop Engine
     -- Installation operation failed.

如果安装失败，请在错误日志中搜索字符串“`value 3"`。该字符串的后 10 行是有关自定义操作的故障通知。该通知中包含有关故障性质的附加信息。

[返回页首]

### 3.2.2 将现有的 MSDE 2000 实例升级到 MSDE 2000 SP4

本节中的示例描述如何将现有的 MSDE 2000 实例升级到 MSDE 2000 SP4 以及如何对该 MSDE 2000 实例禁用网络连接。如果该实例必须接受其他计算机上运行的应用程序所请求的连接，请不要指定 DISABLENETWORKPROTOCOLS 参数。

本节中的示例假定 sa 登录有一个强密码。有关 sa 登录密码的更多信息，请参见 1.3 MSDE 2000 SP4 的安全注意事项。

将现有的 MSDE 2000 实例升级到 MSDE 2000 SP4

1. 打开命令提示符窗口。
2. 在命令提示符处，使用 cd 命令导航至包含 MSDE 2000 SP4 安装实用工具的文件夹：

       cd c:\MSDESP4Folder\MSDE

   其中 c:\MSDESP4Folder 是一个路径，它指向将 MSDE 2000 SP4 文件解压缩到的文件夹或者 SQL Server 2000 SP4 光盘上的 MSDE 2000 SP4 文件夹。

3. 执行下列命令之一：
   - 对于使用 Windows 身份验证并且禁用了网络协议的默认实例，执行：

         setup /upgradesp sqlrun /L*v C:\MSDELog.log

   - 对于使用 Windows 身份验证并且启用了网络协议的默认实例，执行：

         setup /upgradesp sqlrun DISABLENETWORKPROTOCOLS=0 /L*v C:\MSDELog.log

   - 对于使用 Windows 身份验证并且禁用了网络协议的命名实例，执行：

         setup /upgradesp sqlrun INSTANCENAME=InstanceName /L*v C:\MSDELog.log

   - 对于使用混合模式身份验证并且禁用了网络协议的默认实例（其中，AnAdminLogin 是 sysadmin 固定服务器角色的成员），执行：

         setup /upgradesp sqlrun SECURITYMODE=SQL UPGRADEUSER=AnAdminLogin
         UPGRADEPWD=AdminPassword /L*v C:\MSDELog.log

   - 对于使用混合模式身份验证并且禁用了网络协议的命名实例（其中，AnAdminLogin 是 sysadmin 固定服务器角色的成员），执行：

         setup /upgradesp sqlrun INSTANCENAME= InstanceName SECURITYMODE=SQL
         UPGRADEUSER=AnAdminLogin UPGRADEPWD=AdminPassword /L*v C:\MSDELog.log

   为了便于阅读，在这些示例中加入了换行符。执行的命令不能包括换行符。

   说明 如果所升级的 MSDE 2000 实例是以前使用早期的 SQL Server 2000 Service Pack 从 MSDE 1.0 升级而来的，必须还要在安装命令中追加 `UPGRADE=1`。

   安全说明 如果安装时使用 .ini 文件，请不要将凭据存储在该 .ini 文件中。

[返回页首]

### 3.2.3 安装新的 MSDE 2000 SP4 实例

本节中的示例描述如何安装已配置为禁用网络连接（默认行为）的新 MSDE 2000 SP4 实例。如果该实例必须接受在其他计算机上运行的应用程序请求的连接，必须还要指定 `DISABLENETWORKPROTOCOLS=0`。

以下示例使用所有配置项（如排序规则和文件位置）的默认设置安装实例。这些配置可以由安装参数（如 COLLATION、DATADIR 和 TARGETDIR）来控制。有关在安装时可以指定的配置参数的更多信息，请参见 Customizing Desktop Engine Setup.exe（自定义 Desktop Engine Setup.exe）。

安装新的 Desktop Engine 实例

1. 打开命令提示符窗口。
2. 在命令提示符处，使用 cd 命令导航至包含 MSDE 2000 SP4 安装实用工具的文件夹：

       cd c:\MSDESP4Folder\MSDE

   其中 c:\MSDESP4Folder 是一个路径，它指向将 MSDE 2000 SP4 文件解压缩到的文件夹或者 SQL Server 2000 SP4 光盘上的 MSDE 2000 SP4 文件夹。

3. 执行下列命令之一：
   - 要安装被配置为使用 Windows 身份验证的默认实例，请执行：

         setup SAPWD="AStrongSAPwd" /L*v C:\MSDELog.log

     其中，AStrongSAPwd 是为 sa 登录指定的强密码。

   - 要安装被配置为使用 Windows 身份验证的命名实例，请执行：

         setup INSTANCENAME="InstanceName" SAPWD="AStrongSAPwd"
         /L*v C:\MSDELog.log

     其中，AStrongSAPwd 是为 sa 登录指定的强密码，InstanceName 是为该实例指定的名称。

   - 要安装被配置为使用混合模式身份验证的默认实例，请执行：

         setup SAPWD="AStrongSAPwd" SECURITYMODE=SQL
         /L*v C:\MSDELog.log

     其中，AStrongSAPwd 是为 sa 登录指定的强密码。

   - 要安装被配置为使用混合模式身份验证的命名实例，请执行：

         setup INSTANCENAME="InstanceName" SECURITYMODE=SQL
         SAPWD="AStrongSAPwd" /L*v C:\MSDELog.log

     其中，AStrongSAPwd 是为 sa 登录指定的强密码，InstanceName 是为该实例指定的名称。

重要 如果安装时使用 .ini 文件，请不要将凭据存储在该 .ini 文件中。

重要 即使实例被配置为使用 Windows 身份验证，也请始终为 sa 登录指定一个强密码。

[返回页首]

### 3.2.4 将 MSDE 1.0 升级到 MSDE 2000 SP4

本节中的示例描述如何将现有的 MSDE 1.0 实例升级到 MSDE 2000 SP4，并且禁用该实例的网络连接。如果该实例必须接受在其他计算机上运行的应用程序请求的连接，请不要指定 DISABLENETWORKPROTOCOLS 参数。

MSDE 1.0 与 MSDE 2000 的默认实例的运行方式相同，且总是升级为 MSDE 2000 默认实例。

说明 复制拓扑中的 MSDE 1.0 实例无法升级到 MSDE 2000 SP4。

将 MSDE 1.0 实例升级到 MSDE 2000 SP4

1. 打开命令提示符窗口。
2. 在命令提示符处，使用 cd 命令导航至包含 MSDE 2000 SP4 安装实用工具的文件夹：

       cd c:\MSDESP4Folder\MSDE

   其中 c:\MSDESP4Folder 是一个路径，它指向将 MSDE 2000 SP4 文件解压缩到的文件夹或者 SQL Server 2000 SP4 光盘上的 MSDE 2000 SP4 文件夹。

3. 执行下列命令之一：
   - 如果从使用 Windows 身份验证的 MSDE 1.0 实例升级，请执行：

         setup UPGRADE=1 DISABLENETWORKPROTOCOLS=1
         /L*v C:\MSDELog.log

   - 如果从使用混合模式身份验证的 MSDE 1.0 实例升级（其中，AnAdminLogin 是 sysadmin 固定服务器角色的成员），请执行：

         setup UPGRADE=1 SECURITYMODE=SQL UPGRADEUSER=AnAdminLogin
         UPGRADEPWD=AdminPassword DISABLENETWORKPROTOCOLS=1
         /L*v C:\MSDELog.log

重要 如果安装时使用 .ini 文件，请不要将凭据存储在该 .ini 文件中。

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

说明 如果使用 `BLANKSAPWD=1`，则不必指定 `SECURITYMODE=SQL` 或 `UPGRADEUSER` 与 `UPGRADEPWD`。

[返回页首]

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

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

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

此时，对升级后的 master 和 msdb 数据库进行备份也是明智的。

[返回页首]

## 3.4 在复制服务器上安装 MSDE 2000 SP4

以下信息仅适用于作为合并复制拓扑一部分的现有 MSDE 2000 实例。

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

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

- 如果要使用合并复制，而分发服务器位于另一台计算机或数据库实例（远程分发服务器）上，则必须在应用 SP4 之后生成一个新快照。
- 不能将复制拓扑中的 MSDE 1.0 实例升级到 MSDE 2000 SP4。

[返回页首]

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

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

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

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

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

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

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

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

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

[返回页首]

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

以下信息仅适用于作为合并复制拓扑一部分的 MSDE 2000 实例。

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

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

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

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

对只读数据库应用 MSDE 2000 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 联机丛书中的“ALTER DATABASE”参考主题。有关重新应用 SP4 的更多信息，请参见 3.8 重新应用 MSDE 2000 SP4。

[返回页首]

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

将 MSDE 2000 实例升级到 MSDE 2000 SP4 时，可能需要验证某些系统存储过程在其他 SQL Server 或 MSDE 实例中是否已更新。

MSDE 2000 SP4 包括将 Microsoft 数据访问组件 (MDAC) 升级到 MDAC 2.8 SP1。MDAC 2.8 SP1 包括对 SQLOLEDB 提供程序和 SQL Server ODBC 驱动程序的更新。有关更多信息，请参见 1.5 验证 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 实例中的目录存储过程。

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

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

升级选中了“Windows 身份验证”选项的 MSDE 2000 实例上的目录存储过程

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

         osql -E -SComputerName -ilocation\instcat.sql

   - 对于命名实例，执行：

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

升级选中了“混合模式身份验证”选项的 MSDE 2000 实例上的目录存储过程：

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.7 卸载 MSDE 2000 SP4

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

还原到安装 SP4 之前的 MSDE 2000 版本

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

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

   说明 还原到安装 SP4 之前的 MSDE 2000 版本时，不会卸载 MDAC 更新。有关更多信息，请参见 1.5 验证 Microsoft 数据访问组件的版本。

[返回页首]

## 3.8 重新应用 MSDE 2000 SP4

如果使最初应用 SP4 时属于复制拓扑的只读数据库或文件组可写，必须重新应用 MSDE 2000 SP4。

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

[返回页首]

# 4.0 其他安装信息

本节描述 Service Pack 安装的其他注意事项。

## 4.1 再分发 MSDE 2000 SP4

如果应用程序供应商具有分发 MSDE 2000 的许可证，MSDE 2000 SP4 将包含随该应用程序再分发 MSDE 2000 所需的所有文件。可以按照最新版本的 SQL Server 2000 联机丛书中所述分发 MSDE 2000 SP4 文件。还可以在此 Microsoft 网站上注册，获得再分发 MSDE 2000 的权利。

有关安装最新版本的 SQL Server 2000 联机丛书的更多信息，请参见 1.8 SQL Server 2000 联机丛书更新已可用。

[返回页首]

##### 分发 MSDE 2000 SP4 修补程序

如果某个应用程序有基于 Windows 安装程序的安装实用工具，则该应用程序可以通过使用 MSDE 2000 合并模块来安装 MSDE 2000 实例。MSDE 2000 SP4 提供合并模块以支持使用合并模块的现有应用程序。新应用程序的安装实用工具必须编写为调用 MSDE 2000 安装实用工具，而不是直接使用 MSDE 2000 合并模块。

如果供应商选择使用 MSDE 2000 合并模块安装 MSDE 2000 实例，则他们必须为其客户提供以后所有的 MSDE 2000 修补程序。应用程序直接使用合并模块安装的 MSDE 2000 实例，使用 Windows 安装程序与应用程序关联的产品代码 GUID 进行标记。只有也包含该应用程序产品代码 GUID 的修补程序文件才能修补这些 MSDE 2000 实例。只有应用程序供应商开发的修补程序文件才会包含正确的产品代码。由 Microsoft 提供的 MSDE 2000 Service Pack 不能应用于这些实例。应用程序供应商必须使用 MSDE 2000 SP4 文件构建修补程序文件，并将这些修补程序文件分发给该供应商所有需要 SP4 中修复程序的 MSDE 客户。

有关如何创建修补程序文件包的更多信息，请参见 Windows 安装程序软件开发工具包 (SDK)，该工具包可以从 Microsoft 平台 SDK 网站下载。

如果应用程序的安装实用工具通过调用 MSDE 2000 安装程序来安装 MSDE 2000 实例，则 MSDE 2000 实例使用 MSDE 2000 产品代码 GUID 进行标记。客户可以使用标准的 MSDE 2000 Service Pack 文件来修补这些实例。应用程序供应商可以选择下列某个方法来分发 MSDE 2000 SP4：

- 指导客户从 SQL Server 2000 SP4 下载页或 SQL Server 2000 SP4 光盘安装 MSDE 2000 SP4。指导客户直接应用 SP4 的应用程序供应商必须提供针对其客户的特定说明。
- 有关 Microsoft 应用程序小组为其客户准备的 MSDE 2000 Service Pack 说明类型的示例，请参见此 Microsoft MSDE 应用程序网页。
- 下载 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 下载文件并将其随如何应用 Service Pack 的说明一起分发给客户。
- 使用 MSDE 2000 SP4 文件构建 Service Pack 应用程序实用工具，在由该应用程序安装的 MSDE 2000 实例上安装 SP4。

[返回页首]

## 4.2 MSDE 2000 SP4 文件位置

所有 MSDE SP4 安装文件和文件夹均位于 \MSDE 文件夹，该文件夹位于下列一个或多个位置：

- SQL Server 2000 SP4 CD-ROM。
- 包含从 SQL2000.MSDE-KB884525-SP4-x86-LLL.exe 解压缩的 Service Pack 文件的文件夹，其中 LLL 因语言而异。

\MSDE 文件夹中包含 Readmesql2k32desksp4.htm 文件、readme.txt 文件、license.txt 文件和安装实用工具的可执行文件。它还包含下列子文件夹：

- \Msi：包含安装 Windows 安装程序或升级版本低于 2.0.2600.0 的 Windows 安装程序所必需的可执行文件。
- \MSM：包含合并模块安装程序所必需的合并模块。
- \Setup：包含 MSDE 2000 安装程序安装新的 MSDE 2000 SP4 实例所必需的 .msi 安装包文件或将现有的 MSDE 2000 实例升级到 SP4 所必需的 .msp 修补程序包文件。\Setup 还包含 sqlrun.cab 压缩包文件，其中包含安装程序安装的文件。

有关如何使用 MSDE 合并模块的进一步说明，请参见 SQL Server 2000 联机丛书中的“使用 SQL Server Desktop Engine 合并模块”主题。

说明 新安装不支持合并模块。SP4 中提供的合并模块用于维护以前使用合并模块安装的 MSDE 2000 实例。

如果应用程序安装程序调用 MSDE 2000 安装程序，请构建一个具有以下结构和文件集的文件夹。文件夹 MSDEInstallFolder 代表示例文件夹名称：

MSDEInstallFolder

将以下文件从 MSDE 2000 SP4 \MSDE 文件夹复制到此位置：Setup.exe、Setup.ini、Setup.rll 和 sqlresld.dll。

MSDEInstallFolder\Msi

将 MSDE 2000 SP4 \MSDE\Msi 文件夹中的所有文件复制到此位置。

MSDEInstallFolder\Setup

将 MSDE 2000 SP4 \MSDE\Setup 文件夹中的所有文件复制到此位置。

然后可以执行 Setup.exe 以安装或升级为 MSDE 2000 SP4 实例。

说明 如果计算机上尚未安装 Windows 安装程序或者其版本低于支持的 MSDE 2000 SP4 安装程序版本，安装程序将使用 MSDEInstallFolder\Msi 文件夹中的文件来升级 Windows 安装程序。

[返回页首]

# 5.0 文档说明

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

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

[返回页首]

## 5.1 MSDE 2000 增强功能

下列增强功能适用于安装 Database Components SP4 的 MSDE 2000 实例。它们还适用于安装 MSDE 2000 SP4 的 MSDE 2000 Release A 实例。

[返回页首]

### 5.1.1 删除了散列组

在 SP1 中引入

散列组 (hash teams) 已删除。由于 MSDE 2000 中的某些增强功能，使用散列组已不能获得它们在 MSDE 1.0 中所提供的性能优势。而且，删除散列组使得 MSDE 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) 的系统配置为将 MSDE 2000 连接从某些网卡绑定到一个处理器或一组处理器。这一开关必须与 Affinity Mask 选项结合起来使用。有关更多信息，请参见知识库文章 299641。

[返回页首]

### 5.1.3 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.4 默认情况下禁用对 OLE DB 提供程序的特殊访问

在 SP3 中引入

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

[返回页首]

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

在 SP3 中引入

为了更有效地处理包含 LIKE 谓词的远程查询，在 SP3 中添加了 SqlServerLike 选项。在 MSDE 2000 SP3 或更高版本中，现在有两个选项可用来将 LIKE 运算发送到链接服务器。如果用于链接服务器的 OLE DB 提供程序支持 LIKE 运算符和通配符的 SQL Server 语法，则可以指定 SqlServerLike 选项，以便让 MSDE 2000 使用 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.6 分布式查询的扩展错误消息

在 SP3 中引入

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

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

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

SP3 之前的 MSDE 2000 版本会返回下列错误消息：

`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 或更高版本之后，MSDE 2000 返回下列错误消息：

`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.7 新函数 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.8 SQL Server 2000 联机丛书更新已可用。这是 fn_get_sql 的英语版参考主题。

[返回页首]

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

在 SP3 中引入

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

在安装 MSDE 2000 SP4 时，可以使用 ALLOWXDBCHAINING 安装参数为所有数据库启用跨数据库所有权链接。ALLOWXDBCHAINING 在最新版本的 SQL Server 2000 联机丛书的以下主题中描述：Customizing Desktop Engine Setup.exe（自定义 Desktop Engine Setup.exe）。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.8 SQL Server 2000 联机丛书更新已可用。

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

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

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

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

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

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

[返回页首]

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

在 SP3 中引入

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

[返回页首]

### 5.1.10 sp_changedbowner 的权限更改

在 SP3 中引入

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

[返回页首]

### 5.1.11 调试功能的更改

在 SP3 中引入

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

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

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

[返回页首]

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

在 SP3 中引入

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

[返回页首]

### 5.1.13 UDP 端口 1434 的操作

在 SP3a 中引入

从 MSDE 2000 SP3a 开始，如果 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 始终处于活动状态；它不能被启用或禁用。

还可以在安装或升级 MSDE 2000 实例时指定是否禁用服务器 Net-Library。使用 MSDE 2000 安装实用工具的 DISABLENETWORKPROTOCOLS 参数或 MSDE 2000 合并模块的 SqlDisableNetworkProtocols 属性。有关这些选项的更多信息，请参见最新版本的 SQL Server 2000 联机丛书中的以下主题：Customizing Desktop Engine Setup.exe（自定义 Desktop Engine Setup.exe）。有关安装最新版本的 SQL Server 2000 联机丛书的信息，请参见 1.8 SQL Server 2000 联机丛书更新已可用。

[返回页首]

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

在 SP4 中引入

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

[返回页首]

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

在 SP4 中引入

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

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

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

[返回页首]

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

在 SP4 中引入

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

[返回页首]

## 5.2 复制增强功能

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

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

在 SP1 中引入

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

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

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

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

[返回页首]

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

在 SP1 中引入

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

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

[返回页首]

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

在 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.4 合并复制的备份和还原问题

在 SP1 中引入

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

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

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

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

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

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

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

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

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

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

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

[返回页首]

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

在 SP1 中引入

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

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

[返回页首]

### 5.2.6 快照代理程序的新命令行参数 -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.7 合并复制使用新角色

在 SP3 中引入

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

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

[返回页首]

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

在 SP3 中引入

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

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

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

[返回页首]

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

在 SP3 中引入

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

[返回页首]

### 5.2.10 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.11 对 Windows 同步管理器支持的更改

在 SP3 中引入

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

[返回页首]

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

在 SP3 中引入

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

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

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

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

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

[返回页首]

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

在 SP4 中引入

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

[返回页首]

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

在 SP4 中引入

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

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

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

[返回页首]

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

在 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.16 在 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 SQL Server 代理权限检查

在 SP3 中引入

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

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

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

[返回页首]

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

在 SP3 中引入

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

[返回页首]

## 5.4 XML 增强功能

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

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

在 SP3 中引入

在应用 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.5 用于 C 语言的 DB-Library 和嵌入式 SQL

在 SP1 中引入，在 SP4 中更新

虽然 SQL Server 2000 和 MSDE 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。

[返回页首]

## 5.6 MSDE 2000 安装程序增强功能

以下主题描述 MSDE 2000 安装程序的增强功能。

### 5.6.1 MSDE 2000 安装程序的新参数 SAVESYSDB

在 SP4 中引入

MSDE 2000 SP4 为 MSDE 2000 安装程序引入了一个新参数 SAVESYSDB。SAVESYSDB 参数供在将使用合并模块或 MSI 文件安装的 MSDE 2000 实例升级到将来的 SQL Server 2005 Express Edition 版本时使用。SAVESYSDB 将与计划为将来的 SQL Server Express 版本引入的一项新功能组合使用。仅当通过在命令提示符处运行 MSDE 2000 安装程序来卸载实例时，SAVESYSDB 才有效。

默认情况下，在卸载 MSDE 2000 实例时，MSDE 2000 安装程序会删除 master、model 和 msdb 系统数据库的文件。如果指定 SAVESYSDB=1，则 MSDE 2000 安装程序会保留这些系统数据库的文件。

尽管可以随时指定 SAVESYSDB，但是只在与 /x 卸载开关一起使用时才会处理该参数。

    Setup /x sqlrun01.msi SAVESYSDB=1 INSTANCENAME="MyInstance"

如果没有指定 /x，将忽略 SAVESYSDB。如果同时指定了 SAVESYSDB 和 /x，SAVESYSDB 必须设置为 1，将其设置为任何其他值都会出错。

[返回页首]

## 5.7 可维护性增强功能

在 SP4 中引入

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

[返回页首]