安装 SQL Server 2000 概述

Microsoft® SQL Server™ 2000 安装程序创建新的 SQL Server 2000 安装或升级早期版本。在安装或升级到 SQL Server 2000 以前，建议您查阅下列主题。

主题 | 描述
准备安装 SQL Server 2000 | 列出运行 SQL Server 2000 安装程序之前要执行的步骤
SQL Server 2000：版本和组件 | 简要介绍 SQL Server 2000 的各种版本、安装选项和组件
升级现有的 SQL Server 安装 | 概述从 SQL Server 早期版本升级到 SQL Server 2000 的选项

有关更多信息，请参见下表中的相关主题。

若要安装 | 请参见
SQL Server 2000（包括关系数据库引擎的典型安装、客户端工具和客户端连接组件） | 如何安装 SQL Server 2000（安装程序）
仅安装 SQL Server 2000 客户端工具 （包括管理工具和客户端连接组件，不需要服务器） | 如何仅安装客户端工具（安装程序）
仅安装 SQL Server 2000 连接 （只安装客户端连接组件，不需要其它选项） | 如何只安装连接（安装程序）
SQL Server 2000 的命名实例或多个实例 | 如何安装 SQL Server 2000 的命名实例（安装程序）
用于故障转移群集的 SQL Server 2000 虚拟服务器 | 安装故障转移群集前的准备工作
Analysis Services | 安装 Analysis Services
English Query | 安装 English Query


准备安装 SQL Server 2000

安装 Microsoft® SQL Server™ 2000 之前，请考虑下列事项：

  • 确保计算机满足 Microsoft SQL Server 2000 的系统要求。有关更多信息，请参见 SQL Server 2000 的硬件和软件安装要求。

  • 如果在同一台计算机上安装 SQL Server 2000，则应备份 Microsoft SQL Server 的当前安装。

  • 如果安装故障转移群集，则在运行 SQL Server 安装程序之前禁用所有专用网卡上的 NetBIOS。有关更多信息，请参见安装故障转移群集前的准备工作。

  • 检查所有 SQL Server 安装选项，并准备在运行安装程序时做适当的选择。有关版本和组件的更多信息，请参见 SQL Server 2000：版本和组件。

  • 如果打算将 SQL Server 安装在默认文件位置以外的位置，请参见 SQL Server 2000 的文件路径。

  • 如果使用的操作系统的区域设置不是英语（美国），或者如果自定义字符集或排序次序设置，则查看与排序规则设置有关的主题。有关更多信息，请参见用于国际支持的排序规则选项。
运行 SQL Server 2000 安装程序前的准备工作

运行安装程序之前：

  • 如果要在运行 Microsoft Windows NT® 或 Micorsoft Windows® 2000 的计算机上安装 SQL Server 2000，并且希望 SQL Server 2000 与其它客户端和服务器通讯，则创建一个或多个域用户帐户。有关更多信息，请参见创建安全帐户。

  • 用具有本地管理权限的用户帐户登录到操作系统，或者给域用户帐户指派适当的权限。

  • 关闭所有和 SQL Server 相关的服务。包括所有使用 ODBC 的服务，如 Microsoft Internet Information 服务 (IIS)。

  • 关闭 Microsoft Windows NT 事件查看器和注册表查看器（Regedit.exe 或 Regedt32.exe）。


SQL Server 2000 的硬件和软件安装要求

下表列出了运行 Microsoft® SQL Server™ 2000 的硬件和软件的最低要求。

硬件要求

下表说明安装 Microsoft SQL Server 2000 或 SQL Server 客户端管理工具和库的硬件要求。

硬件 | 最低要求
计算机 | Intel® 或兼容机 Pentium 166 MHz 或更高。
内存 (RAM)1 | 企业版：至少 64 MB，建议 128 MB 或更多 标准版：至少 64 MB 个人版：Windows 2000 上至少 64 MB，其它所有操作系统上至少 32 MB 开发版：至少 64 MB Desktop Engine：Windows 2000 上至少 64 MB，其它所有操作系统上至少 32 MB
硬盘空间2 | SQL Server 数据库组件：95 到 270 MB，一般为 250 MB Analysis Services：至少 50 MB，一般为 130 MB English Query：80 MB 仅 Desktop Engine：44 MB
监视器 | VGA 或更高分辨率 SQL Server 图形工具要求 800x600 或更高分辨率
定位设备 | Microsoft 鼠标或兼容设备
CD-ROM 驱动器 | 需要

1 根据操作系统的要求，可能需要额外的内存。
2 实际的要求因系统配置和选择安装的应用程序和功能的不同而异。

说明 Microsoft SQL Server 2000 没有硬件兼容性列表 (HCL)。如果计算机满足上表所列的最低要求，则对于能够在 Microsoft Windows® 操作系统中使用的硬件，SQL Server 2000 软件即可运行。有关能够在 Windows 操作系统中使用的硬件的更多信息，请参见 Microsoft Windows 硬件兼容列表，该列表位于 Microsoft Web 站点。

操作系统要求

下表说明为使用 Microsoft SQL Server 2000 各种版本或组件而必须安装的操作系统。

SQL Server 版本或组件 | 操作系统要求
企业版 | Microsoft Windows NT Server 4.0、Microsoft Windows NT Server 4.0 企业版、Windows 2000 Server、Windows 2000 Advanced Server 和 Windows 2000 Data Center Server。 注意，SQL Server 2000 的某些功能要求 Microsoft Windows 2000 Server（任何版本）。
标准版 | Microsoft Windows NT Server 4.0、Windows 2000 Server、Microsoft Windows NT Server 企业版、Windows 2000 Advanced Server 和 Windows 2000 Data Center Server。
个人版 | Microsoft Windows Me、Windows 98、Windows NT Workstation 4.0、Windows 2000 Professional、Microsoft Windows NT Server 4.0、Windows 2000 Server 和所有更高级的 Windows 操作系统。
开发版 | Microsoft Windows NT Workstation 4.0、Windows 2000 Professional 和所有其它 Windows NT 和 Windows 2000 操作系统。
仅客户端工具 | Microsoft Windows NT 4.0、Windows 2000（所有版本）、Windows Me 和 Windows 98。
仅连接 | Microsoft Windows NT 4.0、Windows 2000（所有版本）、Windows Me、Windows 98 和 Windows 95。

说明 在 Microsoft Windows NT® Server 4.0 上，必须安装 Service Pack 5 (SP5) 或更高版本，这是 SQL Server 2000 所有版本的最低要求。

SQL Server 2000 在 Windows NT 4.0 终端服务器上不受支持。

在不带网卡的 Windows 98 计算机上安装 SQL Server 2000 个人版，需要 Windows 98 第二版。

Internet 要求

下表说明与使用 Microsoft SQL Server 2000 相关的 Internet 要求。

组件 | 要求
Internet 软件 | Microsoft SQL Server 2000 所有安装都需要 Microsoft Internet Explorer 5.0。Microsoft 管理控制台 (MMC) 和 HTML 帮助也需要 Microsoft Internet Explorer 5.0。最小安装已足够，而且 Internet Explorer 不必是默认浏览器。 Internet Explorer 5.0 要求的例外情况：如果使用"仅连接"选项而且不连接到要求加密的服务器，则带 Service Pack 2 的 Microsoft Internet Explorer 4.01 就足够了。
Internet Information 服务 | 如果编写 XML 应用程序，请参见用于 SQL Server 的 IIS 虚拟目录管理的系统要求。

网络软件要求

Microsoft Windows NT、Windows 2000、Windows Me、Windows 98 和 Windows 95 都具有内置网络软件。只有在使用 Banyan VINES 或 AppleTalk ADSP 时，才需要其它网络软件。Novel NetWare IPX/SPX 客户端支持由 Windows Networking 的 NWLink 协议提供。

说明 安装 SQL Server 2000 之前，必须在操作系统级启用 TCP/IP。有关更多信息，请参见网络库。

支持的客户端

Microsoft SQL Server 2000 支持以下客户端：Windows NT Workstation、Windows 2000 Professional、Windows 98、Windows 95、Apple Macintosh®、OS/2 和 UNIX。Macintosh、OS/2 和 UNIX 不支持 SQL Server 图形工具，而要求来自第三方供应商的 ODBC 客户端软件。

其它 Microsoft 产品考虑事项

下列 Microsoft 产品要求有 Service Release 或 Service Pack 才能正确操作 SQL Server 2000。

Access 2000

Microsoft Access 2000 要求安装 Microsoft Office 2000 Service Release 1 (SR1) 或 Access 2000 SR1 才能正确操作 SQL Server 2000。如果运行 Access 2000 的早期版本，则无法在 SQL Server 2000 上测试自动数据处理 (ADP) 应用程序。无法访问数据库关系图、存储过程、表设计或视图设计。

将来的 Access Service Release 中还要解决下面一些问题：

  • 当在 SR1 中运行 Access 2000 时，可以测试 ADP 应用程序。还可以更改数据库关系图、存储过程、表设计或视图设计，但是无法保存任何更改。将来的 Access Service Release 允许有限的保存更改能力。

  • Access 2000 创建数据库向导无法成功创建 SQL Server 2000 数据库。若要解决此问题，可以先使用 SQL Server 企业管理器创建数据库，然后在 Access 2000 中使用"新建"对话框上的"项目（现有数据库）"选项创建数据库的 ADP。

  • Access 2000 升迁向导不支持升迁到 SQL Server 2000。若要解决此问题，可使用企业管理器中的数据转换服务将 MDB 数据库文件导入 SQL Server。然后可以重命名 MDB 表，并创建所得到的 SQL Server 数据库的链接表，其名称与原始的 MDB 表名相同。
Visual Studio 6.0

在运行 Microsoft Visual Studio® 6.0 时，无法访问 SQL Server 2000 中的数据库关系图、存储过程、表设计或视图设计。Visual Studio 6.0 Service Pack 4 使您得以更改数据库关系图、存储过程、表设计或视图设计，但是无法保存它们。将来的 Visual Studio Service Pack 允许有限的保存更改能力。

SQL Server 2000 工具无法访问使用 Visual Studio 6.0 中的设计工具保存的数据库关系图，直到修改了数据库中的 dtproperties 表为止。有关更多信息，请参见向后兼容性。

请参见

SQL Server 2000 的各种版本

SQL Server 2000：版本和组件

SQL Server 2000 的各种版本所支持的操作系统


SQL Server 2000：版本和组件

SQL Server 2000 的版本包括企业版、标准版、个人版、开发版和评估版。

说明 Microsoft SQL Server 2000 个人版替代 Microsoft SQL Server 7.0 桌面版。若要只安装客户端工具，可以使用个人版，购买 SQL Server 2000 标准版和企业版时也可以得到个人版。

在打开的屏幕上选择"SQL Server 2000 组件"时，"安装组件"屏幕上将出现下面三个选项：

安装数据库服务器

启动 SQL Server 安装程序，其中包含选择安装选项的屏幕。

安装 Analysis Services

在处理 OLAP 多维数据集的计算机上安装 Analysis Services。有关更多信息，请参见安装 Analysis Services。

安装 English Query

在运行 English Query 应用程序的计算机上安装 English Query。有关更多信息，请参见安装 English Query。

选择要安装的组件和选项

您可能有数据库服务器、Internet 服务器，或者需要在客户端计算机上有数据库。如果运行数据库客户端/服务器应用程序，则可能需要也可能不需要在计算机上有数据库。可能需要管理数据库服务器的工具，也可能希望运行访问 SQL Server 实例的应用程序。以下各段描述上述 SQL Server 配置及其它配置的安装选项。

在数据库服务器上安装 SQL Server

安装数据库服务器时，安装 SQL Server 2000 企业版或 SQL Server 2000 标准版。在工作站上安装个人数据库时，安装 SQL Server 2000 个人版。这些安装一般包括数据库引擎、客户端数据库管理工具和客户端连接组件。

在数据库服务器上，可以安装 SQL Server 2000 关系数据库引擎的默认实例。还可以安装 SQL Server 2000 数据库引擎的一个或多个命名实例。除了要指定实例名称外，安装选项与安装默认实例相似。

安装 SQL Server 2000 的实例时，必须指定是否让实例使用故障转移群集。有关更多信息，请参见安装故障转移群集前的准备工作。

在客户端/服务器应用程序中使用 SQL Server

对于运行数据库客户端/服务器应用程序（如与 SQL Server 实例直接相连的 Microsoft Visual Basic® 应用程序）的计算机，可以选择下列选项：

  • 如果需要在客户端计算机上安装个人数据库，则安装 SQL Server 的个人版。一般情况下，该安装程序安装客户端工具、客户端连接组件和数据库引擎。

  • 如果在计算机上不需要数据库，但是需要管理数据库服务器上的 SQL Server 实例，或者打算开发 SQL Server 应用程序，则安装"仅客户端工具"选项。此选项包括客户端连接组件。有关更多信息，请参见如何仅安装客户端工具（安装程序）。

  • 如果只想运行访问数据库服务器上的 SQL Server 实例的应用程序，则仅安装连接组件。有关更多信息，请参见如何只安装连接（安装程序）。
在 Internet 服务器上使用 SQL Server

在 Internet 服务器（如运行 Microsoft Internet Information 服务 (IIS) 的服务器）上，一般安装 SQL Server 2000 客户端工具。客户端工具包括由连接 SQL Server 实例的应用程序使用的客户端连接组件。另外，客户端工具还包括配置虚拟根的实用工具。应用程序通过 URL 访问 SQL Server 时需要虚拟根。

安装 SQL Server 客户端工具之后，配置支持通过 URL 访问 SQL Server 实例的虚拟根。有关配置虚拟根的更多信息，请参见使用用于 SQL Server 的 IIS 虚拟目录管理。

说明 尽管可以在运行 IIS 的计算机上安装 SQL Server 实例，但这通常只是只有单个服务器计算机的小型 Web 站点的做法。大多数 Web 站点都将中层 IIS 系统安装在一个服务器上或服务器群集上，将数据库安装在一个单独的服务器或服务器联合体上。有关联合体的更多信息，请参见联合 SQL Server 2000 服务器。

如果 Internet 服务器上的某些 Web 页使用 English Query，则也应安装该组件。

其它 SQL Server 组件
  • 若要与应用程序一起分发 SQL Server 2000，请使用 SQL Server 2000 Desktop Engine，该引擎是独立的数据库引擎，独立的软件供应商可将其与应用程序打在一个包内。有关更多信息，请参见与应用程序一起分发 SQL Server。

说明 Desktop Engine 没有图形用户界面，且与 SQL Server 7.0 桌面版无关。

除了"安装 SQL Server 2000 组件"屏幕上显示的主要组件和版本外，SQL Server 2000 还包括其它版本：SQL Server 2000 开发版、SQL Server 2000 Windows CE 版和 SQL Server 2000 企业评估版。有关更多信息，请参见 SQL Server 2000 的各种版本所支持的功能。

请参见

SQL Server 2000 的各种版本

SQL Server 2000 的各种版本所支持的操作系统


安装 English Query

English Query 是在 Microsoft® SQL Server™ 2000 上使用的开发工具。使用 English Query 可创建应用程序，使用户得以用英语查询 SQL Server 数据库或 Analysis Services 数据库。例如，用户可以询问："How many widgets were sold in Washington last year?"，从而代替 SQL 语句：

SELECT sum(Orders.Quantity) FROM Orders, Parts
WHERE Orders.State='WA'
   AND Datepart(Orders.Purchase_Date,'Year')='1999'
   AND Parts.PartName='widget'
   AND Orders.Part_ID=Parts.Part_ID

安装 English Query 时，"English Query"将添加到"开始"菜单上的 Microsoft SQL Server 程序组中。English Query 包含下列快捷方式：

  • English Query 联机丛书

  • English Query 教程

  • Microsoft English Query

如果 English Query 未与 Microsoft SQL Server 2000 一起安装，则帮助系统将访问 English Query 联机丛书 Eqdoc.chm，而不是 SQL Server 联机丛书 SQL80.col。但是，两个文档文件所包含的有关 English Query 的材料基本相同，并且都提供 English Query 的上下文相关的 (F1) 帮助。不管采用怎样的安装方案，English Query 联机丛书都可以从 English Query 程序组中使用。

English Query 的安装要求如下：

  • Microsoft Windows® 95、Microsoft Windows 98 或 Microsoft Windows NT® 4.0 或更高版本

  • 40 MB 可用磁盘空间

  • Microsoft Internet Explorer 5.0 或更高版本

安装 English Query

SQL 安装程序

SQL 安装程序

请参见

English Query 概述


安装 Analysis Services

Microsoft® SQL Server™ 2000 Analysis Services 包括一个用于构造和分析多维数据的功能强大的服务器。

安装 Analysis Services

SQL 安装程序

SQL 安装程序

请参见

Analysis Services 概述


设置 Windows 服务帐户

在 Microsoft® Windows NT® 和 Microsoft Windows® 2000 操作系统上，Microsoft SQL Server™ 和 SQL Server 代理程序都作为 Windows 服务启动和运行。这些服务出现在"服务"对话框中的已安装服务列表中，使用 Windows 控制面板可访问这些服务。下表显示用于引用 SQL Server 默认实例和命名实例的每个服务名称和术语，与"服务"对话框中显示的相同。

服务 | 名称 | 默认实例术语 | 命名实例术语
Microsoft SQL Server | SQL Server | MSSQLSERVER | MSSQ$InstanceName
Microsoft SQL Server 代理程序 | SQL Server 代理 | SQLSERVERAGENT | SQLAgent$InstanceName

若要使 Microsoft SQL Server™ 和 SQL Server 代理程序在 Windows 中作为服务运行，必须给它们指派 Windows 用户帐户。通常给 SQL Server 和 SQL Server 代理程序指派相同的用户帐户，要么是本地系统用户帐户要么是域用户帐户。但是，也可以在安装过程中为每个服务自定义设置。有关如何自定义每个服务的帐户信息的更多信息，请参见服务帐户。

说明 Microsoft Windows 98 不支持 Windows 服务；相反，SQL Server 模拟 SQL Server 和 SQL Server 代理服务。不要求为这些模拟服务创建用户帐户。

使用本地系统帐户

本地系统帐户不要求密码，没有 Windows NT 4.0 和 Windows 2000 的网络访问权限，同时限制 SQL Server 安装与其它服务器交互。

使用域用户帐户

域用户帐户使用 Windows 身份验证，即用于连接到操作系统的用户名和密码也用于连接到 SQL Server。一般情况下都使用域用户帐户，因为许多服务器之间的活动只能使用域用户帐户才能执行，例如：

  • 远程过程调用。

  • 复制。

  • 备份到网络驱动器。

  • 涉及远程数据源的异类联接。

  • SQL Server 代理邮件功能和 SQL 邮件。如果使用 Microsoft Exchange 则受此限制。大多数其它邮件系统同样要求客户端（SQL Server 和 SQL Server 代理服务）运行于具有网络访问权限的帐户。

说明 多台运行 SQL Server 的服务器可以共享同一用户帐户。设置复制时，建议发布服务器及其所有订阅服务器共享 SQL Server 服务的同一服务帐户。

域用户帐户要求

所有域用户帐户必须具有以下权限：

  • 访问和更改 SQL Server 目录 (\Program Files\Microsoft SQL Server\Mssql)。

  • 访问和更改 .mdf、.ndf 和 .ldf 数据库文件。

  • 作为服务登录。

  • 读写在下述位置的注册表键值：
    • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer。
      或者，对于任何命名实例为：HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server。

    • HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQLServer。
      或者，对于任何命名实例为：HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\MSSQL$Instancename。

      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Perflib。

另外，域用户帐户必须能读写下面这些服务的相应注册表键值：SQLAgent$InstanceName、MSSearch 和 MSDTC。

下表显示某些功能要求的额外权限。

服务 | 权限 | 功能
SQL Server | 网络写特权 | 使用 xp_sendmail 写入邮件槽。
SQL Server | 作为操作系统的一部分执行，并替换进程等级令牌 | 对非 SQL Server 管理员的用户运行 xp_cmdshell。
SQL Server 代理 | 管理员本地组的成员 | 创建属于非 SQL Server 管理员的其他人的 CmdExec 和 ActiveScript 作业。 使用自动重新启动功能。 使用"空闲时运行"作业。
SQL Server | 本地权限高的用户或本地管理员组的成员 | 在 Windows 2000 Active Directory 中添加或删除 SQL Server 对象。

更改用户帐户

若要在安装 SQL Server 之后更改任何 SQL Server– 相关服务的密码或其它属性，请使用 SQL Server 企业管理器。如果 Windows 密码已过期而需要更改，则还必须修改 Windows 中的 SQL Server 服务设置。有关更多信息，请参见更改密码和用户帐户。

请参见

创建安全帐户

计划安全性

服务帐户


SQL Server 2000 的文件路径

在 Microsoft® SQL Server™ 2000 中，安装的 SQL Server 文件的默认位置已更改。对于 SQL Server 的默认实例，程序和数据文件的默认目录是 \Program Files\Microsoft SQL Server\Mssql。可以为程序和数据文件指定默认路径以外的文件路径。

默认情况下，共享工具安装在 \Program Files\Microsoft SQL Server\80\Tools。此文件夹包含由所有 SQL Server 2000 实例（默认实例和命名实例）共享的文件。这些工具包含 SQL Server 联机丛书、开发工具和其它组件。

安装程序还在 Microsoft Windows® 系统目录中安装文件。系统文件位置无法更改。

SQL Server 程序文件的位置

SQL Server 程序文件位于 \Program Files\Microsoft SQL Server\Mssql\Binn 目录中。

程序文件的位置是安装程序创建文件夹所在的根目录，而这些文件夹包含程序文件以及通常在使用 SQL Server 时不会更改的文件。尽管这些文件不是只读文件，但是文件夹不包含数据、日志、备份文件或复制数据，因此，当使用 SQL Server 时这些文件的空间需求不会增加。

说明 程序文件不能安装在可移动磁盘驱动器上。

SQL Server 数据文件的位置

SQL Server 数据文件位于 \Program Files\Microsoft SQL Server\Mssql\Data。

数据文件的位置是安装程序创建文件夹（其中包含数据库和日志文件）所在的根目录，以及系统日志、备份和复制数据所在的目录。安装程序为 master、model、tempdb、msdb、pubs 和 Northwind 数据库创建数据库和日志文件。SQL Server 数据文件路径应该位于有足够空间供这些文件增大的驱动器上。

说明 不能将数据文件安装在使用压缩功能的文件系统上。

指定文件路径

在 SQL Server 2000 中，由于有多个实例的选项，所以文件路径除用户为程序和数据文件指定的位置以外，还使用实例的名称。但是，工具和其它共享文件不需要实例的名称。

程序和数据文件的默认实例文件路径

对于 SQL Server 默认实例，默认 SQL Server 目录名称 (Mssql) 与指定的目录一起用作默认实例名称。

例如，如果指定将 SQL Server 默认实例安装在 D:\MySqlDir，则文件路径为：

  • D:\MySqlDir\Mssql\Binn（程序文件）

  • D:\MySqlDir\Mssql\Data（数据文件）
程序和数据文件的命名实例文件路径

对于任何命名实例，实例的给定名称与指定的目录一起使用。

例如，如果指定名为 MyInstanceA 的实例安装在 D:\MySqlDir 中，则路径为：

  • D:\MySqlDir\MSSQL$MyInstanceA\Binn（对于程序文件）

  • D:\MySqlDir\MSSQL$MyInstanceA\Data（对于数据文件）

请参见

多个 SQL Server 实例的文件位置

定位目录和文件


升级现有的 SQL Server 安装

可以从早期版本升级到 Microsoft® SQL Server™ 2000，也可以在安装 SQL Server 2000 后立即执行升级操作。从 SQL Server 6.5 版升级到 SQL Server 2000 和从 SQL Server 7.0 版升级到 SQL Server 2000 的操作不同。SQL Server 6.5 数据库（及相关信息）转换成 SQL Server 2000 格式。SQL Server 7.0 的安装则被 SQL Server 2000 重写，除非安装命名实例配置，这种情况下 SQL Server 7.0 可以保持原样。

初始安装 SQL Server 2000 之后，便有其它可用的升级选项。如果使用多个 SQL Server 2000 实例，则可以通过添加组件升级某个实例，并且多个实例的组件集各不相同。

从 SQL Server 7.0 升级到 SQL Server 2000

可以通过安装 SQL Server 2000 的默认实例重写现有的 SQL Server 7.0 安装。也可以通过安装 SQL Server 2000 的命名实例使 SQL Server 7.0 安装保持原样。这两种操作都通过下列步骤执行。

从 SQL Server 7.0 升级到 SQL Server 2000

SQL 安装程序

SQL 安装程序

升级 SQL Server 7.0 数据库

不用从 SQL Server 7.0 完整升级到 SQL Server 2000（这将覆盖 SQL Server 7.0），而是可以升级 SQL Server 7.0 数据库和相关的元数据。有关更多信息，请参见升级 SQL Server 7.0 数据库（复制数据库向导）。

从 SQL Server 6,5 升级到 SQL Server 2000

安装 Microsoft® SQL Server™ 2000 之后，可以使用 SQL Server 升级向导升级 SQL Server 6.5 版的服务器配置和数据库。在此过程中，SQL Server 6.5 的信息和数据都传输到 SQL Server 2000 安装。SQL Server 6.5 安装在计算机上保持原样。可以删除它，也可以将它保留在计算机中并用于 SQL Server 2000 的版本切换配置。

说明 如果打算将 SQL Server 6.5 与 SQL Server 2000 实例安装保留在一起（出于版本切换的目的），那么，在安装 SQL Server 2000 之前必须将 SQL Server Service Pack (SP5) 应用于 SQL Server 6.5。

从 SQL Server 6.0 升级到 SQL Server 2000（不直接升级）

若要从 SQL Server 6.0 升级到 SQL Server 2000，有下面两种方法：

  • 使用 SQL Server 7.0 版提供的 SQL Server 升级向导从 SQL Server 6.0 升级到 SQL Server 7.0，然后使用安装程序从 SQL Server 7.0 升级到 SQL Server 2000。

  • 将 SQL Server 6.0 数据转换成 SQL Server 6.5，然后将 SQL Server 6.5 数据转换成 SQL Server 2000。

说明 这两种数据转换都通过 SQL Server 升级向导进行，但使用的升级向导版本不同。SQL Server 7.0 升级向导可以将 SQL Server 6.0 数据库或 SQL Server 6.5 数据库升级到 SQL Server 7.0 数据库。在 SQL Server 2000 中，升级向导仅用于从 SQL Server 6.5 升级到 SQL Server 2000。

版本升级

Microsoft® SQL Server™ 2000 的各种版本（SQL Server 2000 企业版、SQL Server 2000 标准版、SQL Server 2000 个人版和 SQL Server 2000 开发版）都有各自的光盘并且单独安装。

可以通过执行版本升级，添加 Microsoft SQL Server 安装的功能集。例如，如果购买了 Microsoft SQL Server 2000 标准版，则可以从 SQL Server 7.0 桌面版升级到 SQL Server 2000 标准版。

下表显示 SQL Server 各种版本之间的升级选项。

已安装的版本 | 可升级到
SQL Server 7.0 桌面版 | SQL Server 2000 个人版 SQL Server 2000 标准版
SQL Server 7.0 标准版 | SQL Server 2000 标准版 SQL Server 2000 企业版
SQL Server 7.0 企业版 | SQL Server 2000 企业版
SQL Server 2000 开发版 | SQL Server 2000 企业版
SQL Server 2000 标准版 | SQL Server 2000 企业版
SQL Server 2000 个人版 | SQL Server 2000 标准版

说明 SQL Server 7.0 桌面版已由 SQL Server 2000 个人版取代；不过，仍然可以执行这种类型的版本升级。

升级选项还取决于所使用的操作系统。有关更多信息，请参见 SQL Server 2000 的各种版本所支持的操作系统。

在 SQL Server 2000 内部升级版本和组件

在从 SQL Server 2000 的一个版本升级到另一个版本时可以添加功能，并且有在此升级过程中添加组件的选项。例如，如果从 SQL Server 2000 个人版升级到 SQL Server 2000 标准版，则可以在升级过程中安装其它组件。

执行 SQL Server 2000 内部版本升级

SQL 安装程序

SQL 安装程序

将组件添加到 SQL Server 2000 实例

通过选择要添加功能的 SQL Server 实例，可将组件添加到现有的 SQL Server 2000 安装。此方法使您得以对默认实例和任何命名实例有不同的组件集。

将组件添加到 SQL Server 2000 实例

SQL 安装程序

SQL 安装程序

请参见

升级到 SQL Server 2000：概述

现有安装选项

选择组件

升级到 SQL Server 2000 故障转移群集

升级 SQL Server 6.5 数据库（升级向导）


基本安装选项

本节描述 SQL Server 2000 的基本安装选项。在本地或远程计算机上升级现有安装或创建新的安装都被视为基本安装选项。

有关群集维护、执行无值守安装或重建注册表的更多信息，请参见高级安装选项。


在基本安装屏幕上输入信息

Microsoft® SQL Server™ 2000 安装程序提供基本选项和高级选项。以下两个选项可用于本地安装：

  1. 创建新安装或其它安装

  2. 对现有安装进行升级、删除或添加组件

如果选择升级选项，则还有许多其它选择。有关更多信息，请参见现有安装选项。另外，可以选择高级选项。有关初始安装选择的更多信息，请参见安装选择。

对于基本的本地安装，选择创建新的或其它安装选项。在随后出现的屏幕中输入用户和产品标识 (ID) 信息后，选择要包含在此 SQL Server 2000 安装中的组件。可选择仅安装连接组件或客户端工具组件（包含连接组件），也可选择安装全部服务器和客户端工具组件。有关更多信息，请参见安装定义。

如果选择安装同时带有服务器和客户端工具的 SQL Server 关系数据库，则选择 SQL Server 2000 命名实例或默认实例。有关更多信息，请参见实例名称。

选择默认实例或选择创建命名实例后，出现"标准安装类型选择"屏幕。有关更多信息，请参见安装类型：典型、最小或自定义。

安装程序运行时可能出现其它选项，这取决于系统和安装的具体情况。

请参见

升级现有的 SQL Server 安装

多个 SQL Server 实例


计算机名称

通过安装程序中的"计算机名称"对话框可在本地计算机、远程计算机或虚拟服务器上安装 Microsoft SQL Server 2000。

在本地计算机上可以使用所有安装和升级选项。高级选项（包括注册表重建、无值守安装和升级到群集）在远程安装中都不可用。如果正在群集计算机上运行安装程序，则可使用"虚拟服务器"选项。

选项

本地计算机

默认情况下，编辑框中的名称为本地计算机（即正在运行安装程序的计算机）名称。对于本地安装，接受默认值并单击"下一步"按钮。

说明 如果仅安装工具，则"本地计算机"将是该对话框中唯一的可用选项。

远程计算机

输入计算机名称以进行远程安装，或单击"浏览"按钮以定位远程计算机。

虚拟服务器

输入要管理的新的或现有的虚拟 SQL Server 名称。

该选项仅当从 Windows NT 或 Windows 2000 企业操作系统上检测到 Microsoft 群集服务 (MSCS) 时才可用。

浏览

单击"浏览"按钮以定位远程计算机。

仅当选定"远程计算机"选项时该按钮才可用。

请参见

安装远程配置

安装虚拟服务器配置

安装故障转移群集前的准备工作

创建故障转移群集


安装选择

"安装选择"屏幕是 Microsoft® SQL Server™ 安装程序的初始屏幕，可以从屏幕上的三个选项中选择一个运行安装程序。

选项

创建新的 SQL Server 实例或安装客户端工具

创建新的 SQL Server 2000 实例，该实例是默认实例或命名实例。另外，该选项使您得以在除 Microsoft Windows® 95 之外的任何操作系统上使用 SQL Server 2000 任何版本的光盘来仅安装客户端工具。

对现有的 SQL Server 实例进行升级、删除或添加组件

该选项使您得以对现有的 SQL Server 实例进行升级、删除或添加组件。现有实例包括早期版本（SQL Server 6.5 版和 SQL Server 7.0 版）以及 SQL Server 2000 实例的安装。有关更多信息，请参见现有安装选项。

高级选项

选择用于群集维护、无值守安装和注册表重建的高级选项。

请参见

多个 SQL Server 实例

升级现有的 SQL Server 安装

高级安装选项


现有安装选项

"现有安装选项"安装屏幕包括几种可供选择的升级 Microsoft® SQL Server™ 早期版本和升级到 SQL Server 2000 组件的方法。只有特定安装所应用选项才出现在屏幕上。

选项

向现有安装中添加组件

该选项使您得以向现有 SQL Server 2000 安装中添加组件。

卸载现有安装

从计算机中删除 SQL Server 2000 安装（默认实例或命名实例）。要删除的实例已在"实例名称"屏幕中指定。

升级现有安装

该选项用于现有的 SQL Server 7.0 和 SQL Server 2000 安装。由于构成现有安装的版本及组件，选择该选项将启动以下升级进程之一：

  • 从 SQL Server 7.0 升级到 SQL Server 2000（如果无法升级客户端工具，请参见下面的"升级问题"）。

  • 向现有的 SQL Server 2000 安装添加组件。例如，您可能购买了具有更多功能的 SQL Server 版本，或者需要安装某些组件。

说明 通过使用 SQL Server"开始"菜单中的 SQL Server 升级向导可从 SQL Server 6.5 升级到 SQL Server 2000。

将现有安装升级到群集安装

该选项是从 SQL Server 6.5 或 SQL Server 7.0 群集安装升级到 SQL Server 2000 群集安装的进程中的一个步骤。首先，将 SQL Server 早期版本升级到 SQL Server 2000。然后，将现有 SQL Server 2000 安装升级到群集安装。有关更多信息，请参见升级到 SQL Server 2000 故障转移群集。

升级问题
  3. 在仅运行 SQL Server 7.0 客户端工具的计算机上，当选择升级现有安装时可能遇到以下消息："无法升级检测到的默认实例。请选择'新安装'以升级您的工具。"如果是通过选择"安装类型"对话框中的"自定义"选项、然后在组件对话框中选择工具来安装 SQL Server 7.0 客户端工具的，便会发生该问题。在这种情况下，由于注册表问题而无法升级 SQL Server 7.0 的现有客户端工具安装。而必须通过选择"创建 SQL Server 的新实例，或安装客户端工具"选项来重新安装 SQL Server。

  4. 通过使用该选项来升级现有安装，可以将 SQL Server 2000 的 Beta 版升级到产品的最终版。如果您打算在包含多个实例的群集或计算机上执行这样的升级，升级前必须先关闭 SQL Server 的所有实例。

请参见

从 SQL Server 7.0 升级到 SQL Server 2000

升级现有的 SQL Server 安装

选择组件


安装定义

使用"安装定义"屏幕选择要包含在 SQL Server 2000 安装中的组件。如果选择"仅客户端工具"或"仅连接"选项，除非安装客户端工具时选择组件，否则安装程序将继续进行而不作更多的选择。如果选择安装"服务器和客户端工具"，则出现另外的安装屏幕。

选项

仅客户端工具

仅安装客户端关系数据库管理工具。此选项包含管理 SQL Server 的客户端工具和客户端连接组件。此外，该选项使您得以选择其它要安装的组件。有关更多信息，请参见如何仅安装客户端工具（安装程序）。

服务器和客户端工具

该选项执行安装服务器和客户端工具以创建具有管理能力的关系数据库服务器。选择"服务器和客户端工具"选项将显示所有附加的安装选项。

有关执行数据库引擎默认实例的典型安装（包括安装所有客户端和连接）的更多信息，请参见如何安装 SQL Server 2000（安装程序）。

说明 如果您正在使用计算机操作系统不支持的 SQL Server 版本的光盘安装客户端工具，则该选项不可用。

仅连接

仅安装关系数据库客户端连接组件，包括连接 SQL Server 2000 命名实例所需的 MDAC 2.6（Microsoft 数据访问组件）。该选项只提供连接工具，不提供客户端工具或其它组件。有关更多信息，请参见如何只安装连接（安装程序）。

请参见

管理工具

服务器组件

客户端连接


用户信息

"用户信息"安装屏幕提示您输入您的姓名和公司名称。这些字段是必须输入的。

在网络上进行安装时，应确保提供的是负责使用或管理该服务器的用户的姓名。

请参见

设置 Windows 服务帐户


实例名称

使用此屏幕添加和维护 Microsoft® SQL Server™ 2000 实例。

选项

默认值

  5. 选定该选项时，将安装 SQL Server 2000 的默认实例。单击"下一步"继续安装进程。

  6. 清除此框时，可安装或维护 SQL Server 2000 的命名实例。

说明 如果未启用该复选框，则安装程序已在该计算机上检测到 SQL Server 的默认实例。默认实例可能是 SQL Server 6.5 或 SQL Server 7.0 版的安装，或者是已安装的 SQL Server 2000 的默认实例。同一时刻只能有一个 SQL Server 安装（任何版本）为默认实例。有关更多信息，请参见 多个 SQL Server 实例。

实例名称

输入新的实例名或要维护的实例的名称。查阅并遵循实例名称的规则。

重要 建议将实例名限制在 10 个字符之内。实例名会出现在各种 SQL Server 和系统工具的用户界面中，因此，名称越短越容易读取。

实例命名规则

  7. 实例名称不区分大小写。

  8. 实例名称不能是 Default 或 MSSQLServer。

  9. 实例名必须遵从 SQL Server 标识符规则且不能为保留关键字。

  10. 必须将实例名限制为 16 个字符。

  11. 实例名中的首字符必须为字母、"和"符号 (&)、下划线 (_) 或数字符号 (#)。可用的定母为 Unicode 标准 2.0 中定义的字符（其中包括拉丁字符 a-z 和 A-Z）和其它语言中的字母字符。

  12. 后续字符可以是：
    • Unicode 标准 2.0 所定义的字母。

    • 来自基本拉丁字母或其它国家脚本的十进制数字。

    • 美元符 ($)、数字符号 (#) 或下划线 (_)。
  13. 实例名称中不允许嵌入空格或特殊字符。不能使用反斜线 (\)、逗号 (,)、冒号 (:) 或 @ 符号。

警告 只有在当前 Microsoft Windows® 代码页中有效的字符，才可以用于 SQL Server 2000 的实例名称中。如果使用当前代码页不支持的 Unicode 字符，则将出现错误。

请参见

处理 SQL Server 的实例和版本

处理 SQL Server 2000 的命名实例和多实例

SQL Server 2000 实例的命名规则

保留关键字


安装类型：典型、最小或自定义

当安装 Microsoft® SQL Server™ 2000 企业版、SQL Server 2000 标准版或 SQL Server 2000 个人版时，SQL Server 安装程序在"安装类型"对话框中提供三种安装类型。另外，可修改该对话框中的程序和数据文件的安装位置。

选项

典型

使用默认安装选项安装整个 SQL Server。建议多数用户采用此安装。

最小

安装运行 SQL Server 所需的最小配置。建议使用最小可用磁盘空间的计算机的用户采用此安装。

自定义

安装 SQL Server 且可更改任意或所有默认选项。使用自定义安装选择组件和子组件，或者更改排序规则、服务帐户、身份验证或网络库的设置。

目的文件夹

程序和数据文件的默认安装位置都是 C:\Program Files\Microsoft SQL Server\。

程序文件

单击"浏览"按钮另选安装 SQL Server 程序文件的位置。

数据文件

单击"浏览"按钮另选安装 SQL Server 数据文件的位置。

注意 建议不要将程序文件安装在群集磁盘上，以便将来升级到群集。如果选择群集磁盘上的某个文件夹作为 SQL Server 程序文件的目的文件夹，则会出现一条信息，请求另一条安装程序文件的路径。

升级程序文件已安装在群集磁盘上的 SQL Server 7.0 安装时，也将出现类似信息："安装程序将从群集磁盘上移去程序文件。请提供程序文件的新位置。您选择的驱动器号必须作为本地驱动器存在于群集的所有节点上，以便今后升级到群集安装。"

有关更多信息，请参见升级到 SQL Server 2000 故障转移群集。

每种安装类型的组件

在 Windows NT® 或 Windows 2000 上安装 SQL Server 时，所有安装类型都提供以下选项：

  1. SQL Server 和 SQL Server 代理程序的 Windows 服务帐户（登录帐户）。

  2. 每次重新启动计算机时，是否自动启动 SQL Server 和 SQL Server 代理。

  3. 各种网络库或协议的使用，包括 TCP/IP 套接字、命名管道和多协议。

下表列出各种安装类型以及每种安装类型提供的组件。

组件 | 典型 | 最小 | 自定义
数据库服务器 | 是 | 是 | 可选
升级工具1 | 是 | 否 | 可选
复制支持 | 是 | 是 | 可选
全文检索 | 是 | 是 | 可选
客户端管理工具 | 全部 | 无 | 可选
客户端连接 | 是 | 是 | 非选项
联机丛书 | 是 | 否 | 可选
开发工具 | 仅调试程序 | 无 | 工具的选择
代码示例 | 无 | 无 | 示例的选择
排序规则设置 | 是 | 是 | 设置的选择

1 默认情况下，只为 SQL Server 2000 的默认实例而不为任何命名实例安装升级工具。

请参见

Net-Library 和网络协议


选择组件

在"选择组件"屏幕上，选择要安装的或者重新安装（如果没有进行初始安装）的组件和子组件。默认情况下，选定典型安装选项。选择要安装或重新安装的组件，然后清除所有其它组件。

说明 不能通过清除该屏幕上的复选框将组件删除。删除已安装的组件的唯一方法是将 SQL Server 整个删除。

选项

组件

列出 SQL Server 的主要组件

子组件

列出选定组件的可用子组件

SQL Server 组件及各自的子组件包括：

  17. 服务器组件
    • SQL Server

    • 升级工具

    • 复制支持

    • 全文检索

    • 调试符号

    • 性能计数器
  18. 管理工具
    • 企业管理器

    • 事件探查器

    • 查询分析器

    • DTC 客户端支持

    • 冲突查看器
  19. 客户端连接

  20. 联机丛书
    • 磁盘上的联机丛书
  21. 开发工具
    • 头和库

    • MDAC SDK

    • 备份/还原 API

    • 调试程序界面
  22. 代码示例
    • 代码示例选择

请参见

如何向 SQL Server 2000 实例中添加组件（安装程序）


服务器组件

这些组件可在运行安装程序时，从"选择组件"对话框中的"服务器组件"分类中安装。当选定"服务器和客户端工具"作为初始安装选项时，将包含服务器组件。

SQL Server

安装 SQL Server 关系数据库引擎和其它核心工具。如果安装了 SQL Server 程序文件，就必须安装该 SQL Server 组件。

说明 安装 SQL Server 组件时，安装程序还安装 bcp、isql 和 osql 实用工具、ODBC、OLE DB 和 DB-Library。

升级工具

安装用于将 SQL Server 6.5 数据库升级到当前版本数据库的 SQL Server 升级向导。

复制支持

安装复制所使用的脚本和二进制文件。

全文检索

安装 Microsoft 全文检索引擎（Microsoft 搜索服务），它可以超越基本等式和 LIKE 运算符而扩展搜索字符列的能力。

调试符号

安装用于安装的调试符号。

性能计数器

安装用于安装的性能计数器。

请参见

安装定义


管理工具

这些组件可在运行安装程序时，从"选择组件"对话框中的"管理工具"分类上安装。当选定"仅客户端工具"选项作为初始安装选项时，将包含管理工具。

企业管理器

用于执行服务器和企业管理任务。

事件探查器

用于监视、记录和支持 Microsoft SQL Server 数据库活动审核。

查询分析器

用于交互输入 Transact-SQL 语句和过程。还以图形显示计划的形式提供图形查询分析功能。

DTC 客户端支持

用于将数据库事务扩展到多个服务器。

Microsoft 分布式事务处理协调器 (MS DTC) 用于协调由运行 Microsoft Windows NT®、Microsoft Windows® 98 和 Microsoft Windows 95 系统组成的网络中的事务。

冲突查看器

用于查看和更改（如有必要）同步冲突的解决方式。

请参见

安装定义

如何仅安装客户端工具（安装程序）


客户端连接

客户端连接组件是安装程序的"选择组件"对话框中的选项。客户端连接组件用于客户端和服务器之间的通讯，包括 Microsoft 数据访问组件 (MDAC) 和 DB-Library、ODBC 以及 OLE DB 的网络库。

此组件没有子组件。当选定"仅连接"作为初始安装选项时，只安装客户端连接组件。

说明 若要连接 SQL Server 2000 的命名实例，必须在客户端计算机上安装 MDAC 2.6。

请参见

安装定义

使用应用程序分发 SQL Server


联机丛书

该组件可以从安装程序的"选择组件"对话框中的"联机丛书"分类上安装。联机丛书组件既包括整套的 SQL Server 2000 的 SQL Server 联机丛书，也包括可通过单击"帮助"按钮或在对话框中及界面元素上按 F1 键后打开的联机帮助。

磁盘上的联机丛书

在本地驱动器的默认共享工具位置安装整套文档集：\Program Files\Microsoft SQL Server\80\Tools\Books。

说明 您可能想查看 Microsoft® SQL Server™ 7.0 的 SQL Server 联机丛书中的信息。有关更多信息，请参见如何访问 SQL Server 7.0 的 SQL Server 联机丛书。


开发工具

这些组件可以从安装程序的"选择组件"对话框中的"开发工具"分类上安装。若要安装开发工具，请选择"安装类型"屏幕中的自定义安装。调试程序接口是一个例外，选择典型安装时将包括此接口。

头和库

安装 C 语言开发人员开发程序（程序使用 OLE DB、ODBC、DB-Library、开放式数据服务、SQL-DMO、用于 C 语言的嵌入式 SQL 以及 MS DTC）所需的包含 (*.h) 文件和库 (*.lib) 文件。默认情况下，这些文件安装在 \Program Files\Microsoft SQL Server\80\Tools\DevTools\Include 和 \...\DevTools\Lib 目录下（共享工具位置）。

MDAC SDK

安装 MDAC 和 XML 软件开发工具包。

备份/还原 API

安装软件厂商开发自定义应用程序所需的头文件、示例程序和文档，备份和还原 Microsoft SQL Server 数据库。

调试程序界面

安装用于存储过程调试的界面。


代码示例

此示例组件包含在安装程序的"选择组件"对话框中"代码示例"分类中。该组件安装编写 Microsoft® SQL Server™ 2000 程序时用于参考的编程示例文件。默认情况下，这些文件安装在 \Program Files\Microsoft SQL Server\80\Tools\DevTools\Samples 目录下（共享工具位置）。可以安装部分或全部示例。

说明 使用虚拟设备备份或还原数据的示例代码包含在备份/还原 API（开发工具组件的一个子组件）中。有关更多信息，请参见开发工具。

选项 | 名称
ADO | Microsoft ActiveX® 数据对象
DBLIB | DB-Library
Desktop | Desktop Engine
DTS | 数据转换服务
ESQLC | 用于 C 语言的嵌入式 SQL (ESQL)
Misc | 杂项示例
MSDTC | Microsoft 分布式事务处理协调器 (MSDTC)
ODBC | 开放式数据库连接 (ODBC)
ODS | 开放式数据服务
OLE Automation | OLE 自动处理
Replication | 复制
Silver | 示例数据库架构
SQL-DMO | SQL 分布式管理对象
SQL-NS | SQL 命名空间
Utils | 示例实用工具
XML | XML 示例


网络库

在"网络库"屏幕上，可以选择为 Microsoft® SQL Server™ 2000 安装的网络库。网络库用于在运行 SQL Server 的客户端和服务器之间传递网络数据包。以动态链接库 (DLL) 形式实现的网络库使用特定的进程间通讯 (IPC) 机制执行通讯所需的网络操作。

服务器可以一次监听或监视多个网络库。安装期间，SQL Server 安装程序将所有 Net-Library 安装到计算机上，并允许配置部分或全部 Net-Library。如果没有配置某个 Net-Library，则服务器将无法监听该 Net-Library。安装完成后，可以使用服务器网络实用工具更改这些配置。

对于群集安装，仅可使用命名管道和 TCP/IP。安装群集实例时，不支持的网络库不可用。安装命名实例时，多协议、AppleTalk 和 Banyan VINES 协议不可用。

选项

命名管道

在 Microsoft Windows NT® 和 Microsoft Windows® 2000 上安装 SQL Server 需要命名管道支持。Microsoft Windows 98 不支持服务器端命名管道。默认情况下，SQL Server 监听命名管道 Net-Library 连接的标准管道。

命名管道名称

默认实例和命名实例的路径不同：

  • 默认实例：\\.\pipe\sql\query

  • 命名实例：\\.\pipe\MSSQL$instancename\sql\query

安装 SQL Server 后，可以更改管道名称。

TCP/IP 套接字

此 Net-Library 允许 SQL Server 通过使用标准 Windows 套接字作为 IPC 方法（通过 TCP/IP 协议）进行通讯。默认情况下，Microsoft SQL Server 2000 在所有操作系统上的安装都使用 TCP/IP 套接字 Net-Library。

使用 TCP/IP 套接字时请注意以下事项：

  • SQL Server 使用 UDP 端口 1434 从 SQL Server 2000 客户端建立连接。此套接字号码还通过 Internet 号码分配机构 (IANA) 保留给 SQL Server 使用。

  • 不要使用动态端口，也不要设置代理服务器地址，因为每当服务启动时，监听的端口会发生更改。

端口号

如果设置 SQL Server 监听 TCP/IP，则只有在希望 SQL Server 监听与默认地址不同的端口地址时，才可以在"端口号"框中键入 TCP/IP 端口号。此端口是 SQL Server 在接受来自 TCP/IP 套接字客户端的连接时所监听的端口。默认实例的默认号为 1433，这是 SQL Server 的正式 IANA 套接字号码。除非安装时设置了另一备用端口，否则，当命名实例第一次启动时，它将获得动态指派的端口。

远程 Winsock 代理服务器地址

如果设置 SQL Server 在 TCP/IP 套接字上监听使用 Microsoft Proxy Server 的代理服务器，则在设置 TCP/IP 套接字 Net-Library 时，请在"远程 WinSock 代理服务器地址"框中键入代理服务器地址。

多协议

多协议 Net-Library 使用 Windows NT 远程过程调用 (RPC) 功能。另外，多协议 Net-Library 还允许：

  • 采用由 Windows NT 支持的多数 IPC 机制通讯。只有 TCP/IP 套接字、NWLink IPX/SPX 和命名管道被认为是经过测试并得到支持。

  • 允许在所有 RPC 支持的协议上使用 Windows 身份验证。

  • 支持用于用户密码身份验证和数据的加密。

  • 为多数应用程序提供相当于本机 IPC Net-Library 的性能。

启用多协议加密

多协议加密仅用于与现有系统兼容。通过服务器网络实用工具（在运行安装程序后）启用的安全套接字层 (SSL) 加密方案是一种更加全面的加密解决方案。Windows 98 服务器上不支持多协议加密。

说明 命名实例不支持多协议 Net-Library。

NWLink IPX/SPX

此 Net-Library 允许 SQL Server 使用 NWLink IPX/SPX 协议进行通讯。

Novell Bindery 服务名

如果设置 SQL Server 监听 NWLink IPX/SPX，则安装程序将提示您输入 Novell Bindery 服务名，通过该名称在 Novell 网络上注册 SQL Server。默认服务名称是服务器计算机的计算机名。Net-Library 允许 Novell SPX 客户端连接到 SQL Server。

Windows 98 和 Windows 95 不支持服务器 NWLink IPX/SPX Net-Library。

AppleTalk ADSP

服务器 AppleTalk (ADSP) Net-Library 允许 Apple Macintosh® 客户端使用本机 AppleTalk（与 TCP/IP 套接字相反）连接 SQL Server。

说明 AppleTalk Net-Library 在 SQL Server 2000 中尚未得到增强，仍然在 SQL Server 7.0 功能级别上运行。未来的 SQL Server 2000 版本将不支持此 Net-Library，而且，命名实例也不支持它。

Apple Talk 服务对象

如果设置 SQL Server 监听 AppleTalk，安装程序将提示您输入 AppleTalk 服务对象名称。AppleTalk 服务对象名称由系统管理员指派。不必输入 AppleTalk 区域，因为在注册服务时使用了本地区域。

Windows 98 和 Windows 95 不支持 AppleTalk Net-Library。

Banyan VINES

SQL Server 支持将 Banyan VINES 顺序数据包协议 (SPP)（通过 Banyan VINES IP 网络协议）作为 IPC 方法。运行 Windows NT 的客户端和服务器的 Banyan VINES 支持仅可用于 Intel® 平台上的 SQL Server，而无法用于 Windows 98 和 Windows 95。

说明 Banyan VINES Net-Library 尚未得到改进，它运行在 SQL Server 7.0 级别的功能上。未来的 SQL Server 2000 版本将不支持此 Net-Library，而且，命名实例也不支持它。

Street Talk 服务名称

如果设置 SQL Server 监听 Banyan VINES，则安装程序将要求提供 StreetTalk 服务名称。其格式为：servicename@group@org，其中 servicename 是由 SQL Server 使用的基于计算机的 StreetTalk 服务名称，group 是其组，org 是其组织。必须首先通过 Banyan VINES 软件所包含的 MSERVICE 程序创建 SQL Server 使用的基于计算机的服务名。而且，若要启动 SQL Server，必须使用管理级权限登录。

对所有库启用协议加密

选择此复选框可启用对所有网络库进行协议加密。若要使用协议加密，必须具有服务器上的证书。有关获取证书的信息，请参见 Microsoft Windows 文档。如果您不具有证书，则可以在安装 SQL Server 之后使用服务器网络实用工具启用加密。

默认 Net-Library 设置

说明 运行 SQL 安装程序前必须启用 TCP/IP 网络。

所有 Net-Library 均由安装程序安装。下表显示了不同操作系统上的默认服务器和客户端 Net-Library 设置。

操作系统 | 服务器 Net-Library | 客户端 Net-Library 设置
Windows 98 | TCP/IP 套接字、共享内存 | TCP/IP 套接字
Windows 95 | 不可用 | TCP/IP 套接字
Windows NT 4.0（Server 和 Workstation） | TCP/IP 套接字、共享内存、命名管道 | TCP/IP 套接字、命名管道
Windows 2000（所有版本） | TCP/IP 套接字、共享内存、命名管道 | TCP/IP 套接字、命名管道

请参见

配置客户端 Net-Library

Net-Library 和网络协议


服务帐户

使用安装程序中的"服务帐户"屏幕，将登录帐户指派给两个 Microsoft® SQL Server™ 服务：SQL Server 和 SQL Server 代理程序。可以使用本地系统帐户或域用户帐户，并且，两个服务可使用同一帐户。默认设置是使用同一服务，且自动启动每个服务。若要使用默认设置，请输入域名密码，然后单击"下一步"。

还可以自定义每个服务的设置。可以为两个服务输入同一个登录帐户，也可以为每个服务分别指定帐户。以后若要更改"服务帐户"屏幕上的选项集，则请运行 Windows"控制面板"上的"服务"应用程序。

重要 若要创建或维护 Microsoft SQL Server™ 2000 故障转移群集，必须登录到拥有管理员特权的计算机上，即，成为计算机或域"管理员"本地组的成员。对于群集则意味着您必须是所有群集节点的管理员。

在 Microsoft Windows NT 4.0 上运行 SQL Server 2000 时，除了以管理员身份登录外，还必须配置 SQL Server 和 SQL Server 代理程序作为管理员帐户运行。

选项

对每个服务使用同一帐户。自动启动 SQL Server 服务

默认选项：一个帐户同时用于 SQL Server 和 SQL Server 代理程序。这些服务在操作系统启动时自动启动。

自定义每个服务的设置

允许对两个服务使用不同的设置。

服务

选择要自定义设置的服务。

SQL Server

选择此选项自定义 Microsoft SQL Server 服务的设置。

SQL Server 代理

选择此选项自定义 Microsoft SQL Server 代理服务的设置。

服务设置

选择需要的服务设置。

使用本地系统帐户

本地系统帐户不需要设置密码，也没有 Windows NT 4.0 的网络访问权限，同时，它可能限制 SQL Server 安装与其它服务器交互。

说明 在 Windows 2000 中，本地系统帐户不允许网络访问。

使用域用户帐户

域用户帐户使用 Windows 身份验证设置并连接 SQL Server。默认情况下，将显示当前登录到计算机的域用户帐户的帐户信息。

用户名

接受或更改域用户名。

密码

输入域密码。

域

接受或更改域名。

自动启动服务

选择此选项后将在操作系统启动时自动启动服务。只有当自定义每个服务的设置时才能使用此选项。

SQL Server 代理服务依赖于 SQL Server 服务，因为只有自动启动 SQL Server 服务才能自动启动 SQL Server 代理服务。

说明 单击"服务帐户"对话框中"上一步"按钮时，返回后的窗口将回复为默认选项。原来指定的选项将不再保留。

请参见

设置 Windows 服务帐户

更改密码和用户帐户


身份验证模式

使用此屏幕选择用于 Microsoft® SQL Server™ 2000 安装的安全（身份验证）模式。如果选择"混合模式"，则提示输入和确认系统管理员密码。在成功地连接到 SQL Server 后，两种模式的安全机制便是一样的。

选项

Windows 身份验证模式

用户通过 Microsoft Windows® 用户帐户连接时，SQL Server 使用 Windows 操作系统中的信息验证帐户名和密码。

混合模式（Windows 身份验证和 SQL Server 身份验证）

允许用户使用 Windows 身份验证或 SQL Server 身份验证进行连接。通过 Microsoft Windows 用户帐户连接的用户可以在 Windows 身份验证模式或混合模式中使用信任连接（由 Windows 验证的连接）。提供 SQL Server 身份验证是为了向后兼容。

添加 sa 登录密码

输入并确认系统管理员密码。

空白密码（建议不要使用）

如果用户试图通过提供空白登录名称连接到 SQL Server 的实例，SQL Server 将使用 Windows 身份验证。此外，如果用户试图使用特定的登录连接到配置为 Windows 身份验证模式的 SQL Server 实例，该登录会被忽略，而使用 Windows 身份验证。

请参见

添加 SQL Server 登录

指派 sa 密码

身份验证模式

创建安全帐户


选择授权模式

使用该对话框设置授权模式，以使客户端可以访问 Microsoft® SQL Server™ 的该实例。SQL Server 2000 支持两种客户端访问授权模式，一个用于设备，另一个用于处理器。

  • 本上下文中的设备可以是工作站、终端或运行连接到 SQL Server 实例的 SQL Server 应用程序的任何其它设备。

  • 处理器指的是安装在运行 SQL Server 2000 实例的计算机上的中央处理器 (CPU)。一个计算机上可以安装多个处理器，从而需要多个处理器许可证。

一旦设置了授权模式便无法再更改。可以在安装 SQL Server 之后添加设备或处理器许可证，这使用"控制面板"中的 SQL Server 2000 授权安装实用工具来进行。（请不要将该授权实用工具与 Windows 授权实用工具搞混，后者也可以在"控制面板"中找到。）

有关授权模式的更多信息，请参见 SQL Server 2000 的 Microsoft 许可协议。

选项

授权模式

当从"控制面板"访问该对话框时，安装过程中选择的模式在默认情况下为选中，同时显示以前选择的设备数或处理器数。

每客户

每客户授权模式要求每个将访问 SQL Server 2000 服务器的设备都具有一个客户端访问许可证。对于客户端连接到不止一个服务器的网络，每客户模式通常更划算。

在编辑框中，选择要授权的设备数。

处理器许可证

使用处理器许可，安装在运行 SQL Server 的计算机上的每个处理器都需要一个许可证。处理器许可证允许任意数目的设备访问服务器，无论它们是通过 Intranet 还是 Internet。

使用处理器许可，SQL Server 2000 可以利用每个安装的处理器，并支持不限数目的客户端设备。通过 Internet 提供对 SQL Server 数据库的访问的客户或拥有大量用户的客户通常选择处理器许可证。

在编辑框中选择要授权的处理器数。

继续

单击"继续"按钮以完成安装进程，或在修改要授权的设备数或处理器数以后单击该按钮。


安装远程配置

可以将 Microsoft® SQL Server™ 2000 安装在远程计算机（即未运行安装程序的计算机）上。执行远程安装之前：

  23. 确保本地和远程计算机都在运行 Microsoft Windows NT® 或 Windows® 2000。

  24. 确保本地和远程计算机都有 Intel® 兼容处理器。

  25. 确保以拥有远程计算机管理特权的用户帐户登录本地计算机。

远程安装很象正常安装，带有两个额外的对话框：

  26. "远程安装信息"对话框。当安装程序在作为群集组成部分的计算机上运行时也使用此对话框。有关更多信息，请参见远程安装信息。

  27. "选择计算机"对话框。该对话框允许从连接域内计算机列表中选择远程计算机。此列表中可能包括无法用于此安装的计算机，这是因为安装到远程计算机前必须先授予权限。

    可以输入计算机网络名，而不从列表中选择。

请参见

计算机名称


远程安装信息

需要远程安装信息，以定义两种不同安装情况下的安全性：

  28. 当选择在远程计算机上安装 Microsoft® SQL Server™ 2000 时。

  29. 当安装程序在作为群集一部分的计算机上运行时，即使没有创建或维护 SQL Server 故障转移群集安装。

对于远程安装，SQL Server 安装收集在"安装"对话框中输入的信息，并将这些输入条目记录到 Setup.iss 文件中。同时，远程安装进程启动远程服务，将文件复制到 \admin$ 共享目录下，然后，按照 Setup.iss 中指定的选项在远程计算机上运行无值守安装。

对于群集计算机，则显示"远程安装信息"对话框，这是因为，在故障转移群集系统上进行的所有安装都需要管理员帐户，以便在两个节点上安装 Microsoft 分布式事务处理协调器，或者验证是否存在 MS DTC。必须输入管理员信息，该信息对故障转移群集系统的全部所选节点均有效。

选项

用户名、密码和域

指定 SQL Server 安装程序在远程计算机上启动服务时所用的用户帐户。此用户帐户必须是远程计算机上的管理员而且有安装程序源文件目录的读权限。

不要将在此屏幕上输入的用户帐户与下列用户帐户混淆：

  • 登录本地计算机时所用的用户帐户。

  • 在 SQL Server 安装程序中分配给 SQL Server 和 SQL Server 代理服务的用户帐户。

所有这些用户帐户均分别指定。但是，在所有情况下都可以使用同一用户信息。即，每个帐户都可以使用相同的名称、密码和 Windows 域。

目标计算机

在"计算机名"对话框中输入的远程计算机名以静态文本显示。

目标路径

远程计算机名称以及该远程计算机上的目录（统一命名规则 (UNC) 格式），SQL Server 将安装在该目录下。例如：

\\target_computer\C$\Program Files\Microsoft SQL Server

安装源文件

用于远程安装的安装程序文件的位置。

SQL 安装程序

SQL 安装程序

请参见

执行无值守安装


高级安装选项

选择"安装选项"安装程序屏幕中的"高级"选项后，"高级选项"对话框提供三种选择。

选项

记录无值守 .ISS 文件

创建用于无值守安装的安装程序初始化文件。

注册表重建

重建损坏安装的注册表。

维护故障转移群集的虚拟服务器

更改现有群集，例如修改名称、添加和删除群集的节点。

请参见

执行无值守安装

重建注册表

安装虚拟服务器配置

SQL Server 语言支持


安装虚拟服务器配置

本节主题提供了有关在安装和维护故障转移群集时使用的安装程序屏幕信息。


故障转移群集：定义虚拟服务器

使用"故障转移群集"屏幕定义新群集的虚拟服务器或维护现有群集的虚拟服务器定义。可以添加或删除 IP 地址，每个虚拟服务器可以有多个 IP 地址。

选项

虚拟服务器名称

显示虚拟服务器的网络名称。用户连接到该虚拟服务器时将看到此名称。

当升级到群集时，在"虚拟服务器名称"对话框中输入此名称。

IP 地址

输入 IP 地址或用于连接虚拟服务器的地址。

子网

显示 MSCS 提供的子网。

网络

显示安装 MSCS 时指派给每个子网的网络名称。

添加

向命名虚拟服务器中添加指定的 IP 地址和子网。

删除

从命名虚拟服务器删除指定的 IP 地址和子网。

请参见

安装故障转移群集前的准备工作

创建故障转移群集

升级到 SQL Server 2000 故障转移群集


群集管理屏幕

使用"群集管理"屏幕查看 Microsoft® SQL Server™ 2000 提供的群集定义，如果需要，可以对其进行更改。为虚拟服务器指定节点后，安装程序将安装或卸载每个节点上的 SQL Server 二进制文件。

注意 如果使用仲裁资源修改虚拟服务器的节点列表，则群集可能无法正确地进行故障转移。有关更多信息，请参见修改节点列表警告。

选项

可用节点

可添加到当前虚拟服务器定义中的计算机列表。如果想添加的计算机此时不可用，可以在以后运行安装程序，将其添加到虚拟服务器定义中。

配置节点

当前虚拟服务器定义中当前配置的计算机列表。列表顶部的计算机为首选节点。

不可用的节点

当前脱机或不能添加到群集定义中的计算机。

添加

将所选的可用节点添加到配置节点列表。

删除

从配置节点列表删除所选的配置节点。

请参见

故障转移群集

维护故障转移群集

群集磁盘选择屏幕

升级到 SQL Server 2000 故障转移群集


群集磁盘选择屏幕

安装新的虚拟服务器或升级到群集时，使用"群集磁盘选择"屏幕选择群集组。群集组由组内的一个或多个共享群集磁盘构成，一个群集组最多可包含一个 Microsoft® SQL Server™ 虚拟服务器。"群集磁盘选择"屏幕只列出将共享群集磁盘作为资源添加的组。有关群集磁盘的更多信息，请参见创建故障转移群集。

注意 不要选择仲裁磁盘（列表中的最后一个组），因为必须将仲裁磁盘视为特殊资源。如果选择仲裁磁盘为群集组，群集可能会出现故障。当您选择仲裁磁盘时，屏幕上将出现警告信息。有关更多信息，请参见仲裁磁盘选择警告。

使用小群集时，仲裁磁盘可能是唯一的选择。请仅在测试或研究故障转移群集时使用它。

重要 永远不要将仲裁组用于生产目的。

请参见

故障转移群集

维护故障转移群集

修改节点列表警告


仲裁磁盘选择警告

如果选择"群集磁盘选择"屏幕上的仲裁磁盘（列表中的最后一组），将出现下面的警告信息。该警告信息在 Microsoft® Windows NT® 4.0 和 Microsoft Windows® 2000 中都会出现。

强烈建议不要在 SQL Server 上使用仲裁组。

在 Windows 操作系统中，仲裁磁盘是一种特殊的资源。如果选择仲裁磁盘，以后可能会限制 Microsoft® SQL Server™ 对群集节点子网的所有权。但是，仲裁组的所有者列表必须包括群集中所有节点。

例如，可能存在一个双节点群集（节点 1 和节点 2），SQL Server 设置为使用仲裁磁盘组。如果后来将 SQL Server 修改成在虚拟服务器定义中只有节点 1，则仲裁磁盘组将无法进行到节点 2 的故障转移。在节点 1 的故障事件中，不仅丢失了虚拟 SQL Server，还丢失了整个 MSCS 群集。

只有 Windows NT 4.0 才是这样。在 Windows 2000 中，节点列表被忽略，仲裁磁盘组总能够故障转移到群集配置的任何节点上。但是，另一个问题又产生了。在前面的例子中，节点 2 上没有可用的 SQL Server 程序文件，但群集组可以进行到节点 2 的故障转移。在这种情况下，SQL Server 无法在节点 2 上运行，而包含仲裁磁盘的群集组总能进行故障转移，结果使 SQL Server 无法使用。

有关仲裁磁盘的更多信息，请参见 Windows NT 文档。

请参见

群集磁盘选择屏幕

修改节点列表警告

创建故障转移群集

故障转移群集的相关性


修改节点列表警告

在"群集管理"屏幕中，如果修改使用仲裁资源的 Microsoft® SQL Server™ 2000 虚拟服务器的节点列表，则会使用警告。如果修改了此类节点列表，则单击"下一步"时会出现下列警告：

修改仲裁资源的节点列表可能会使群集无法正确地进行故障转移。确实要这样做吗？

仲裁资源本身无法故障转移到任何未选作虚拟服务器定义一部分的服务器上。这可能会损害故障转移群集的可用性。有关更多信息，请参见 Microsoft Windows NT® 文档。

说明  在 Microsoft Windows® 2000 上运行 SQL Server 2000 时不会出现该问题。

请参见

仲裁磁盘选择警告

创建故障转移群集

故障转移群集的相关性


执行无值守安装

可以执行 Microsoft® SQL Server™ 2000 的无值守安装，此安装自动使用存储信息在安装程序屏幕完成项目输入。若要在不同的计算机上执行几个相同配置的 SQL Server 安装，无值守安装比较方便。无值守安装需要一个安装程序初始化文件，有几种不同的方法可创建该文件。

默认情况下，每次使用安装程序屏幕进行 SQL Server 安装时，所选择的选项都被记录进安装程序初始化文件 (Setup.iss) 中。Setup.iss 存放在系统根目录 (%windir%) 下，用于以后提供安装设置。

说明 不能执行无值守安装来安装 Microsoft SQL Server 2000 的故障转移群集。

使用记录无值守选项创建安装文件

在安装程序中，如果选择"高级选项"屏幕中的"记录无值守 .ISS 文件"选项，则在安装屏幕上选择的每个后续选项都记录进存储于系统根目录的 Setup.iss 文件中。SQL Server 文件并不在这一进程中安装。然后，可以直接运行 Setup.iss 文件，或者如有必要，在文本编辑器中进行修改。

记录无值守安装文件

SQL 安装程序

SQL 安装程序

SQL Server 光盘上的示例安装文件

Microsoft SQL Server 2000 光盘上包括几个示例安装程序初始化文件，同时还包括与适当的初始化文件一同运行安装程序的批处理文件。

客户端安装、典型安装和自定义安装包括示例初始化文件。（自定义安装文件包括所有功能。）下表显示的是用于无值守安装的文件。这些文件位于 SQL Server 2000 标准版、个人版和企业版光盘的根目录下。

无值守安装类型 | 示例批处理文件 | 示例安装程序初始化文件
SQL Server 典型安装。 | Sqlins.bat | Sqlins.iss
仅客户端工具：包括管理工具、客户端连接工具及其它工具（不包括服务器）。 | Sqlcli.bat | Sqlcli.iss
SQL Server 的自定义安装： 包括所有组件。 | Sqlcst.bat | Sqlcst.iss

说明 光盘上还包括与 Smssql.pdf 一起使用的批处理文件，此文件是一个包定义格式文件，用于在 SMS 中创建 SQL Server 包。有关更多信息，请参见使用 SMS 安装 SQL Server。

手动创建初始化文件

对于示例安装文件中所不包含的安装选项，必须使用文本编辑器创建自定义安装文件。例如：

  30. 这些示例安装文件将 SQL Server 服务指派给本地系统帐户。若要在无值守安装期间指派域用户帐户，必须修改安装文件。

  31. 通常情况下，只有 SQL Server 2000 的默认实例才使用无值守安装，但可以创建安装文件安装命名实例。

如果出于这样或那样的目的需要手动创建自定义的安装程序初始化文件，请参见手动创建安装文件。

运行无值守安装

可以使用示例批处理文件和安装程序初始化文件运行无值守安装，或者使用任何方法创建的自定义或非自定义安装文件，直接从命令提示符下运行 SQL Server 安装程序。

运行无值守安装

命令提示符

命令提示符

请参见

安装类型：典型、最小或自定义

如何记录无值守安装文件（安装程序）

手动创建安装文件


手动创建安装文件

当选择 Microsoft® SQL Server™ 2000 安装程序中的"记录无值守"选项时，可以交互式创建自定义安装程序初始化文件。还可以手工编辑文件，进一步改进和自定义安装程序初始化文件。

使用文本编辑器创建或修改安装文件

可以使用文本编辑器修改使用"记录无值守 .ISS 文件"选项生成的 Setup.iss 文件。还可以修改 SQL Server 2000 光盘上的某个示例安装文件 (*.iss)，或者创建自己的安装文件。

若要修改 SQL Server 光盘上某个示例安装程序初始化文件，则在文本编辑器中打开该文件并按需要进行修改。此文件的格式应与 Microsoft Windows® 初始化文件格式保持一致，并以 .iss 文件扩展名保存此文件。

示例安装程序初始化文件的格式

安装程序初始化文件是使用标准 Windows .ini 文件格式的文本文件。在随后的表中，将描述用于 Microsoft SQL Server 2000 典型安装的示例安装程序初始化文件的各个组成部分。可以从 SQL Server 光盘的根目录下找到此示例文件 (Sqlins.iss)。

说明 为 SQL Server 2000 命名实例创建安装文件时，必须指明要安装的实例名称以及在安装屏幕之间移动所需的路径。必须修改"实例名"对话框 [DlgInstanceName] 部分，以及安装文件中凡是出现实例名的地方。

[InstallShield Silent]

此部分是 InstallShield 所必需的。请不要更改其中的值。

条目 | 值 | 描述
版本 | v5.00.000 | InstallShield 静默响应文件的版本。
文件 | Response File | 表明这是响应文件。

[File Transfer]
条目 | 值 | 描述
OverwriteReadOnly | NoToAll | 不要重写只读文件。

[DlgOrder]

按对话框在值守安装过程中出现的顺序列出每个对话框。此部分中的列表必须和安装程序初始化文件的其它节相应。

条目 | 值 | 描述
Dlg0 | SdWelcome-0 | 初始化对话框
计数 | 14 | 此节列出的对话框数
Dlg1 | DlgMachine-0 | 下一个对话框
Dlg2 | DlgInstallMode-0 | 下一个对话框
Dlg3 | SdRegisterUser-0 | 下一个对话框
Dlg4 | SdLicense-0 | 下一个对话框
Dlg5 | CDKEYDialog-0 | 下一个对话框
Dlg 6 | DlgClientServer-0 | 下一个对话框
Dlg7 | DlgInstanceName-0 | 下一个对话框
Dlg8 | SetupTypeSQL-0 | 下一个对话框
Dlg9 | DlgServices-0 | 下一个对话框
Dlg10 | DLGSqlSecurity-0 | 下一个对话框
Dlg11 | DlgCollation-0 | 下一个对话框
Dlg12 | DlgServerNetwork-0 | 下一个对话框
Dlg13 | SdStartCopy-0 | 下一个对话框
Dlg14 | SdFinish-0 | 前一个对话框

[SdWelcome-0]

对应于"欢迎"对话框。

条目 | 值 | 描述
结果 | 1 | 下一页

[DlgMachine-0]

对应于"计算机名"对话框。

条目 | 值 | 描述
类型 | 1 | 本地计算机
结果 | 1 | 下一页

[DlgInstallMode-0]

对应于"安装选择"对话框。

条目 | 值 | 描述
类型 | 1 | 创建新实例
结果 | 1 | 下一页

[SdRegisterUser-0]

对应于"用户信息"对话框。

条目 | 值 | 描述
szName | <user name> | 用户名称；不需要公司名称。
结果 | 1 | 下一页。

[SdLicense-0]

对应于"软件许可协议"对话框。

条目 | 值 | 描述
结果 | 1 | 是

[CDKEYDialog-0]

对应于"CD-Key"对话框。

条目 | 值 | 描述
svCDKey | <CD key value> | 为每个安装指定
结果 | 1 | 下一页

[DlgClientServer-0]

对应于"安装定义"对话框。

条目 | 值 | 描述
类型 | 2 | 服务器和客户端工具
结果 | 1 | 下一页

[DlgInstanceName-0]

对应于"实例名称"对话框。

条目 | 值 | 描述
InstanceName | MSSQLSERVER | 默认实例名称（始终相同）。
InstanceName | <instance name> | 命名实例名称。
结果 | 1 | 下一页。

[SetupTypeSQL-0]

对应于"安装类型"对话框。

条目 | 值 | 描述
szDir | %PROGRAMFILES%\Microsoft SQL Server | SQL Server 程序文件的安装目录。
结果 | 301 | 典型 (301) （302 = 最小，303 = 自定义）。
szDataDir | %PROGRAMFILES%\Microsoft SQL Server | SQL Server 数据文件的安装目录（与程序文件相同）。

[DlgServices-0]

对应于"服务帐户"对话框。

条目 | 值 | 描述
本地域 | 3855 <other numeric value> | 对每个服务使用同一帐户。 若要自定义每个服务的设置，请参见安装程序初始化文件详细信息。
自动启动 | 15 | 启用自动启动服务。
结果 | 1 | 下一页。

[DlgSQLSecurity-0]

对应于"身份验证"对话框。下面的选项包括示例 Sqlins.iss 文件中没有的选项。

条目 | 值 | 描述
LoginMode | -1 | 使用系统默认安全设置。 Microsoft Windows NT® 默认设置为 Windows 身份验证模式。 Microsoft Windows 98 默认设置为混合模式，且无 sa 密码。
LoginMode | 1 | Windows 身份验证模式。
LoginMode | 2 | 混合模式。
szPwd | <choice of password> | 仅与混合模式安全设置一起使用。
结果 | 1 | 下一页。

[DlgCollation-0]

对应于"排序规则设置"对话框。

条目 | 值 | 描述
collation_name | ' ' | 空白时，使用系统默认排序规则。
collation_name | <collation designator> | 由用户选定。有关更多信息，请参见选择 SQL 排序规则。

[SdServerNetwork-0]

对应于"网络库"对话框。

条目 | 值 | 描述
NetworkLibs | 255 245 15 | 命名管道和 TCP/IP。 值 245 指仅 TCP/IP。 值 15 指仅命名管道。 若要自定义网络库设置，请参见安装程序初始化文件详细信息。
TCPPort | 1433 | TCP/IP 的端口地址。
TCPPrxy | 默认值 | 默认代理服务器或输入的代理服务器。
NMPPipeName | \\.\pipe\sql\query | 管道名。
结果 | 1 | 下一页。

[SdStartCopy-0]

对应于"开始复制文件"对话框。

条目 | 值 | 描述
结果 | 1 | 下一页。

[SdFinish-0]

对应于"安装完成"对话框。

条目 | 值 | 描述
结果 | 1 | 下一页。
bOpt1 | 0 | "库存"对话框的占位符。
bOpt2 | 0 | "库存"对话框的占位符。

请参见

执行无值守安装

安装程序初始化文件详细信息


安装程序初始化文件详细信息

创建自定义安装程序初始化文件时，"服务帐户"和"网络库"对话框中包含其它用于无值守安装的选项。

服务帐户对话框

若要自定义每项服务的设置，可计算本地域和自动启动条目的值。

本地域

如果希望 SQL Server 和 SQL Server 代理服务使用不同的登录帐户，可以计算应输入的本地域值。本地域值是下表中的值的按位逻辑"或"组合。有关更多信息，请参见 |（按位 OR）。

服务 | 使用的帐户 | 十六进制值
SQL Server | 本地系统帐户 | x0000000F
SQL Server 代理 | 本地系统帐户 | 0x00000F00
SQL Server | 域用户帐户 | 0x000000F0
SQL Server 代理 | 域用户帐户 | 0x0000F000

如果"域用户"帐户被用于任一服务，则必须在安装程序初始化文件中添加附加条目。

当 SQL Server 服务使用域帐户时，安装程序会查找以下条目的值：

  32. SQLDomain = <domain name>

  33. SQLDomainAcct = <domain user account>

  34. SQLDomainPwd = <domain password:an encrypted password available only using setup screens>

当 SQL Server 代理服务使用域帐户时，安装程序会查找以下条目的值：

  35. AgtDomain = <domain name>

  36. AgtDomainAcct = <domain user account>

  37. AgtDomainPwd = <domain password:an encrypted password available only using setup screens>
自动启动

"自动启动"选项的值是一个使用下列十六进制值的按位逻辑"或"组合：

Autostart SQL Server = 0x0000000F

Autostart SQL Server Agent = 0x000000F0

某一服务的值为零 (0) 则表明该服务未"自动启动"，需要手工启动。

网络库对话框

若要自定义网络库设置，可以计算"网络库"对话框内 NetworkLibs 条目的值。此 NetworkLibs 值是下表所示值的按位逻辑"或"组合。设置了网络库后，必须将附加信息输入到安装程序初始化文件内（如第三列所示）。

连接服务器时使用的网络库 | 按位"或"运算中使用的十六进制值 | 安装程序查找的附加信息
命名管道 | 0xF | NMPPipeName = <named pipe name>
TCP/IP 套接字 | 0xF0 | TCPPort = <port number> TCPPrxy = <Remote Winsock proxy address>
NW 链接 | 0xF000 | NWLinkObj = <Novell Bindary service name>
Apple Talk | 0xF0000 | ApplObj = <Apple Talk service object>
Banyan VINES | 0xF00000 | BanyanObj = <StreetTalk service name>

请参见

服务帐户

网络库

执行无值守安装


使用 SMS 安装 SQL Server

可以使用 Microsoft® Systems Management Server (SMS) 1.2 或更高版本，在企业内部运行 Microsoft Windows NT® 或 Microsoft Windows™ 2000 的多台服务器计算机上自动安装 Microsoft SQL Server™ 2000。

SQL Server 光盘包含包定义格式 (PDF) 文件 (Smssql.pdf)。此文件可以在 SMS 中自动创建 SQL Server 包。此后就可以分发并在 SMS 计算机上安装 SQL Server 包。

Smssql.pdf 文件包含关于如何在典型安装中与 Sqlins.iss（安装程序初始化文件）一起运行批处理文件 Smssqins.bat 的说明。SQL Server 光盘中包含这两个文件。

若要创建自定义命令文件，请编辑 Smssql.pdf 的一个复本。

请参见

执行无值守安装

手动创建安装程序文件


重建注册表

"高级选项"安装屏幕中的"注册表重建"选项可用于重建损坏的 Microsoft® SQL Server™ 安装的注册表。该进程仅修复注册表，不修复数据错误或 master 数据库。

重要 若要重建注册表，必须使用与初始安装过程相同的输入选项输入安装信息。如果您不知道或不确定此信息，请不要使用这种注册表重建进程。若要还原注册表，必须卸载并重新安装 SQL Server。

SQL 安装程序

SQL 安装程序

请参见

如何重建 master 数据库（重建 Master 实用工具）


处理 SQL Server 2000 的命名实例和多实例

使用 Microsoft® SQL Server™ 2000，可以选择在一台计算机上安装 SQL Server 的多个复本或多个实例。当设置新的 SQL Server 2000 安装或维护现有安装时，可以将其指定为：

  38. SQL Server 的默认实例。

此实例由运行它的计算机的网络名称标识。使用以前版本 SQL Server 客户端软件的应用程序可以连接到默认实例。SQL Server 6.5 版或 SQL Server 7.0 版服务器可作为默认实例操作。但是，一台计算机上每次只能有一个版本作为默认实例运行。

  39. SQL Server 的命名实例。

    该实例通过计算机的网络名称加上实例名称以<计算机名称>\<实例名称>格式进行标识。应用程序必须使用 SQL Server 2000 客户端组件连接到命名实例。计算机可以同时运行任意数目的 SQL Server 命名实例。同时，命名实例还可作为现有的 SQL Server 6.5 版或 SQL Server 7.0 版安装运行。该实例名不能超过 16 个字符。

    新实例名称必须以字母、"和"符号（&）或下划线 (_) 开头，可以包含数字、字母或其它字符。SQL Server 系统名称和保留名称不能用作实例名称。例如，"default"一词不能用作实例名称，因为它是安装程序使用的保留名称。

在使用 SQL Server 2000 个人版、SQL Server 2000 标准版或 SQL Server 2000 企业版时，单个和多个 SQL Server 2000 实例（默认或命名）都是可用的。

默认实例

在同时运行 SQL Server 7.0 的计算机上无法安装 SQL Server 2000 的默认实例。必须将 SQL Server 7.0 安装升级到 SQL Server 2000 默认实例，或者保留 SQL Server 7.0 的默认实例并安装 SQL Server 2000 的命名实例。

在运行 SQL Server 6.5 的计算机上可以安装 SQL Server 2000 的默认实例，但是 SQL Server 6.5 安装和 SQL Server 2000 默认实例无法同时运行。必须使用 SQL Server 2000 的 vswitch 命令提示实用工具在二者之间切换。

多实例

当一台计算机安装有多个 SQL Server 2000 实例时就出现多实例。每个实例的操作都与同一台计算机上的其它任何实例分开，而应用程序可以连接任何实例。在单台计算机上可以运行的实例数目取决于可用资源。SQL Server 2000 最多支持 16 个实例。

在未安装过 SQL Server 的计算机上安装 SQL Server 2000 时，安装程序指定安装默认实例。但是，通过清除"实例名"对话框的"默认"选项，也可以选择将 SQL Server 2000 安装为命名实例。

可以在下列任意时间安装 SQL Server 2000 命名实例：安装 SQL Server 2000 默认实例之前、安装 SQL Server 2000 默认实例之后，或者取代安装 SQL Server 2000 默认实例。

每个命名实例都由非重复的一组服务组成，并且对于排序规则和其它选项可以有完全不同的设置。目录结构、注册表结构和服务名称都反映了所指定的具体实例名称。

请参见

多个 SQL Server 实例

SQL Server 2000 实例的命名规则

命名实例的网络协议

多个 SQL Server 实例的文件位置

处理 SQL Server 的实例和版本


SQL Server 2000 实例的命名规则

由于可将 Microsoft® SQL Server™ 2000 设置为包含一个或多个命名实例和一个默认实例（也可无），所以要用新命名规则来区分不同的实例。

在早期版本中，SQL Server 安装由计算机名标识。在 SQL Server 2000 中，只有默认实例由计算机名标识。命名实例由计算机名和实例名的组合标识。此实例名也反映在相关 SQL Server 服务的名称中。

说明 每台计算机上只能有一个 SQL Server 默认实例。该默认实例可以是原样的 SQL Server 6.5 版或 SQL Server 7.0 版安装，也可以是设置为默认实例的 SQL Server 2000 安装。无论是何种情况，默认实例都使用同一服务名称、注册表结构、网络监听点和其它已在 SQL Server 7.0 中使用的默认设置。

默认实例和命名实例的服务名称

安装 SQL Server 默认实例时，服务名称保持为 MSSQLServer 和 SQLServerAgent（与 SQL Server 7.0 中相同)。

安装 SQL Server 命名实例时，服务名称更改为：

  40. MSSQL$InstanceName（用于 MSSQLServer 服务）。

  41. SQLAgent$InstanceName（用于 SQLServerAgent 服务）。

Microsoft 分布式事务处理协调器和 Microsoft 搜索服务只安装一次，可供所有已安装的 SQL Server 实例同时使用。

请参见

多个 SQL Server 实例


命名实例的网络协议

安装 Microsoft® SQL Server™ 2000 默认实例时将启用标准网络地址。例如，命名管道使用 \\.\pipe\sql\query 和 TCP/IP 套接字连接到端口 1433。

选择命名实例时，仅命名管道、TCP/IP 和 NWLink IPX/SPX 协议可受支持。命名管道的网络地址默认为 \\Computername\Pipe\MSSQL$instancename\Sql\Query。第一次启动实例时，（默认情况下）将动态选择由 TCP/IP 和 NWLink IPX/SPX 所使用的端口地址。

请参见

与多个实例进行通讯

多个 SQL Server 实例

网络库


多个 SQL Server 实例的文件位置

Microsoft® SQL Server™ 2000 的每个命名实例都有特定位置存放程序文件，而另一个特定位置存放数据文件，这一点与 SQL Server 默认实例有所不同。

说明 命名实例不必和多实例相同。可以拥有一个命名实例，也可以拥有多个命名实例。有关更多信息，请参见 多个 SQL Server 实例。

对于每个已安装的 SQL Server 命名实例，默认目录如下：

  42. \Program Files\Microsoft SQL Server\MSSQL$InstanceName\Binn 存放可执行文件。

  43. \Program Files\Microsoft SQL Server\MSSQL$InstanceName\Data 存放数据文件。

所有实例（包括默认实例和命名实例）的共享工具都位于 \Program Files\Microsoft SQL Server\80\Tools 目录中。可以为多实例的程序和数据文件指定除默认位置外的其它文件路径。

最简单的 Microsoft SQL Server 2000 多实例情形如下图所示：默认实例和一个命名实例 Instance1。命名实例有其完整的一套数据文件和可执行文件。默认实例和命名实例所使用的公用文件都安装在文件夹 \Program Files\Microsoft SQL Server\80 中。

说明 如果将 Microsoft SQL Server 7.0 版作为默认安装与 SQL Server 2000 命名实例同时使用，则程序和数据文件都位于 C:\Mssql7 下，这是 SQL Server 7.0 文件的默认位置。

寻找安装位置

如果不能确定实例路径，可以查询注册表了解某特定实例的安装路径。插入适当的实例名称后，在命令提示符下运行以下命令：

C:\> REG QUERY HKLM\Software\Microsoft\Microsoft SQL Server\InstanceName\MSSQLServer\Setup\SQLPath

说明 Microsoft Windows® 2000 资源工具包提供 REG QUERY 工具。

请参见

SQL Server 2000 的文件路径

多个 SQL Server 实例


删除 SQL Server 2000 多实例

删除Microsoft® SQL Server™ 2000 默认实例或命名实例时，同时将删除该实例的数据文件和注册表键值。除非从计算机上删除所有 SQL Server 2000 实例，否则无法删除工具，因为所有已安装的实例共享这些工具。

若要删除单个 SQL Server 2000 实例或删除所有安装的实例，请参见如何删除 SQL Server 2000 (Windows)。


处理 SQL Server 的实例和版本

Microsoft® SQL Server™ 2000 中的多实例为使用已安装在计算机上的 Microsoft SQL Server 早期版本提供了多种增强途径。安装和运行 SQL Server 2000 的同时，可以原样保留以前的安装。例如，可以同时运行 SQL Server 7.0 版和 SQL Server 2000 的命名实例，或者可以在版本切换配置中与 SQL Server 2000 一切运行 SQL Server 6.5 版。如果需要在同一台计算机上安装三种不同版本的 SQL Server，有多种实现方法。

另外，SQL Server 所有版本的用户均可安装并同时运行 SQL Server 2000 的多个实例以及一个或多个早期版本。

SQL Server 2000 与以前的安装组合使用的情形包括：

  44. 与 SQL Server 2000 的默认实例或命名实例一起使用 SQL Server 6.5 版。

  45. 与 SQL Server 2000 命名实例一起运行 SQL Server 7.0。

  46. 处理 SQL Server 的三个版本：SQL Server 6.5 版、SQL Server 7.0 版和 SQL Server 2000。

说明 由于引入了多个实例，对于 SQL Server 2000 而言，默认实例是一个新的概念。如果 SQL Server 6.5 版或 SQL Server 7.0 版与 SQL Server 2000 安装在同一台计算机上，则 SQL Server 6.5 版或 SQL Server 7.0 版均可作为 SQL Server 的默认实例运行。（默认实例由运行它的计算机的网络名称标识。）有关更多信息，请参见处理 SQL Server 2000 的命名实例和多实例。

使用 SQL Server 7.0 的 SQL Server 联机丛书

当在计算机上保留 Microsoft SQL Server 7.0 版，并安装 SQL Server 2000 的命名实例时，SQL Server 7.0 的 SQL Server 联机丛书仍保留在原来的位置：即 C:\Mssql7\Books 上。在这种并行配置中，SQL Server 7.0 的联机丛书仍可从"开始"菜单中的 SQL Server 7.0 程序组中访问。

说明 当 SQL Server 2000 的命名实例与 SQL Server 7.0 一起安装时，其它共享工具（如代码示例、脚本和模板）不是这样。所有来自 7.0 安装的其它共享工具被复制到存储位置，同时指针指向替换这些工具的早期版本的 SQL Server 2000 工具。SQL Server 7.0 的联机丛书文件不是这样被重定向 — 它们仍可使用。

当 SQL Server 7.0 升级到 SQL Server 2000 的默认版本时，也将升级 7.0 联机丛书文件。即，用 SQL Server 2000 联机丛书替换它们。

不管您是否安装了 SQL Server 7.0，都可以访问 SQL Server 7.0 文档中的信息。有关更多信息，请参见如何访问 SQL Server 7.0 的 SQL Server 联机丛书。

请参见

与 SQL Server 2000 一起使用 SQL Server 6.5

与 SQL Server 2000 命名实例一起运行 SQL Server 7.0

处理 SQL Server 的三个版本


与 SQL Server 2000 一起使用 SQL Server 6.5

如果已安装了 Microsoft® SQL Server™ 6.5 版，可以保留该 SQL Server 6.5 版安装，同时，还可以安装 SQL Server 2000 的默认实例或命名实例。这里不涉及版本升级。但是，可用版本切换在 SQL Server 6.5 版和 SQL Server 2000 之间进行转换。另外，可使用 SQL Server 2000 工具控制 SQL Server 2000 和 SQL Server 6.5 版。

警告 安装 SQL Server 2000 后，SQL Server 6.5 版跟踪实用程序和其它早期工具将不再可用。

若要与 SQL Server 6.5 并存安装 SQL Server 2000：

  47. 应原样保留 SQL Server 6.5 配置。

  48. 安装 SQL Server 2000 时，在"实例名"对话框中选择默认实例或命名实例。

  49. 将版本从 SQL Server 6.5 切换到 SQL Server 2000 默认实例。

说明 建议不要从 SQL Server 2000 切换回 SQL Server 6.5。

下图显示在版本切换配置中与 SQL Server 2000 一起安装 SQL Server 6.5。

请参见

在 SQL Server 6.5 和 SQL Server 2000 之间切换

与 SQL Server 2000 命名实例一起运行 SQL Server 7.0

处理 SQL Server 的三个版本


与 SQL Server 2000 命名实例一起运行 SQL Server 7.0

可以在计算机上原样保留 Microsoft® SQL Server™ 7.0 版安装，同时，还可在同一台计算机上安装 SQL Server 2000 的命名实例。该配置使您得以同时运行原有的 SQL Server 7.0 安装和后来安装的 SQL Server 2000 命名实例，而无需使用 vswitch 命令提示实用工具。

若要与现有的 SQL Server 2000 命名实例一起运行原样的 SQL Server 7.0 安装，必须：

  50. 保持 SQL Server 7.0 版原样且无需将其升级到 SQL Server 2000。SQL Server 7.0 作为 SQL Server 默认实例运行，并通过运行它的计算机的网络名称对其进行标识。

  51. 安装 SQL Server 2000 命名实例，并通过运行它的计算机的网络名称和实例名同时对其进行标识。

下图说明此种配置。

请参见

如何安装 SQL Server 2000 命名实例（安装程序）

处理 SQL Server 的三个版本


处理 SQL Server 的三个版本

本主题描述处理 SQL Server 6.5 版、SQL Server 7.0 版和 SQL Server 2000 的两种情形。一种情形是同时安装三个版本，无版本升级，但 SQL Server 6.5 与 SQL Server 7.0 之间存在版本切换。另一种情形涉及 SQL Server 7.0 升级到 SQL Server 2000，然后 SQL Server 6.5 与 SQL Server 2000 之间进行版本切换。

以上任何一种情况下都可以安装 SQL Server 2000 的多命名实例。但是，同一时间只能运行两个不同版本的 SQL Server 版本，版本切换方式有两种：

  52. 在 SQL Server 6.5 和 SQL Server 7.0 之间切换。

  53. 在 SQL Server 6.5 和 SQL Server 2000 之间切换。
使用版本切换

若要在运行 SQL Server 2000 多实例的同时在 SQL Server 6.5 与 SQL Server 7.0 之间切换：

  54. 原样保留 SQL Server 6.5 配置。

  55. 原样保留 SQL Server 7.0 配置，无需将其升级到 SQL Server 2000。

  56. 安装一个或多个 SQL Server 2000 命名实例。

下图显示 SQL Server 2000 的命名实例和 SQL Server 7.0 版的现有安装如何同时运行。可将 SQL Server 6.5 版切换成默认实例以代替 SQL Server 7.0。

在将 SQL Server 7.0 版升级后，若要在 SQL Server 6.5 与 SQL Server 2000 之间进行版本切换，必须：

  57. 原样保留 SQL Server 6.5 配置。

  58. 安装 SQL Server 7.0，同时准备将 SQL Server 7.0 升级到 SQL Server 2000。

  59. 运行安装程序。当安装程序检测到 SQL Server 7.0 时，将 SQL Server 7.0 升级到 SQL Server 2000 的默认实例。（在"现有安装选项"对话框内选择"升级"，并选定"实例名"对话框内的"默认"复选框。）此时，SQL Server 7.0 安装将不复存在，它已由 SQL Server 2000 的默认实例代替。

下图显示以上配置及 SQL Server 2000 的三个命名实例。

请参见

从 SQL Server 7.0 升级到 SQL Server 2000

与 SQL Server 2000 一起使用 SQL Server 6.5

与 SQL Server 2000 命名实例一起运行 SQL Server 7.0


故障转移群集

在 Microsoft® SQL Server™ 2000 企业版中，SQL Server 2000 故障转移群集支持高度可用性。例如，在操作系统发生故障或执行计划的升级时，可配置故障转移群集以转移到故障转移群集配置中的任何其它节点。这样，可以将系统停机时间减到最少，从而提供高度的服务器可用性。

若要安装、配置和维护故障转移群集，请使用 SQL Server 安装程序。有关升级到 SQL Server 2000 故障转移群集的信息，请参见升级到 SQL Server 2000 故障转移群集。

使用故障转移群集进行以下操作：

  • 在故障转移群集内的多个节点上安装 SQL Server。此操作只受操作系统支持的节点数的限制。

在安装故障转移群集之前，必须安装 Microsoft Windows NT® 4.0 企业版、Microsoft Windows® 2000 Advanced Server 或 Windows 2000 Datacenter Server 以及 Microsoft 群集服务 (MSCS)。

使用故障转移群集必须遵从特定的安装步骤。有关更多信息，请参见安装故障转移群集和处理故障转移群集安装。

  • 为各虚拟服务器指定多个 IP 地址。

SOL Server 2000 允许使用所有可用的网络 IP 子网，以便在一个子网出现故障时可以通过另外的方法连接，并且提高了网络的可伸缩性。例如，如果使用单个网卡，当网络出现故障时会使通讯中断。但是，如果在服务器中有多个网卡，而每个网卡都可以在不同的 IP 子网上。即使一个子网出现故障，至少还有一个连接可以继续工作。如果一个路由器出现故障，而 MSCS 继续运行，则所有 IP 地址仍然有效。然而，如果本地计算机上的网卡出现故障，则通讯仍将中断。有关更多信息，请参见创建故障转移群集。

  • 从群集 SQL Server 配置的任何节点上管理故障转移群集。若要执行安装任务，必须从群集磁盘资源控制下的节点上进行安装。有关更多信息，请参见创建故障转移群集。

  • 允许一台虚拟服务器将故障转移到故障转移群集配置上的任何其它节点。有关更多信息，请参见创建故障转移群集。

  • 使用安装程序在故障转移群集配置中添加或删除节点。有关更多信息，请参见维护故障转移群集。

  • 在不影响其它节点的情况下，在故障转移群集内的任意节点上重新安装或重建虚拟服务器。有关更多信息，请参见维护故障转移群集。

  • 使用 Microsoft 搜索服务与故障转移群集执行全文查询。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。
支持多个实例

故障转移群集还支持多个实例。多实例支持使其更便于在故障转移群集环境中生成、安装和配置虚拟服务器。应用程序可以连接单个计算机上的每个实例，其方法与连接运行在不同计算机上的 SQL Server 实例基本相同。有关虚拟服务器的更多信息，请参见创建故障转移群集。

使用多实例支持可以隔离工作环境（例如，将测试同生产隔离）或易变的应用程序环境，并为同一台计算机中的各 SQL Server 实例设置不同的系统管理员。有关更多信息，请参见多个 SQL Server 实例。

请参见

故障转移群集构架


故障转移群集支持

在 Microsoft® SQL Server™ 2000 企业版中，SQL Server 2000 故障转移群集支持的节点数取决于所运行的操作系统：

  • Microsoft Windows NT® 4.0 企业版、Microsoft Windows® 2000 Advanced Server 和 Microsoft Windows 2000 Datacenter Server 支持双节点故障转移群集。

  • Windows 2000 Datacenter Server 最多支持四节点故障转移群集，包括主动/主动/主动/主动的故障转移群集配置。

故障转移群集支持以下工具、功能和组件：

  • Microsoft 搜索服务。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。

  • 多实例。有关更多信息，请参见故障转移群集。

  • SQL Server 企业管理器。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。

  • 服务控制管理器。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。

  • 复制。有关更多信息，请参见创建故障转移群集。

  • SQL 事件探查器。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。

  • SQL 查询分析器。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。

  • SQL 邮件。有关更多信息，请参见在故障转移群集中使用 SQL Server 工具。

故障转移群集不支持以下组件：

  • SQL Server 2000 Analysis Services

说明 SQL Server 6.5 版或 SQL Server 7.0 在故障转移群集配置下不支持 Microsoft 数据访问组件 (MDAC) 2.6。

在使用故障转移群集之前，请考虑下列事项：

  • 仅当运行 SQL Server 2000 实例时才应使用故障转移群集资源（包括 IP 地址和网络名称）。不应将这些资源用于其它目的，如文件共享。

  • 在故障转移群集配置中，SQL Server 2000 支持 Windows NT 4.0 企业版，但是要求 SQL Server 服务（SQL Server 和 SQL Server 代理程序）的服务帐户必须是群集内所有节点的本地管理员。

重要 SQL Server 2000 在故障转移群集中既支持命名管道，也支持 TCP/IP 上的 TCP/IP 套接字。尽管如此，仍强烈建议在群集配置中使用 TCP/IP 套接字。


创建故障转移群集

若要创建 Microsoft® SQL Server™ 2000 故障转移群集，必须创建并配置运行故障转移群集的虚拟服务器。在 SQL Server 安装过程中创建虚拟服务器。Microsoft Windows NT® 4.0 或 Microsoft Windows® 2000 不提供虚拟服务器。

若要创建故障转移群集，您必须是本地管理员，具有作为一项服务登录的权限，以及在故障转移群集内的所有计算机上作为操作系统的一部分进行操作的权限。

虚拟服务器的元素

虚拟服务器包含：

  • Microsoft 群集服务 (MSCS) 群集组中的一个或多个磁盘的组合。

    每个 MSCS 群集组最多可包含一台虚拟 SQL Server。

  • 每台虚拟服务器的网络名称。该网络名称是虚拟服务器的名称。

  • 用于连接到各虚拟服务器的一个或多个 IP 地址。

  • 一个 SQL Server 2000 实例，包括 SQL Server 资源、SQL Server 代理程序资源和全文资源。

    如果管理员在虚拟服务器内卸载 SQL Server 2000 实例，则虚拟服务器（包括所有 IP 地址和网络名称）也将从 MSCS 群集组中被删除。

故障转移群集可以在一台或多台实际的 Windows 2000 Advanced Server 或 Windows 2000 Datacenter Server 服务器上运行，也可以在参与群集节点的 Windows NT 4.0 企业版服务器上运行。但是，SQL Server 虚拟服务器始终以单个 Windows 2000 Advanced Server、Windows 2000 Datacenter Server 或 Microsoft Windows NT 4.0 企业版服务器出现在网络上。

命名虚拟服务器

SQL Server 2000 依赖于故障转移群集中的唯一注册表键值和服务名称，使操作在故障转移后继续正确进行。因此，为 SQL Server 2000 实例（包括默认实例）提供的名称在故障转移群集内的所有节点中以及故障转移群集内的所有虚拟服务器中都必须是唯一的。例如，如果所有实例都将故障转移到单台服务器，实例的服务名称和注册表键值将发生冲突。如果 INST1 是虚拟服务器 VIRTSRV1 上的一个命名实例，则在故障转移群集内，无论是作为故障转移群集配置的一部分还是作为独立安装实例，命名实例 INST1 都不能位于任何节点上。

另外，必须使用 VIRTUAL_SERVER\Instance-name 字符串连接虚拟服务器上运行的 SQL Server 2000 群集实例。如果使用群集实例在任何特定时间内碰巧驻留的计算机名称，则无法访问 SQL Server 2000 实例。SQL Server 2000 不在本地服务器的 IP 地址上监听，而仅在设置 SQL Server 2000 虚拟服务器时创建的群集 IP 地址上监听。

使用注意事项

在创建故障转移群集之前，需考虑下列事项：

  • 如果正在使用 Windows 2000 Address Windowing Extensions (AWE) API 以利用大于 3GB 的内存，则应确保在 SQL Server 的一个实例上配置的最大可用内存在故障转移到另一个节点后仍然可用。也就是说，如果故障转移节点的物理内存比原节点少，则 SQL Server 实例可能启动失败，或者可能在内存比在原节点上少的情况下启动。因此，必须：
    • 为群集内的各服务器提供相同数量的物理 RAM。

    • 确保所有实例的 max server memory设置的总和值小于故障转移群集内任一虚拟服务器上的最小可用物理 RAM 量。

    有关 AWE 的更多信息，请参见使用 Windows 2000 上的 AWE 内存。

  • 若需要在复制中采用具有高可用性的服务器，建议在故障转移群集上配置分发服务器时将 MSCS 群集文件共享用作快照文件夹。一旦服务器出故障，分发数据库将可用，并且可在分发服务器上继续配置复制。

    此外，创建发布时，应为其它快照文件的存储指定 MSCS 群集文件共享或将其指定为订阅服务器应用快照的位置。这样，快照文件就可用于群集的所有节点和必须访问该群集的所有订阅服务器。有关更多信息，请参见发布服务器、分发服务器和订阅服务器和备用快照位置。

  • 如果想要在故障转移群集中使用加密，则必须在故障转移群集中所有节点上安装服务器证书，该证书应带有虚拟服务器的完全限定的 DNS 名称。例如，如果具有一个双节点的群集（节点名称分别为 test1.redmond.corp.microsoft.com 和 test2.redmond.corp.microsoft.com）和一个虚拟 SQL Server"Virtsql"，则需要获得"virtsql.redmond.corp.microsoft.com"的证书，并在两个节点上都安装该证书。然后可以选取该 Server 网络实用工具中的"强制协议加密"复选框，配置您的故障转移群集使用加密。

  • 不能从 SQL Server 删除 BUILTIN/管理员帐户。IsAlive 线程运行于群集服务帐户而不是 SQL Server 服务帐户的上下文中。群集服务必须是该群集每个节点上的管理员组的一部分。如果删除 BUILTIN/管理员帐户，则 IsAlive 线程将不再能够创建信任连接，而且您将失去对虚拟服务器的访问权限。
创建故障转移群集

下面是使用安装程序创建故障转移群集的基本步骤：

  1. 确定创建虚拟服务器所需的信息（例如，群集磁盘资源、IP 地址和网络名称）以及故障转移可用的节点。

    用于故障转移群集的群集磁盘应全部位于单个群集组内，并且由运行安装程序的节点所拥有。在运行安装程序之前必须先进行此配置。通过 Windows NT 4.0 或 Windows 2000 中的群集管理器进行此配置。对每个要安装的虚拟服务器都需要有一个 MSCS 组。

  2. 启动安装程序以开始安装。输入了所有必需的信息后，安装程序将新的 SQL Server 二进制文件实例安装在群集内每一台计算机的本地磁盘上，而将系统数据库安装在指定的群集磁盘上。二进制文件以完全相同的路径安装在每个群集节点上，因此必须确保每个节点与群集中所有其它节点共享一个本地驱动器号。

    在 SQL Server 2000 中，故障转移期间只有数据库进行故障转移。在 SQL Server 6.5 版和 SQL Server 7.0 版中，故障转移期间 SQL Server 数据库和二进制文件都进行故障转移。

    如果由于某种原因出现资源（包括 SQL Server）故障，则这些服务（SQL Server、SQL Server 代理程序、全文检索和故障转移群集组中的所有服务）将故障转移至虚拟服务器中定义的任何可用节点。

  3. 安装一个 SQL Server 2000 实例，以创建一个新的虚拟服务器和所有资源。

如何创建新的故障转移群集

SQL Setup

SQL 安装程序

如何安装单节点故障转移群集

SQL Setup

SQL 安装程序

升级到 SQL Server 2000 故障转移群集

若要从 SQL Server 6.5 或 SQL Server 7.0 故障转移群集升级到 SQL Server 2000 故障转移群集，必须先对以前的安装取消群集。SQL Server 6.5 或 SQL Server 7.0 群集不能与故障转移群集位于同一台计算机中。有关升级的更多信息，请参见升级到 SQL Server 2000 故障转移群集。

从 SQL Server 6.5 主动/被动故障转移群集升级

SQL Setup

SQL 安装程序

从 SQL Server 6.5 主动/主动故障转移群集升级

SQL Setup

SQL 安装程序

从 SQL Server 7.0 主动/主动故障转移群集升级

SQL Setup

SQL 安装程序

从 SQL Server 7.0 主动/被动故障转移群集升级

SQL Setup


故障转移群集示例

下例说明如何配置 Microsoft® SQL Server™ 2000 故障转移群集。

CLUSTERNODEA 和 CLUSTERNODEB 是故障转移群集中的两台计算机。在 CLUSTERNODEA 上运行 SQL Server 安装程序，并创建一台名为"SQLCLUSTA"的虚拟服务器。然后，安装 SQL Server 2000 的默认实例，该实例既可在 CLUSTERNODEA 上运行又可在 CLUSTERNODEB 上运行。接下来，通过在连接字符串中将"SQLCLUSTA"指定为服务器名称连接该服务器。

在 CLUSTERNODEB 上再次运行安装程序。创建名为"SQLCLUSTB"的新虚拟服务器（属于另一个 Microsoft 群集服务 (MSCS) 群集组），并安装一个名为"Inst1"的实例，该实例既可在 CLUSTERNODEA 上运行又可在 CLUSTERNODEB 上运行。接下来，通过将"SQLCLUSTB\Inst1"指定为连接字符串连接该服务器。

两台虚拟服务器即在由 CLUSTERNODEA 和 CLUSTERNODEB 组成的 MSCS 群集中运行。而另一方面，它们又是彼此完全独立的。每台虚拟服务器驻留在不同的 MSCS 群集组中，并且各自有一组不同的 IP 地址、唯一的网络名称和驻留在不同的共享群集磁盘集上的数据文件。

MSCS 群集组中任一资源发生故障转移，则该组成员的所有资源也发生故障转移。对于 SQLCLUSTA，一旦达到故障转移阈值，磁盘资源、IP 地址、网络名称或虚拟服务器内的 SQL Server 2000 安装所出现的任何故障，都将导致该群集组的所有成员发生故障转移。

下图显示一个含有二进制文件和数据的两个节点的群集。在下图中，各虚拟服务器必须对存放数据/日志文件的磁盘具有独占所有权。

请参见

故障转移群集构架


升级到 SQL Server 2000 故障转移群集

当升级到 Microsoft® SQL Server™ 2000 故障转移群集时，只允许有一个默认实例。在升级到 SQL Server 2000 之前，使用 SQL Server 6.5 版或 SQL Server 7.0 中的群集向导对任何现有 SQL Server 6.5 或 SQL Server 7.0 群集实例取消群集。然后，在 SQL Server 2000 上运行 SQL Server 安装程序。

SQL Server 6.5 或 SQL Server 7.0 故障转移群集不能与 SQL Server 2000 故障转移群集共存于同一台计算机中。对于 SQL Server 6.5 或 SQL Server 7.0，在主动/主动配置中或主动/被动配置中（该配置中有一台服务器包含非群集 SQL Server）存在名称冲突。两台服务器都是默认实例。

重要 如果已安装了 SQL Server 2000，则无法在 SQL Server 6.5 或 SQL Server 7.0 中运行群集向导。

对于 SQL Server 2000，必须使用这些服务（SQL Server、SQL Server 代理程序和群集组中的所有服务）的域帐户。如果计算机运行在 Microsoft Windows NT® Server 4.0 企业版上，则该帐户必须是群集内所有计算机上的管理员。

说明 如果正在 SQL Server 6.5 或 7.0 故障转移群集上使用复制并准备升级到 SQL Server 2000 故障转移群集，则必须对以前的安装取消群集。删除所有发布、删除复制，然后在升级后重新配置复制。在将来的版本中从 SQL Server 2000 升级将不必这样做。

从 SQL Server 6.5 主动/被动故障转移群集升级

SQL Setup

SQL 安装程序

从 SQL Server 6.5 主动/主动故障转移群集升级

SQL Setup

SQL 安装程序

从 SQL Server 7.0 主动/主动故障转移群集升级

SQL Setup

SQL 安装程序

从 SQL Server 7.0 主动/被动故障转移群集升级

SQL Setup


处理故障转移群集安装

安装 Microsoft® SQL Server™ 2000 故障转移群集时，必须：

  • 确保正确安装操作系统，且操作系统支持故障转移群集。有关安装故障转移群集前的准备工作的更多信息，请参见安装故障转移群集前的准备工作。有关安装顺序的更多信息，请参见安装故障转移群集。

  • 考虑故障转移群集是否支持想要使用的 SQL Server 工具、功能和组件。有关更多信息，请参见故障转移群集支持。

  • 考虑故障转移群集是否依赖于想要使用的产品。有关更多信息，请参见故障转移群集的相关性。

  • 考虑如何创建新的故障转移群集。有关创建新的故障转移群集配置的更多信息，请参见创建故障转移群集。

  • 查看从 SQL Server 6.5 版或 SQL Server 7.0 版群集升级到 SQL Server 2000 故障转移群集的指导说明。有关更多信息，请参见升级到 SQL Server 2000 故障转移群集。


安装故障转移群集前的准备工作

在安装 Microsoft® SQL Server™ 2000 故障转移群集之前，必须选择计算机运行的操作系统。可以使用 Microsoft Windows NT® 4.0 企业版、Microsoft Windows® 2000 Advanced Server 或 Microsoft Windows 2000 Datacenter Server。还必须安装 Microsoft 群集服务 (MSCS)。

预安装一览表

在开始安装过程之前，请验证：

  • 在网络接口卡 (NIC) 和驱动器/阵列 (SCSI) 控制器之间没有 IRQ 共享。尽管确有某些硬件支持此种共享，但不推荐使用。

  • 您的硬件列在 Windows NT 硬件兼容性列表中。

    有关所支持硬件的完整列表，请参见 Microsoft Web 站点 Hardware Compatibility（硬件兼容性）列表。

    硬件系统必须按群集分类显示。同时添加的个别群集组件不构成核准系统。只有作为群集解决方案购买的系统和列在群集组中的系统才是核准系统。当检查列表时，按分类指定群集。所有其它分类用于 OEM。

  • 同时在所有节点上运行 Windows NT 4.0 企业版或 Windows 2000 Advanced Server 或 Windows 2000 Datacenter Server 之前，MSCS 已完全安装在至少一个节点上。

    当使用 MSCS 时，必须确定一个节点处于共享的 SCSI 总线的控制下，而该总线优先于联机的其它节点。没有这样做可能会导致应用程序故障转移进入联机挂起状态。结果是，群集或者在其它节点上失败，或者完全失败。然而，如果硬件制造商有专用的安装过程，则应遵从硬件制造商的说明。

  • WINS 是根据 Microsoft Web 站点 Product Support Services 中的以下文章安装的：

    Q258750 Recommended Private "Heartbeat" Configuration on Cluster Server（Q258750 推荐的群集服务器上的专用"心跳信号"配置）

  • 两台服务器上的可群集磁盘的磁盘驱动器号必须相同。

  • 在开始 SQL Server 安装程序之前，对所有专用网卡禁用 NetBIOS。

  • 已清除所有节点中的系统日志，并再次查看了系统日志。确保在继续操作之前，日志中没有任何错误信息。


安装故障转移群集

如果是在 Microsoft Windows NT® 4.0 企业版上安装 Microsoft® SQL Server™ 2000 故障转移群集，则必须按照下面指定的顺序安装程序。但是，如果是在 Microsoft Windows® 2000 Advanced Server 或 Windows 2000 Datacenter Server 上安装故障转移群集，则没有这个必要。

注意 如果未按照下列顺序安装程序，则软件产品会在安装时失败，并需要完全重新初始化磁盘并重新启动安装。

在故障转移群集配置下安装 SQL Server 2000 之前，必须升级 SQL Server 2000 的任何发布前版本。

在 Windows NT 4.0 上安装故障转移群集

  1. 安装 Windows NT 4.0 企业版。

    Windows NT 4.0 企业版包括 Windows NT 4.0 Service Pack 3。安装 Microsoft 群集服务 (MSCS) 时必须用到 Service Pack 3。

    • 如果打算安装 Windows NT Option Pack，请不要直接使用 Service Pack 4 或更高版本。

    • 不要安装 Microsoft Internet 信息服务器 (IIS)。

    重要 默认情况下安装 IIS。建议在安装 Windows NT 4.0 的过程中清除该选项。

  2. 安装 MSCS。

  3. 安装 Microsoft Internet Explorer 5.0 版或更高版本。

  4. 手动创建 Microsoft 分布式事务处理协调器 (MS DTC) 兼容资源组，MS DTC 安装可以在该组中创建自己的资源。资源组包含 IP 地址、网络名称和群集磁盘资源。任何包含这三项的组都与 MS DTC 兼容。

    SQL Server 安装程序将在后面的步骤中安装 MS DTC。仅当除 MS DTC 之外还需要 Windows NT 4.0 Option Pack 的组件时才安装 Windows NT 4.0 Option Pack。

  5. 安装最新的 Windows NT 4.0 Service Pack（Service Pack 5 或更高版本）。单击"创建卸载目录"，单击"2000 年安装程序"，然后选择"用于基于 Intel 的系统的 Service Pack 安装"复选框。

    不要选择 Microsoft 消息队列服务器 (MSMQ 1.0) 或 IIS。SQL Server 2000 上不支持 MSMQ 1.0。建议 IIS 功能与 Windows NT 负载平衡服务 (WLBS) 一起使用。有关 WLBS 的更多信息，请搜索 Microsoft Web 站点 NT Server 上的"WLBS Features Overview"。

    在进行步骤 5 之前，建议将隐藏目录 $NTServicePackUninstall$ 重命名为 $NTServicePackUninstall$.service packnumber。安装 service pack 后，添加新目录。这样就使卸载目录变为可用，以防止这些目录被意外重写。

  6. 安装 SQL Server 2000。

说明 在安装任何其它应用程序前安装所有附加服务器产品。

在 Windows 2000 上安装故障转移群集

  1. 安装 Windows 2000 并接受默认应用程序选项。

  2. 在第一个节点上安装 Windows 2000 后（但在安装 MSCS 前），选择"开始"菜单，指向"程序"子菜单，找到"管理工具"子菜单，然后单击"配置服务器"命令。

  3. 选择"高级"菜单，单击"群集服务"命令，然后从右窗格中单击"进一步了解"按钮。

  4. 从"帮助"菜单中，检查 Windows 群集中的项目 2。

    在 Windows 2000 安装过程中和 SQL Server 2000 故障转移群集中使用 Windows 群集。遵照以下说明来安装 MSCS。

    重要 需要阅读"规划 Windows 群集/服务器群集要求"中的章节，并按照名为一览表：创建服务器群集的服务器群集一览表执行。可在"服务器群集"章节/服务器群集一览表下找到。

  5. 在成功安装了 MSCS 以后，需要配置 MS DTC 以在群集中运行。

    有关 MS DTC 的更多信息，请参见故障转移群集的相关性。

  6. 在"开始"菜单中，指向"程序"子菜单，选择"管理工具"子菜单下的"群集管理器"命令，然后单击"视图组"菜单中的"群集组"命令。如果该组包含 MS DTC 资源，则继续执行步骤 9。否则，完成后面的两步。

  7. 在"开始"菜单上指向"命令提示符"。在命令提示符处输入 comclust.exe。

  8. 在群集的其余节点上重复步骤 7，一次一个节点。

  9. 安装 SQL Server 2000。

说明 在安装任何用户应用程序前安装所有附加服务器产品。


故障转移群集的相关性

有几种产品与 Microsoft® SQL Server™ 2000 故障转移群集交互。若要确保故障转移群集正常发挥作用，需要了解故障转移群集在其它产品上的基本相关性。

Microsoft 分布式事务处理协调器 (MS DTC)

SQL Server 2000 在群集中执行分布式查询、两相提交事务以及某些复制功能时，都需要 Microsoft 分布式事务处理协调器 (MS DTC)。安装 Microsoft Windows® 2000 并配置群集之后，必须在所有节点上运行群集向导（comclust.exe 程序）以配置 MS DTC 在群集模式下运行。

群集向导将对 MS DTC 配置进行如下更改：

  • 在包含共享群集磁盘资源和网络名称资源的资源组中创建 MS DTC 资源。

  • 在 MS DTC 资源组中包含的共享群集磁盘上创建 MS DTC 日志文件。将 MS DTC 日志文件放在共享群集磁盘上，将使 MS DTC 事务管理器可从群集中的任何系统访问 MS DTC 日志文件。

  • 向共享群集注册表复制关键的 MS DTC 注册表项。
在群集模式下运行 MS DTC

当 MS DTC 运行在群集模式时，每次群集中只有一个节点运行 MS DTC 事务管理器。

在群集中的任意节点上运行的任何进程都可以使用 MS DTC。这些进程只需调用 MS DTC 代理，而由 MS DTC 代理自动将 MS DTC 调用转发给控制整个群集的 MS DTC 事务管理器。

如果运行 MS DTC 事务管理器的节点失败，MS DTC 事务管理器会自动在该群集的另一个节点上重新启动。最后重新启动的 MS DTC 事务管理器读取共享群集磁盘上的 MS DTC 日志文件，以确定挂起的结果和最新完成的事务。资源管理器重新与 MS DTC 事务管理器连接，执行恢复操作以确定是否有不确定的事务结果。应用程序与 MS DTC 重新连接以便可以开始新的事务处理。

例如，假定 MS DTC 事务管理器在系统 B 中是活动的。系统 A 中的应用程序和资源管理器调用 MS DTC 代理。系统 A 中的 MS DTC 代理将所有 MS DTC 调用转发至系统 B 中的 MS DTC 事务管理器中。

如果系统 B 失败，则系统 A 中的 MS DTC 事务管理器将接管。它将读取共享群集磁盘上的整个 MS DTC 日志文件，执行恢复，并作为整个群集的事务管理器提供服务。

说明 作为 Windows 2000 安装程序的一部分，MS DTC 事务管理器、MS DTC 代理和组件服务管理工具安装在使用 MSCS 的 Windows 2000 群集中的各节点上。

在运行 MSCS 的 Windows 2000 系统中手工安装 MS DTC

  1. 在群集中的每个节点上安装 Windows 2000。

  2. 使用 Windows 2000 配置服务器工具来配置群集。

  3. 在群集中的每个节点上，从命令提示符运行 comclust.exe。可在 system32 目录中找到 Comclust.exe。

在 Windows 2000 群集系统中自动安装 MS DTC

  1. 在群集中的每个节点上安装 Windows 2000，并使用自动安装脚本配置群集。

  2. 在群集中的每个节点上，从命令提示符运行 comclust.exe。可在 system32 目录中找到 Comclust.exe。

将非群集 Windows NT 4.0 SP4 系统升级到 Windows 2000 群集

  1. 把将成为该群集组成部分的各系统都升级到 Windows 2000。

  2. 使用 Windows 2000 配置服务器工具配置服务器。

  3. 在群集中的每个节点上，从命令提示符运行 comclust.exe。可在 system32 目录中找到 Comclust.exe。

将群集 Windows NT 4.0 SP4 系统升级到 Windows 2000 群集

  1. 在群集中的每个节点上安装 Windows 2000。

    MS DTC 要求该群集中的所有节点都要同时升级到 Windows 2000。

  2. 在群集中的每个节点上，从命令提示符运行 comclust.exe。可在 system32 目录中找到 Comclust.exe。

重要 SQL Server 或 Microsoft 群集服务 (MSCS) 不支持 Microsoft System Management Server 1.2。

从群集故障中恢复并在 Windows 2000 群集上重建 MS DTC

  1. 当一个节点丢失时，MS DTC 将继续在群集中的其余节点上工作。丢失的是主节点还是辅助节点并不重要。

  2. 当准备好还原丢失的节点时，请将丢失的节点联接回群集中。一旦该节点与群集联接上，请运行 Comclust.exe，在 system32 目录中可找到该程序。这将在该节点上重新配置 MS DTC。


维护故障转移群集

安装 Microsoft® SQL Server™ 2000 故障转移群集之后，可以更改或修复现有安装。例如，可以向故障转移群集中的虚拟服务器添加其它节点，将群集实例作为独立实例运行，从群集实例中删除节点或从故障转移群集失败中恢复。

向现有虚拟服务器中添加节点

在 SQL Server 安装过程中，系统将提供维护现有虚拟服务器的选项。如果选择该选项，则以后可将其它节点添加到故障转移群集配置中。在配置为运行于一个节点上的现有虚拟服务器中，最多可另外添加三个节点。

向现有虚拟服务器中添加节点

SQL Setup

SQL 安装程序

从现有故障转移群集中删除节点

可以从虚拟服务器中删除节点（例如，如果一个节点已损坏）。虚拟 SQL Server 中的每个节点都被认为是对等的，因此可以删除任何节点。

可以随时将已删除的节点重新添加到故障转移群集内。例如，在发生严重故障后，可以重建已删除的节点并将其重新添加到故障转移群集内。或者，如果某个节点暂时不可用而后来又重新联机，并且，受影响虚拟服务器内的 SQL Server 2000 实例仍存在，则在该节点上再次安装二进制文件之前，安装程序将从计算机中删除该实例。

说明 已损坏的节点不一定能被删除，但删除进程将不会从不可用的节点中卸载任何二进制文件。

从现有故障转移群集中删除节点

SQL Setup

SQL 安装程序

将 SQL Server 群集实例作为独立实例运行

通常情况下，在 Microsoft 群集服务 (MSCS) 的控制下运行 SQL Server 群集实例。然而，有时可能必须将 SQL Server 群集实例作为独立实例运行（例如，执行像在单用户模式下运行 SQL Server 实例这类管理操作时）。若要在独立模式下使用套接字连接 SQL Server 2000 群集实例，则对于安装了实例的虚拟服务器而言，IP 地址和网络名称资源都必须联机。

如果这些资源不能联机，可以使用命名管道进行连接。但是，必须在客户端创建一个别名，以便与 SQL Server 实例正在监听的管道名称"交谈"。使用 SQL Server 网络实用工具找出管道名称。有关更多信息，请参见故障转移群集疑难解答。

从故障转移群集失败中恢复

通常有两种情况会导致故障转移群集失败：

  • 第一种情况，失败由两节点群集的节点 1 中的硬件失败造成。这种硬件故障可能由 SCSI 卡或操作系统中的故障造成的。

    若要从该失败中恢复，首先请使用安装程序删除该故障转移群集。

    删除故障转移群集实例

    SQL Setup

    SQL 安装程序

    从第一种情况的故障转移群集失败中恢复

    SQL Setup

    SQL 安装程序

  • 第二种情况，失败由节点 1 关闭或脱机引起，但不是无法挽回的损坏。这可能是由操作系统故障造成的。然而，使用下面的步骤从操作系统故障中恢复会花费时间。如果可以容易地从操作系统故障中恢复，则避免使用第二种情况。

    若要从该失败中恢复，首先请使用安装程序删除该故障转移群集。

    删除故障转移群集实例

    SQL Setup

    SQL 安装程序

    从第二种情况的故障转移群集失败中恢复

    SQL Setup

    SQL 安装程序

更改服务帐户

在故障转移群集节点关闭或脱机时，不得更改任何 SQL Server 服务帐户的密码。如果一定要这么做，则在所有节点回到联机状态后，必须使用企业管理器重置该密码。

如果 SQL Server 的服务帐户不是群集中的管理员，则无法在该群集的任何节点上删除管理共享。管理共享必须在群集中可用，SQL Server 才可以运行。

请参见

处理故障转移群集安装

SQL Server 网络实用工具


在故障转移群集中使用 SQL Server 工具

可以在 Microsoft® SQL Server™ 2000 故障转移群集中使用各种 SQL Server 工具和功能。但是请查阅以下使用注意事项。

全文查询

若要在故障转移群集中使用 Microsoft 搜索服务执行全文查询，请考虑下列事项：

  • SQL Server 2000 实例在所有故障转移群集节点上必须运行于同一系统帐户下，以使全文查询在群集上运行。

  • 必须使用 SQL Server 企业管理器更改故障转移群集中的 SQL Server 2000 启动帐户。如果使用 Microsoft Windows® 2000 中的"控制面板"或服务应用程序，则将破坏 SQL Server 的全文配置。
SQL Server 企业管理器

若要在故障转移群集中使用 SQL Server 企业管理器，请考虑下列事项：

  • 必须使用 SQL Server 企业管理器更改故障转移群集中的 SQL Server 2000 启动帐户。如果使用 Microsoft Windows 2000 中的"控制面板"或服务应用程序，则可能会破坏服务器配置。

  • 创建或更改数据库时，只能查看本地虚拟服务器的群集磁盘。

  • 如果正在通过 SQL Server 企业管理器浏览表且在故障转移期间失去与 SQL Server 的连接，则会出现错误信息"通讯链接故障"。此时，必须按 ESC 键并撤消更改，以退出"SQL Server 企业管理器"窗口。不能单击"运行查询"、保存任何更改或编辑网格。

  • 如果使用企业管理器重置 SQL Server 服务帐户的属性，将提示您重新启动 SQL Server。当 SQL Server 运行于故障转移群集配置时，这将使全文和 SQL 代理程序资源以及 SQL Server 脱机。但是，当 SQL Server 重新启动时，它不会使全文或 SQL 代理程序资源恢复联机。您必须使用 Windows 群集管理器实用工具手工启动这些资源。
服务控制管理器

使用服务控制管理器启动或停止 SQL Server 群集实例。不能暂停 SQL Server 群集实例。

使用服务控制管理器启动 SQL Server 群集实例

服务管理器

服务管理器

使用服务控制管理器停止 SQL Server 群集实例

服务管理器

服务管理器

SQL 事件探查器

可在故障转移群集中使用SQL 事件探查器。但是，如果运行 SQL 事件探查器跟踪时服务器上发生故障转移，则在服务器重新联机后必须重新启动跟踪才能继续进行跟踪。

SQL 查询分析器

可在故障转移群集中使用 SQL 查询分析器。但是，如果执行查询时所在服务器上发生故障转移，则在服务器重新联机后必须重新启动查询才能继续执行该查询。

SQL 邮件

若要在故障转移群集中使用 SQL 邮件，请考虑下列事项：

  • SQL Server 2000 实例在所有故障转移群集节点上必须运行于同一 Microsoft Windows NT® 4.0 和 Windows 2000 帐户下，这样才能使"SQL 邮件"在故障转移群集上工作。

  • 每个故障转移群集节点必须拥有名称和设置都相同的 MAPI 配置文件。有关更多信息，请参见配置邮件配置文件。

请参见

SQL 邮件

Microsoft 搜索服务

SQL 查询分析器

使用 SQL 事件探查器进行监视

SQL Server 企业管理器

启动、暂停和停止 SQL Server


故障转移群集疑难解答

本主题提供有关以下方面的信息：

  • 解决常见 Microsoft® SQL Server™ 2000 故障转移群集的使用问题。

  • 优化故障转移群集性能。

  • 在故障转移群集运用使用 COM 对象的扩展存储过程。
解决常见的使用问题

下面的列表描述常见使用问题并解释如何解决这些问题：

  • SQL Server 2000 在迁移到另一个节点后无法登录网络。

    SQL Server 服务帐户密码在所有节点上必须一致，否则该节点无法重新启动从某故障节点迁移的 SQL Server 服务。

    如果更改其中一个节点的 SQL Server 服务帐户密码，也必须更改所有其它节点上的密码。但是，如果使用 SQL Server 企业管理器更改帐户，该任务将自动完成。

  • SQL Server 无法访问群集磁盘。

    如果共享群集磁盘使用不同的驱动器号，则节点将不能恢复从失败节点迁移过来的群集磁盘。两台服务器上的群集磁盘的磁盘驱动器号必须相同。如果不相同，请检查操作系统和 Microsoft 群集服务 (MSCS) 的原始安装。有关更多信息，请参见 Microsoft Windows NT® 4.0 企业版、Windows® 2000 Advanced Server 或 Windows 2000 Datacenter Server 文档。

  • 不想出现服务（如全文检索或 SQL Server 代理）失败导致故障转移。

    若要防止特定服务失败导致 SQL Server 组故障转移，请使用 Windows NT 4.0 或 Windows 2000 中的群集管理器配置这些服务。例如，若要防止全文检索服务失败导致 SQL Server 的故障转移，请清除"全文属性"对话框的"高级"选项卡上的"影响组"复选框。但是，如果 SQL Server 导致故障转移，则全文检索服务将重新启动。

  • SQL Server 不自动启动。

    使用 SQL Server 无法自动启动故障转移群集。在 MSCS 中必须使用群集管理器自动启动故障转移群集。

  • SQL Server 安装过程中出现错误信息"找不到兼容的资源组"。

    该错误是由 Windows NT 4.0 企业版上的 Microsoft 分布式事务处理协调器 (MS DTC) 安装程序造成的。在运行安装程序时，MS DTC 要求本地节点拥有一个包含网络名称、IP 地址和共享群集磁盘的组。如果出现该错误，请打开群集管理器，确定本地节点拥有一个满足上述要求的组。进行此操作的最简单的方法是将一个磁盘移动到已包含网络名和 IP 地址的群集组中。在本地节点上有该分组后单击"重试"按钮。

  • 安装过程中出现错误信息"此虚拟服务器可用的所有群集磁盘为其它节点所有"。

    在为安装数据文件选择驱动器和路径，而所选择的驱动器不为本地节点所拥有时会显示此消息。使用群集管理器将该磁盘移动到本地节点中。

  • SQL Server 安装过程中出现错误信息"无法删除 SQL Server 资源。它们必须手工删除。将继续卸载。"。

    当 SQL Server 安装程序无法删除所有的 SQL Server 资源时出现该消息。必须到"控制面板"中将试图在每个节点上删除的实例卸载。

  • 不能启用群集操作系统错误日志。

    MSCS 使用操作系统群集错误日志记录有关该群集的信息。使用该错误日志调试群集配置问题。若要启用群集错误日志，请设置系统环境变量 CLUSTERLOG=<path to file>（例如，CLUSTERLOG=c:\winnt\cluster\cluster.log）。在 Windows 2000 中，默认情况下该错误日志为打开状态。

  • 如果网络名称脱机且无法使用 TCP/IP 进行连接，则必须使用命名管道。

    若要使用命名管道进行连接，需要使用客户端网络实用工具创建一个别名以连接适当的计算机。例如，如果有一个包含两个节点（NodeA 和 NodeB）的群集和一个包含默认实例的虚拟服务器 (Virtsql)，则可以执行下列步骤连接网络名称资源已脱机的服务器：

    1. 使用群集管理器确定包含 SQL Server 实例的组正在哪个节点上运行。对于本例，此节点是 Node A。

    2. 使用 net start 命令在该计算机上启动 SQL Server 服务。有关使用 net start 命令的更多信息，请参见手工启动 SQL Server。

    3. 启动 Node A 上的 SQL Server 网络实用工具。查看服务器正在监听的管道名称。应类似于 \\.\$$\VIRTSQL\pipe\sql\query。

    4. 在客户端计算机上启动客户端网络实用工具。

    5. 创建别名 SQLTEST1 以通过命名管道连接到该管道名称。为此，应将 Node A 作为服务器名称并将管道编辑为 \\.\$$\VIRTSQL\pipe\sql\query。使用别名 SQLTEST1 作为服务器名称连接该实例。

    有关更多信息，请参见客户端 Net-Library 和网络协议。

优化故障转移群集的性能

若要在使用故障转移群集时优化性能，请考虑下列事项：

  • 如果磁盘控制器不在群集计算机以外，则必须关闭控制器内的写缓存以防止故障转移期间发生数据丢失。

  • 在群集中的主机控制器上使用回写高速缓存会影响性能。但是，如果使用外部控制器，则将继续提供性能收益。外部磁盘阵列不受故障转移群集的影响，甚至能通过 SCSI 总线使高速缓存正确地同步。

  • 建议不使用文件共享的群集驱动器。使用这些驱动器将影响恢复所需的时间，并会导致由于资源故障而引起的群集组的故障转移。
使用扩展存储过程和 COM 对象

如果在故障转移群集配置中使用扩展存储过程，则需将所有扩展存储过程都安装在共享群集磁盘中。这是为确保当某节点发生故障转移时，仍能继续使用扩展存储过程。

如果扩展存储过程使用 COM 组件，管理员需在该群集的各个节点中注册 COM 组件。用于装载和执行 COM 组件的信息必须在活动节点的注册表中才能创建 COM 组件。否则，该信息将保留在 COM 组件最先注册到的计算机的注册表中。有关更多信息，请参见扩展存储过程构架。


如何创建新的故障转移群集（SQL Server 安装程序）

重要 在创建 Microsoft® SQL Server™ 2000 故障转移群集之前，必须配置 Microsoft 群集服务 (MSCS) 并使用 Microsoft Windows NT® 4.0 或 Windows® 2000 中的群集管理员创建至少一个群集磁盘资源。在运行 SQL Server 安装程序之前，在群集管理员中记下群集驱动器的位置，因为创建新的故障转移群集需要该信息。

创建新的故障转移群集

  1. 在"Microsoft SQL Server 安装向导"的"欢迎"屏幕中，单击"下一步"按钮。

  2. 在"计算机名称"屏幕上，单击"虚拟服务器"并输入虚拟服务器名称。如果安装程序检测到 MSCS 正在运行，则将默认为"虚拟服务器"。单击"下一步"按钮。

  3. 在"用户信息"屏幕上，输入用户名和公司名。单击"下一步"按钮。

  4. 在"软件许可协议"屏幕上，单击"是"按钮。

  5. 在"故障转移群集"屏幕上，输入为客户端访问配置的每个网络的一个 IP 地址。也就是为每个虚拟服务器可由公共（或混合）网络上的客户端使用的网络输入一个 IP 地址。选择要输入 IP 地址的网络，然后输入 IP 地址。单击"添加"按钮。

    显示 IP 地址和子网。子网由 MSCS 提供。继续为每个已安装的网络输入 IP 地址，直到所有需要的网络都填充了 IP 地址。单击"下一步"按钮。

  6. 在"群集磁盘选择"屏幕中，选择在默认情况下用于放置数据文件的群集磁盘组。单击"下一步"按钮。

  7. 在"群集管理"屏幕中，查看 SQL Server 2000 所提供的群集定义。默认情况下，选定所有可用节点。删除不属于正创建的虚拟服务器群集定义的任何节点。单击"下一步"按钮。

  8. 在"远程信息"屏幕中，输入远程群集节点的登录凭据。该登录凭据必须在群集的远程节点上有管理员特权。单击"下一步"按钮。

  9. 在"实例名称"屏幕中，选择默认实例或指定命名实例。若要指定命名实例，请先清除"默认"复选框，然后输入命名实例的名称。单击"下一步"按钮。

    重要 不能将实例命名为 DEFAULT 或 MSSQLSERVER。有关 SQL Server 2000 命名实例的更多信息，请参见处理 SQL Server 2000 的命名实例和多实例。名称必须遵从 SQL Server 标识符规则。有关标识符命名规则的更多信息，请参见使用标识符。

  10. 在"安装类型"屏幕中选择要安装的安装类型。安装程序自动默认为来自先前所选的组中的第一个可用群集磁盘资源。不过，如果需要指定另一个群集驱动器资源，可在"数据文件"下单击"浏览"按钮，然后指定群集驱动器资源的路径。安装程序将要求选择群集驱动器资源，该资源为正在运行安装程序的节点所拥有。该驱动器也必须是先前所选的群集组成员。单击"下一步"按钮。

  11. 在"服务帐户"屏幕上，选择要在故障转移群集中运行的服务帐户。单击"下一步"按钮。

  12. 在"身份验证模式"对话框中，选择要使用的身份验证模式。如果将选择内容从"Windows 身份验证模式"变为"混合模式（Windows 身份验证和 SQL Server 身份验证）"，则需要输入并确认 sa 登录密码。

  13. 在"开始复制文件"屏幕上，单击"下一步"按钮。

  14. 在"安装完成"屏幕上，单击"完成"按钮。

    如果安装程序指示重新启动计算机，则立即这样做。完成安装后，阅读来自安装程序的消息是很重要的。未能重新启动任何指定的节点可能导致将来在故障转移群集中的任何节点上运行安装程序失败。


如何安装单节点故障转移群集（SQL Server 安装程序）

  1. 在"Microsoft SQL Server 安装向导"的"欢迎"屏幕中，单击"下一步"按钮。

  2. 在"计算机名称"屏幕上，单击"虚拟服务器"并输入虚拟服务器名称。如果 SQL Server 安装程序检测到 Microsoft® 群集服务 (MSCS) 正在运行，则将默认为"虚拟服务器"。单击"下一步"按钮。

  3. 在"用户信息"屏幕上，输入用户名和公司。单击"下一步"按钮。

  4. 在"软件许可协议"屏幕上，单击"是"按钮。

  5. 在"故障转移群集"屏幕中，输入虚拟服务器的每个已安装网络的 IP 地址。选择要输入 IP 地址的网络，然后输入 IP 地址。单击"添加"按钮。该 IP 地址及子网将在下面显示出来。该子网由 MSCS 提供。继续为每个已安装的网络输入 IP 地址，直到所有需要的网络都填充了 IP 地址。单击"下一步"按钮。

  6. 在"群集磁盘选择"屏幕中，选择将在默认情况下放置数据文件的群集磁盘组。单击"下一步"按钮。

  7. 在"群集管理"屏幕上，查看 Microsoft SQL Server™ 2000 所提供的故障转移群集定义。默认情况下，选定所有可用的节点。删除任何不属于正在创建的虚拟服务器群集定义的节点。单击"下一步"按钮。

  8. 在"远程信息"屏幕中，输入在群集的远程节点上有管理员特权的登录凭据。单击"下一步"按钮。

  9. 在"实例名称"屏幕中，选择默认实例或指定命名实例。若要指定命名实例，请先清除"默认"复选框，然后键入实例名称。单击"下一步"按钮。

    重要 不能将实例命名为 DEFAULT 或 MSSQLSERVER。其名称必须遵守有关 SQL Server 标识符的规则。有关标识符命名规则的更多信息，请参见使用标识符。

  10. 在"安装类型"屏幕中，选择要安装的安装类型。安装程序默认自动选择来自先前所选择的组中的第一个可用的群集磁盘资源。不过，如果需要指定另一个群集驱动器资源，则在"数据文件"下单击"浏览"按钮，然后指定群集驱动器资源的路径。您必须选择一个由正在其上运行安装程序的节点所拥有的群集驱动器资源。该驱动器也必须是先前所选的群集组中的成员。单击"下一步"按钮。

  11. 在"服务帐户"屏幕上，选择要在故障转移群集中运行的服务帐户。单击"下一步"按钮。

  12. 在"身份验证模式"对话框中，选择要使用的身份验证模式。如果将选择内容从"Windows 身份验证模式"变为"混合模式（Windows 身份验证和 SQL Server 身份验证）"，则必须输入并确认 sa 登录密码。

  13. 在"开始复制文件"屏幕上单击"下一步"按钮。

  14. 在"安装完成"屏幕上单击"完成"按钮。如果安装程序指示重新启动计算机，则立即进行此操作。完成安装后，阅读来自安装程序的消息是很重要的。未能重新启动任何指定的节点可能导致将来在群集中的任何节点上运行安装程序时失败。


如何将节点添加到现有的虚拟服务器（SQL Server 安装程序）

  1. 在"Microsoft SQL Server 安装向导"的"欢迎"屏幕中，单击"下一步"按钮。

  2. 在"计算机名称"屏幕中，单击"虚拟服务器"选项，并指定要向其添加节点的虚拟服务器。单击"下一步"按钮。

  3. 在"安装选择"屏幕上，单击"高级选项"按钮。单击"下一步"按钮。

  4. 在"高级选项"屏幕上，单击"维护故障转移群集的虚拟服务器"。单击"下一步"按钮。

  5. 在"故障转移群集"屏幕上，单击"下一步"按钮。

    不需要输入 IP 地址。

  6. 在"群集管理"屏幕上，选择节点并单击"添加"按钮。

    如果列出的节点不可用，则必须修改虚拟服务器的群集组中的磁盘资源，以便要添加到 Microsoft® SQL Server™ 配置中的节点可以使用该磁盘。单击"下一步"按钮。

  7. 在"远程信息"屏幕中，为在该群集的远程节点上具有管理员特权的远程群集节点输入登录凭据。单击"下一步"按钮。

  8. 在"安装完成"屏幕中，单击"完成"按钮。


如何从现有的故障转移群集中删除节点（SQL Server 安装程序）

  1. 在"Microsoft SQL Server 安装向导"的"欢迎"屏幕中，单击"下一步"按钮。

  2. 在"计算机名称"屏幕中，选择"虚拟服务器"选项并指定要从中删除节点的服务器名称。单击"下一步"按钮。

  3. 可能会看到一条错误信息，指示 Microsoft Windows® NT 4.0 或 Windows 2000® 群集的一个（或多个）节点不可用。这可能是因为正试图删除的节点已损坏。但仍然可以删除该节点。单击"确定"按钮。

  4. 在"安装选择"屏幕上，单击"高级选项"。单击"下一步"按钮。

  5. 在"高级选项"屏幕上，单击"维护故障转移群集的虚拟服务器"。单击"下一步"按钮。

  6. 在"故障转移群集"屏幕上，单击"下一步"按钮。

    不需要修改任何 IP 地址。

  7. 在"群集管理"屏幕上，选择节点并单击"删除"。单击"下一步"按钮。

  8. 在"远程信息"屏幕中，为在该群集的远程节点上具有管理员特权的远程群集节点输入登录凭据。单击"下一步"按钮。

  9. 在"安装完成"屏幕中，单击"完成"按钮。

    如果得到重新启动计算机的指示，请立即进行此操作。完成安装后，阅读 SQL Server 安装程序中的信息是很重要的。重新启动任何指定的节点失败都可能导致将来在故障转移群集中任何节点上运行安装程序失败。


如何删除群集实例（SQL Server 安装程序）

  1. 在"Microsoft SQL Server 安装向导"的"欢迎"屏幕中，单击"下一步"按钮。

  2. 在"计算机名称"屏幕中，选择"虚拟服务器"并指定要从中删除群集实例的服务器名。单击"下一步"按钮。

  3. 在"安装选择"屏幕中，单击"对现有 SQL Server 实例进行升级、删除或添加组件"。

  4. 在"实例名称"屏幕上，对于默认实例，单击"默认"按钮。对于命名实例，指定要删除的实例名。单击"下一步"按钮。

  5. 在"现有安装"屏幕上，单击"卸载现有安装"按钮。单击"下一步"按钮。

  6. 在"远程信息"屏幕中，指定对此群集所有节点都有效的管理员密码。单击"下一步"按钮。

  7. 出现"安装"信息的"成功卸载实例 . . . "后，单击"确定"按钮。

  8. 在"安装完成"屏幕中，单击"完成"按钮。

    如果安装程序指示重新启动计算机，则立即进行此操作。完成安装后，阅读来自 SQL Server 安装程序的消息是很重要的。未能重新启动任何指定的节点可能导致将来在故障转移群集中的任何节点上运行安装程序失败。


如何从第一种情况的故障转移群集失败中恢复

在此情况中，失败是由两个节点的群集中节点 1 的硬件故障造成的。例如，该硬件故障可能是由小型计算机系统接口 (SCSI) 卡的故障或操作系统的故障引起的。

  1. 节点 1 失败后，Microsoft® SQL Server™ 2000 故障转移群集将故障转移到节点 2。

  2. 运行 SQL Server 安装程序并删除节点 1。有关更多信息，请参见维护故障转移群集。

  3. 从 Microsoft 群集服务 (MSCS) 中排除节点 1。若要从 MSCS 中排除节点，可在节点 2 中右击要删除的节点，然后单击"排除节点"命令。

  4. 安装新的硬件，以替换节点 1 中发生故障的硬件。

  5. 安装操作系统。有关安装哪种操作系统以及具体的安装方法的更多信息，请参见安装故障转移群集前的准备工作。

  6. 安装 MSCS 并联接现有群集。有关更多信息，请参见安装故障转移群集前的准备工作。

  7. 在节点 2 上运行安装程序，并将节点 1 添加回故障转移群集。


如何从第二种情况的故障转移群集失败中恢复

第二种情况，失败由节点 1 关闭或脱机引起，但不是无法挽回的损坏。例如，这可能是由操作系统故障造成的。

  1. 节点 1 失败后，Microsoft® SQL Server™ 2000 故障转移群集将故障转移到节点 2。

  2. 运行 SQL Server 安装程序并删除节点 1。有关更多信息，请参见维护故障转移群集。

  3. 解决节点 1 的问题。

  4. 确保Microsoft 群集服务 (MSCS) 群集正在工作且所有节点均处于联机状态。

  5. 在节点 2 上运行安装程序，并将节点 1 添加回故障转移群集。


如何从 SQL Server 6.5 主动/被动故障转移群集升级（SQL Server 安装程序）

从 SQL Server 6.5 主动/被动故障转移群集升级

  1. 取消群集 Microsoft® SQL Server™ 6.5版。

  2. 安装 SQL Server 2000 默认实例。

    必须将二进制文件安装到某个本地驱动器并对数据使用群集磁盘。该本地驱动器是路径，它是在群集的所有节点上都有效的非群集磁盘。在群集的所有节点上，该驱动器必须至少有 300 MB 的可用空间。

  3. 运行 SQL Server 升级向导以将数据迁移到 SQL Server 2000 中。

  4. 卸载 SQL Server 6.5。

  5. 运行 SQL Server 安装程序以将 SQL Server 2000 默认实例升级到 SQL Server 2000 故障转移群集。

    有关更多信息，请参见如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 安装程序）。

请参见

如何用直接管道将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）

如何使用磁带驱动器将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）


如何从 SQL Server 6.5 主动/主动故障转移群集升级（SQL Server 安装程序）

说明 若要从 Microsoft® SQL Server™ 6.5 主动/主动故障转移群集（或 SQL Server 存在于第二个节点上的任何配置）升级，必须先将故障转移群集的一端转换为 SQL Server 2000 命名实例。

从 SQL Server 6.5 主动/主动故障转移群集升级

  1. 在节点 1 上，取消群集 SQL Server 6.5。在节点 2 上，取消群集 SQL Server 6.5。

  2. 在节点 1 上，安装 SQL Server 2000 默认（非群集）实例。

    必须将二进制文件安装到某个本地驱动器并对数据使用群集磁盘。该本地驱动器是路径，它是在群集的所有节点上都有效的非群集磁盘。在群集的所有节点上，该驱动器必须有至少 300 MB 的可用空间。

  3. 在节点 1 上运行 SQL Server 2000 升级向导以将数据迁移到 SQL Server 2000 中。

  4. 卸载 SQL Server 6.5 实例。

  5. 安装 SQL Server 2000 的命名群集实例。

  6. 运行复制数据库向导 (CDW.exe) 以将 SQL Server 数据（最初来自 SQL Server 6.5）迁移到 SQL Server 2000 故障转移群集中的命名实例。有关复制数据库向导的更多信息，请参见使用复制数据库向导或如何使用复制数据库向导联机升级数据库（企业管理器）。

  7. 在节点 1 上卸载 SQL Server 2000 默认实例。

  8. 在节点 2 上安装 SQL Server 2000 默认实例。

  9. 运行 SQL Server 2000 升级向导以将数据迁移到 SQL Server 2000 中。

    必须将二进制文件安装到某个本地驱动器并对数据使用群集磁盘。该本地驱动器是路径，它是在群集的所有节点上都有效的非群集磁盘。在群集的所有节点上，该驱动器必须有至少 300 MB 的可用空间。

  10. 卸载 SQL Server 6.5 实例。

  11. 在节点 2 上，将 SQL Server 默认实例升级为群集实例。

    有关更多信息，请参见如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 安装程序）。


如何从 SQL Server 7.0 主动/主动故障转移群集升级（SQL Server 安装程序）

说明 若要从 Microsoft® SQL Server™ 7.0 版主动/主动故障转移群集（或 SQL Server 存在于第二个节点上的任何配置）升级，必须先将故障转移群集的一端转换为 SQL Server 2000 命名实例。

从 SQL Server 7.0 主动/主动故障转移群集升级

  1. 在节点 1 上，取消群集 SQL Server 7.0 版。

  2. 在节点 2 上，取消群集 SQL Server 7.0。

  3. 在节点 1 上，将 SQL Server 2000 的群集命名实例作为虚拟服务器安装。这不是升级过程，而是并行安装 SQL Server 7.0 和 SQL Server 2000。

  4. 在节点 1 上，运行复制数据库向导 (CDW.exe) 以将所有数据库及相关信息从 SQL Server 7.0 安装移动到 SQL Server 2000 的群集命名实例中。有关复制数据库向导的更多信息，请参见使用复制数据库向导或如何使用复制数据库向导联机升级数据库（企业管理器）。

  5. 在节点 1 上，卸载 SQL Server 7.0。

  6. 在节点 2 上，将 SQL Server 7.0 作为默认实例升级到 SQL Server 2000。

    必须将二进制文件安装到某个本地驱动器并对数据使用群集磁盘。该本地驱动器是路径，它是在群集的所有节点上都有效的非群集磁盘。在群集的所有节点上，该驱动器必须有至少 300 MB 的可用空间。

  7. 在节点 2 上，将 SQL Server 2000 默认实例升级为群集实例。

    有关更多信息，请参见如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 安装程序）。

说明 或者，可以创建两个 SQL Server 2000 命名实例，并使用复制数据库向导将这两个 SQL Server 7.0 安装都升级到 SQL Server 2000 的群集命名实例。这将提供更好的一致性，因为对 SQL Server 2000 群集安装的所有引用都将是 VirtualServer\Instance 形式，而不是有时仅为 servername 形式，有时为 servername 和 instancename 形式。


如何从 SQL Server 7.0 主动/被动故障转移群集升级（SQL Server 安装程序）

从 SQL Server 7.0 主动/被动故障转移群集升级

  1. 在节点 1 上，取消群集 Microsoft® SQL Server™ 7.0 版。

  2. 在节点 1 上，将 SQL Server 7.0 作为默认实例升级到 SQL Server 2000。

    必须将二进制文件安装到某个本地驱动器并对数据使用群集磁盘。该本地驱动器是路径，它是在群集的所有节点上都有效的非群集磁盘。在群集的所有节点上，该驱动器必须有至少 300 MB 的可用空间。

  3. 在节点 1 上，将 SQL Server 2000 默认实例作为 SQL Server 2000 群集实例升级。

    有关更多信息，请参见如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 安装程序）。


如何从默认实例升级到 SQL Server 2000 的默认群集实例（SQL Server 安装程序）

说明 该升级是从默认实例（数据在本地磁盘上的本地安装）升级到 Microsoft® SQL Server™ 2000 的群集实例。如果希望有默认虚拟服务器，则使用该升级。

从默认实例升级到 SQL Server 2000 的默认群集实例

  1. 在"Microsoft SQL Server 安装向导"的"欢迎"屏幕中，单击"下一步"按钮。

  2. 在"计算机名称"屏幕上，单击"本地计算机"按钮。此时应显示您希望从默认实例改变为群集实例的计算机。必须是在本地计算机上才能将默认实例升级为群集实例。单击"下一步"按钮。

  3. 在"安装选择"屏幕中，单击"对现有 SQL Server 实例进行升级、删除或添加组件"。单击"下一步"按钮。

  4. 在"现有安装"屏幕上，单击"升级现有安装为群集安装"。单击"下一步"按钮。

  5. 在"虚拟服务器名称"屏幕中，输入虚拟服务器的名称。单击"下一步"按钮。

  6. 在"故障转移群集"屏幕上，输入为客户端访问配置的每个网络的一个 IP 地址。也就是为每个虚拟服务器可由公共（或混合）网络上的客户端使用的网络输入一个 IP 地址。选择要输入 IP 地址的网络，然后输入 IP 地址。单击"添加"按钮。

    显示 IP 地址和子网。子网由 Microsoft 群集服务 (MSCS) 提供。继续为每个已安装的网络输入 IP 地址，直到所有需要的网络都填充了 IP 地址。单击"下一步"按钮。

  7. 在"群集管理"屏幕上，查看 SQL Server 2000 所提供的故障转移群集定义。默认情况下，选定所有可用节点。删除不属于正在创建的虚拟服务器群集定义的任何节点。单击"下一步"按钮。

  8. 在"远程信息"屏幕中，输入远程群集节点的登录凭据。该登录凭据必须在群集的远程节点上有管理员特权。单击"下一步"按钮。

  9. 在"服务帐户"屏幕中，为将在其下运行故障转移群集的 SQL Server 服务选择服务帐户。单击"下一步"按钮。

  10. 在"安装完成"屏幕中单击"完成"按钮。如果需要重新启动故障转移群集中的远程节点，则安装程序将在"安装完成"屏幕中提供相应的指示。


如何从本地默认实例升级到 SQL Server 2000 命名群集实例（SQL Server 安装程序）

从本地默认实例升级到 SQL Server 2000 的命名群集实例

  1. 安装 Microsoft® SQL Server™ 2000 的群集命名实例。

  2. 运行复制数据库向导 (CDW.exe) 以将所有数据库及相关信息移动到 SQL Server 2000 的群集命名实例中。有关复制数据库向导的更多信息，请参见使用复制数据库向导或如何使用复制数据库向导联机升级数据库（企业管理器）。

  3. 或者，可以卸载 SQL Server 2000 的默认实例。


用于国际支持的排序规则选项

在 Microsoft® SQL Server™ 2000 中，不需要为字符数据单独指定代码页和排序次序，也不需要指定用于 Unicode 数据的排序规则。而只需指定要使用的排序规则名称和排序规则。术语"排序规则"是指一套决定数据如何排序和比较的规则。字符数据使用定义了正确字符顺序的规则进行排序，规则中包含指定区分大小写、重音符号、日文假名字符类型和字符宽度等选项。Microsoft SQL Server 2000 排序规则包括以下分组：

  1. Windows 排序规则

    Windows 排序规则基于为相关联的 Windows 区域设置所定义的规则对存储字符数据的规则进行定义。Windows 基本排序规则指定应用字典排序时所用的字母表或语言，以及用于存储非 Unicode 字符型数据的代码页。有关更多信息，请参见排序规则。

  2. SQL 排序规则

    提供 SQL 排序规则是为了与 Microsoft SQL Server 早期版本中的排序次序兼容。有关更多信息，请参见使用 SQL 排序规则。

安装之后更改排序规则

安装 SQL Server 2000 时，使用正确的排序规则设置十分重要。可以在运行安装程序之后更改排序规则设置，但是必须重建数据库并重新装载数据。建议在单位内部为这些排序规则选项制订标准。如果服务器之间的排序规则设置不一致，服务器之间的活动则可能失败。

请参见

选择 SQL 排序规则

如何重建 master 数据库（重建 Master 实用工具）

选择 SQL 排序规则

Windows 排序规则名称


选择 SQL 排序规则

使用"排序规则设置"屏幕修改默认的排序规则设置。使用"Windows 区域设置"选项匹配 Microsoft® SQL Server® 2000 实例中的排序规则设置。使用"SQL 排序规则"匹配与 SQL Server 早期版本中的排序次序相兼容的设置。

Windows 区域设置

仅当 SQL Server 的安装必须与 SQL Server 2000 另一实例使用的排序规则设置匹配或必须与另一计算机的 Windows 区域设置匹配时，才需更改"Windows 区域设置"（Windows 排序规则）的默认设置。

排序规则指示器

请从列表中选择特定的 Windows 排序规则的名称，例如：

  3. 对于美国英语字符集使用 Latin1_General（代码页 1252）。

  4. 对于西班牙语的所有变体（也使用与美国英语字符集相同的字符集）使用 Modern_Spanish（代码页 1252）。

  5. 对于阿拉伯语的所有变体（使用阿拉伯语字符集）使用 Arabic（代码页 1256）。

  6. 对于日语的 Unicode 版本使用 Japanese_Unicode（代码页 932）。此版本具有与 Japanese 不同的排序次序，但二者的代码页同为 932。

有关更多信息，请参见 Windows 排序规则名称。

排序次序

选择用于选定的排序规则指示器的"排序次序"选项。二进制是最快的排序次序且区分大小写。如果选择了"二进制"，则"区分大小写"、"区分重音"、"区分假名"和"区分宽度"选项不可用。有关更多信息，请参见 Windows 排序规则排序样式。

SQL 排序规则

"SQL 排序规则"选项用于与 Microsoft SQL Server 的早期版本兼容。选择该选项以便与 SQL Server 7.0 版、SQL Server 6.5 版或更早版本兼容的设置匹配。有关更多信息，请参见 SQL 排序规则。


Windows 排序规则排序样式

在"排序规则设置"屏幕上，可以选择"二进制"排序次序，也可以定义用于选定的排序规则指示器（Windows 排序规则名称）的排序样式。

说明 对于 Windows 排序规则，nchar、nvarchar 和 ntext 数据类型具有与 char、varchar 和 text 数据类型相同的排序行为。有关更多信息，请参见 SQL Server 排序规则基础知识。

排序次序 | 描述
二进制 | 根据为每个字符所定义的位模式对 Microsoft® SQL Server™ 表中的数据进行排序和比较。二进制排序次序区分大小写，先小写字母后大写字母并且区分重音。这是最快的排序次序。 如果不选中此选项，SQL Server 将按照字典中定义的相关语言或字母表的排序及比较规则进行排序。
区分大小写 | 指定 SQL Server 区分大小写字母。 如果不选中此规则选项，SQL Server 会认为大小写字母等价。如果不选中"区分大小写"选项，SQL Server 就不定义大小写字母之间的高低排序关系。
区分重音 | 指定 SQL Server 区分重音和非重音字符。例如，"a"不等同于"á"。 如果不选中此选项，SQL Server 会认为重音与相应的非重音字母等价。
区分假名 | 指定 SQL Server 区分两种类型的日文假名字符：平假名和片假名。 如果没有选择，SQL Server 会认为平假名和片假名等价。
区分宽度 | 指定 SQL Server 区分相同字符的单字节表示法（半角）和双字节表示法（全角）。 如果没有选择，则 SQL Server 将认为相同字符的单字节表示法和双字节表示法等效。

请参见

选择 SQL 排序规则

Windows 排序规则名称


Windows 排序规则名称

使用下表使排序规则设置与另一个 Windows 区域设置保持一致。

在"控制面板"的"区域设置"应用程序（Microsoft® Windows NT® 4.0、Microsoft Windows 98® 和 Microsoft Windows 95）或"区域选项"应用程序 (Microsoft Windows 2000) 中找到 Windows 区域设置名称，然后使用此表找到相应的排序规则指示器和代码页。

Windows 区域设置 | LCID（区域设置 ID） | 排序规则指示器 | 代码页
南非荷兰语 | 0xx436 | Latin1_General | 1252
阿尔巴尼亚语 | 0x41C | Albanian | 1250
阿拉伯语（沙特阿拉伯） | 0x401 | Arabic | 1256
阿拉伯语（伊拉克） | 0x801 | Arabic | 1256
阿拉伯语（埃及） | 0xC01 | Arabic | 1256
阿拉伯语（利比亚） | 0x1001 | Arabic | 1256
阿拉伯语（阿尔及利亚） | 0x1401 | Arabic | 1256
阿拉伯语（摩洛哥） | 0x1801 | Arabic | 1256
阿拉伯语（突尼斯） | 0x1C01 | Arabic | 1256
阿拉伯语（阿曼） | 0x2001 | Arabic | 1256
阿拉伯语（也门） | 0x2401 | Arabic | 1256
阿拉伯语（叙利亚） | 0x2801 | Arabic | 1256
阿拉伯语（约旦） | 0x2C01 | Arabic | 1256
阿拉伯语（黎巴嫩） | 0x3001 | Arabic | 1256
阿拉伯语（科威特） | 0x3401 | Arabic | 1256
阿拉伯语（阿拉伯联合酋长国） | 0x3801 | Arabic | 1256
阿拉伯语（巴林群岛） | 0x3C01 | Arabic | 1256
阿拉伯语（卡塔尔） | 0x4001 | Arabic | 1256
巴斯克语 | 0x42D | Latin1_General | 1252
白俄罗斯语 | 0x423 | Cyrillic_General | 1251
保加利亚语 | 0x402 | Cyrillic_General | 1251
加泰罗尼亚语 | 0x403 | Latin1_General | 1252
繁体中文（台湾） | 0x30404 | Chinese_Taiwan_Bopomofo | 950
繁体中文（台湾） | 0x404 | Chinese_Taiwan_Stroke | 950
简体中文（中华人民共和国） | 0x804 | Chinese_PRC | 936
简体中文（中华人民共和国） | 0x20804 | Chinese_PRC_Stroke | 936
中文（新加坡） | 0x1004 | Chinese_PRC | 936
克罗地亚语 | 0x41a | Croatian | 1250
捷克语 | 0x405 | Czech | 1250
丹麦语 | 0x406 | Danish_Norwegian | 1252
荷兰语（标准） | 0x413 | Latin1_General | 1252
荷兰语（比利时） | 0x813 | Latin1_General | 1252
英语（美国） | 0x409 | Latin1_General | 1252
英语（英国） | 0x809 | Latin1_General | 1252
英语（加拿大） | 0x1009 | Latin1_General | 1252
英语（新西兰） | 0x1409 | Latin1_General | 1252
英语（澳大利亚） | 0xC09 | Latin1_General | 1252
英语（爱尔兰） | 0x1809 | Latin1_General | 1252
英语（南非） | 0x1C09 | Latin1_General | 1252
英语（加勒比） | 0x2409 | Latin1_General | 1252
英语（牙买加） | 0x2009 | Latin1_General | 1252
爱沙尼亚语 | 0x425 | Estonian | 1257
法罗语 | 0x0438 | Latin1_General | 1252
现代波斯语 | 0x429 | Arabic | 1256
芬兰语 | 0x40B | Finnish_Swedish | 1252
法语（标准） | 0x40C | French | 1252
法语（比利时） | 0x80C | French | 1252
法语（瑞士） | 0x100C | French | 1252
法语（加拿大） | 0xC0C | French | 1252
法语（卢森堡） | 0x140C | French | 1252
乔治亚语（现代） | 0x10437 | Georgian_Modern_Sort | 1252
德语（电话簿排序） | 0x10407 | German_PhoneBook | 1252
德语（标准） | 0x407 | Latin1_General | 1252
德语（瑞士） | 0x807 | Latin1_General | 1252
德语（澳大利亚） | 0xC07 | Latin1_General | 1252
德语（卢森堡） | 0x1007 | Latin1_General | 1252
德语（列支敦士登） | 0x1407 | Latin1_General | 1252
希腊语 | 0x408 | Greek | 1253
希伯来语 | 0x40D | Hebrew | 1255
印地语 | 0x439 | Hindi | 仅 Unicode
匈牙利语 | 0x40E | Hungarian | 1250
匈牙利语 | 0x104E | Hungarian_Technical | 1250
冰岛语 | 0x40F | Icelandic | 1252
印度尼西亚语 | 0x421 | Latin1_General | 1252
意大利 | 0x410 | Latin1_General | 1252
意大利语（瑞士） | 0x810 | Latin1_General | 1252
日语 | 0x411 | Japanese | 932
日语 (Unicode) | 0x10411 | Japanese_Unicode | 932
朝鲜语 (Extended Wansung) | 0x412 | Korean_Wansung | 949
朝鲜语 | 0x412 | Korean_Wansung_Unicode | 949
拉脱维亚语 | 0x426 | Latvian | 1257
立陶宛语 | 0x427 | Lithuanian | 1257
立陶宛语 | 0x827 | Lithuanian_Classic | 1257
马其顿语 | 0x41C | Cyrillic_General | 1251
挪威语（博克马尔语） | 0x414 | Danish_Norwegian | 1252
挪威语（尼诺斯克） | 0x814 | Danish_Norwegian | 1252
波兰语 | 0x415 | Polish | 1250
葡萄牙语（标准） | 0x816 | Latin1_General | 1252
葡萄牙语（巴西） | 0x416 | Latin1_General | 1252
罗马尼亚语 | 0x418 | Romanian | 1250
俄语 | 0x419 | Cyrillic_General | 1251
塞尔维亚语（拉丁） | 0x81A | Cyrillic_General | 1251
塞尔维亚语（西里尔) | 0xC1A | Cyrillic_General | 1251
斯洛伐克语 | 0x41B | Slovak | 1250
斯洛文尼亚语 | 0x424 | Slovenian | 1250
西班牙语（墨西哥） | 0x80A | Traditional_Spanish | 1252
西班牙语（传统） | 0x40A | Traditional_Spanish | 1252
西班牙语（现代） | 0xC0A | Modern_Spanish | 1252
西班牙语（危地马拉） | 0x100A | Modern_Spanish | 1252
西班牙语（哥斯达黎加） | 0x140A | Modern_Spanish | 1252
西班牙语（巴拿马） | 0x180A | Modern_Spanish | 1252
西班牙语（多米尼加共和国） | 0x1C0A | Modern_Spanish | 1252
西班牙语（委内瑞拉） | 0x200A | Modern_Spanish | 1252
西班牙语（哥伦比亚） | 0x240A | Modern_Spanish | 1252
西班牙语（秘鲁） | 0x280A | Modern_Spanish | 1252
西班牙语（阿根廷） | 0x2C0A | Modern_Spanish | 1252
西班牙语（厄瓜多尔） | 0x300A | Modern_Spanish | 1252
西班牙语（智利） | 0x340A | Modern_Spanish | 1252
西班牙语（乌拉圭） | 0x380A | Modern_Spanish | 1252
西班牙语（巴拉圭） | 0x3C0A | Modern_Spanish | 1252
西班牙语（玻利维亚） | 0x400A | Modern_Spanish | 1252
瑞典语 | 0x41D | Finnish_Swedish | 1252
泰语 | 0x41E | Thai | 874
土耳其语 | 0x41F | Turkish | 1254
乌克兰语 | 0x422 | Ukrainian | 1251
乌尔都语 | 0x420 | Arabic | 1256
越南语 | 0x42A | Vietnamese | 1258

请参见

选择 SQL 排序规则

排序规则

Windows 排序规则排序样式

Windows 排序规则名称


使用 SQL 排序规则

SQL 排序规则设置对应于安装类型。通常，选择支持您的站点最常用的 Windows 区域设置的 SQL 排序规则。有关识别站点的 Windows 区域设置的更多信息，请参见"Windows 控制面板"中的"区域设置"。多数情况下，计算机会运行与用户语言需求相匹配的 Windows 区域设置，因此安装程序会自动检测 Windows 区域设置并选择合适的 SQL 排序规则。

SQL 排序规则控制：

  7. 用于存储 Microsoft® SQL Server™ 中非 Unicode 数据的代码页。

  8. 控制 SQL Server 如何对以 Unicode 和非 Unicode 数据类型存储的字符进行排序和比较的规则。

在下列情况下选择 SQL 排序规则：

  9. 通过 SQL Server 6.5 版或 SQL Server 7.0 版的现有实例使用复制功能。

  10. 应用程序的代码依赖于以前的 SQL Server 排序规则的行为。

从 SQL Server 7.0 升级到 SQL Server 2000 仍保留先前的 SQL 排序规则设置，不需要选择排序规则。

使用下表确定是否需要选择排序规则，以及如果需要，应选择哪种排序规则。

安装方式 | 选择排序规则
安装在新的系统上，没有与任何类型的现有系统同步的兼容性要求 | 使用安装程序所标识的区域设置，然后选择需要的二进制、区分大小写或其它选项。 在此 SQL Server 版中，当安装程序检测到计算机正在运行美国英语区域设置时，将自动选择 SQL 排序规则：字典顺序、区分大小写、用于 1252 字符集。 若要选择等价的 Windows 排序规则，请选择"排序规则指示器"，然后选择 Latin1_General 排序规则指示器，请不要选择"区分大小写"，但选择"区分重音"。
将 SQL Server 6.5 或 SQL Server 7.0 的安装升级为 SQL Server 2000 默认实例，或者安装可与 SQL Server 6.5 安装进行版本切换的 SQL Server 2000 默认实例 | 使用安装程序所选的 SQL 排序规则。
与现有 SQL Server 2000 实例同步（例如进行复制） | 在现有实例上选择 SERVERPROPERTY(N'Collation')，并指定该排序规则。如果现有实例的排序规则名称以 SQL 开头，请在安装程序中选择相同的 SQL 排序规则。如果现有实例的排序规则名称不以 SQL 开头，则排序规则名称指的是 Windows 排序规则名称，它由排序规则指示器名称及之后跟随的对所指定的二进制、区分大小写、区分重音、区分假名和区分宽度的选项的描述组成。在安装程序中选择相同的 Windows 排序规则名称和排序选项。
与现有 SQL Server 6.5 或 SQL Server 7.0 的安装同步 | 在现有系统上执行 sp_helpsort，然后使用排序 ID 选择 SQL 排序规则，使 SQL Server 2000 实例与现有的安装兼容。 有关更多信息，请参见选择 SQL 排序规则。
与另外一台计算机的 Windows 区域设置同步 | 在"控制面板"中，从区域设置应用程序（Microsoft Windows NT® 4.0、Microsoft Windows® 98 和 Microsoft Windows 95）中，或从区域选项应用程序 (Microsoft Windows 2000) 中查找区域设置名称，然后使用 Windows 排序规则名称主题中提供的表。按照 Windows 排序规则排序样式主题中的解释，设置排序选项。

说明 当执行依赖排序规则的操作时，被引用对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。有关更多信息，请参见指定排序规则。

请参见

SQL 排序规则示例

选择排序规则

sp_helpsort

设置客户端代码页

SQL Server 排序规则基础知识

SERVERPROPERTY


SQL 排序规则示例

以下是 Microsoft® SQL Server™ 2000 安装程序中的"排序规则设置"屏幕上列出的 SQL 排序规则示例：

二进制次序、用于 437（美国英语）字符集。

该排序规则对美国英语字符集（代码页 437 - MS-DOS Latin US）使用二进制排序次序（基于编码值的简单排序）。

在 Transact-SQL 中，字符串 SQL_Latin1_General_Cp437_BIN 用于指定该设置。

字典顺序、区分大小写、区分重音、用于 1252 字符集。

该排序规则对美国英语字符集（代码页 1252 - Windows Latin 1 ANSI，排序次序 ID 54）使用字典排序规则。排序时不考虑大、小写字符和重音符号。

在 Transact-SQL 中，字符串 SQL_Latin1_General_CP1_CI_AI 用于指定该设置。

罗马尼亚字典顺序、区分大小写、用于 1250（中欧语）字符集。

该排序规则使用罗马尼亚语字典顺序排序规则，并使用中欧语字符集（代码页 1250，排序次序 ID 89）。

在 Transact-SQL 中，字符串 SQL_Romanian_Cp1250_CS_AS 用于指定该设置。

请参见

选择 SQL 排序规则

选择 SQL 排序规则

使用 SQL 排序规则

SQL 排序规则名称


选择 SQL 排序规则

在"排序规则设置"屏幕中选择 SQL 排序规则时，请使用下表使 Microsoft® SQL Server™ 2000 安装与 SQL Server 早期版本的安装兼容。

说明 每个 SQL 排序规则名称在 T-SQL 代码中都有等效的字符串。有关排序次序标识符和 T-SQL 版本的列表，请参见 SQL 排序规则名称。

在下表中，左列列出 SQL Server 7.0 或 SQL Server 6.5 实例的排序次序 ID。右列列出了为兼容性推荐的 SQL Server 2000 排序规则。

排序次序 ID | SQL 排序规则名称
30 | 二进制次序、用于 437（美国英语）字符集。
31 | 字典顺序、区分大小写、用于 437（美国英语）字符集。
32 | 字典顺序、不区分大小写、用于 4374（美国英语）字符集。
33 | 字典顺序、不区分大小写、大写字母优先、用于 437（美国英语）字符集。
34 | 字典顺序、不区分大小写、不区分重音、用于 437（美国英语）字符集。
40 | 二进制顺序、用于 850（多语言）字符集。
41 | 字典顺序、区分大小写、用于 850（多语言）字符集。
42 | 字典顺序、不区分大小写、用于 850（多语言）字符集。
43 | 字典顺序、不区分大小写、大写字母优先、用于 850（多语言）字符集。
44 | 字典顺序、不区分大小写、不区分重音、用于 850（多语言）字符集。
49 | 与 1.x 版不区分大小写数据库严格兼容、用于 850（多语言）字符集。
50 | 二进制顺序、用于 1252 字符集。
51 | 字典顺序、区分大小写、用于 1252 字符集。
52 | 字典顺序、区分大小写、用于 1252 字符集。
53 | 字典顺序、不区分大小写、大写字母优先、用于 1252 字符集。
54 | 字典顺序、区分大小写、区分重音、用于 1252 字符集。
55 | 可选字典顺序、区分大小写、用于 850（多语言）字符集。
56 | 可选字典顺序、不区分大小写、大写字母优先、用于 850（多语言）字符集。
57 | 可选字典顺序、不区分大小写、不区分重音、用于 850（多语言）字符集。
58 | 斯堪的纳维亚文字典顺序、不区分大小写、大写字母优先、用于 850（多语言）字符集。
59 | 斯堪的纳维亚文字典顺序、区分大小写、用于 850（多语言）字符集。
60 | 斯堪的纳维亚文字典顺序、不区分大小写、用于 850（多语言）字符集。
61 | 可选字典顺序、不区分大小写、用于 850（多语言）字符集。
71 | 拉丁文 1、区分大小写、用于 1252 字符集。
72 | 拉丁文 1、不区分大小写、用于 1252 字符集。
73 | 丹麦/挪威文、区分大小写排序次序、用于代码页 1252。
74 | 芬兰/瑞典文、区分大小写排序次序、用于代码页 1252。
75 | 冰岛文、区分大小写排序次序、用于代码页 1252。
80 | 二进制顺序、用于 1250（中欧）字符集。
81 | 字典顺序、区分大小写、用于 1250（中欧）字符集。
82 | 字典顺序、不区分大小写、用于 1250（中欧）字符集。
83 | 捷克文字典顺序、区分大小写、用于 1250（中欧）字符集。
84 | 捷克文字典顺序、不区分大小写、用于 1250（中欧）字符集。
85 | 匈牙利文字典顺序、区分大小写、用于 1250（中欧）字符集。
86 | 匈牙利文字典顺序、不区分大小写、用于 1250（中欧）字符集。
87 | 波兰文字典顺序、区分大小写、用于 1250（中欧）字符集。
88 | 波兰文字典顺序、不区分大小写、用于 1250（中欧）字符集。
89 | 罗马尼亚字典顺序、区分大小写、用于 1250（中欧语）字符集。
90 | 罗马尼亚文字典顺序、不区分大小写、用于 1250（中欧）字符集。
91 | 克罗地亚文字典顺序、区分大小写、用于 1250（中欧）字符集。
92 | 克罗地亚文字典顺序、不区分大小写、用于 1250（中欧）字符集。
93 | 斯洛伐克文字典顺序、区分大小写、用于 1250（中欧）字符集。
94 | 斯洛伐克文字典顺序、不区分大小写、用于 1250（中欧）字符集。
95 | 斯洛文尼亚文字典顺序、区分大小写、用于 1250（中欧）字符集。
96 | 斯洛文尼亚文字典顺序、不区分大小写、用于 1250（中欧）字符集。
97 | Windows 波兰文、区分大小写排序次序、用于代码页 1250。
98 | Windows 波兰文、不区分大小写排序次序、用于代码页 1250。
104 | 二进制顺序、用于 1251（西里尔字母）字符集。
105 | 字典顺序、区分大小写、用于 1251（西里尔字母）字符集。
106 | 字典顺序、不区分大小写、用于 1251（西里尔字母）字符集。
107 | 乌克兰文字典顺序、区分大小写、用于 1251（西里尔字母）字符集。
108 | 乌克兰文字典顺序、不区分大小写、用于 1251（西里尔字母）字符集。
112 | 二进制顺序、用于 1253（希腊文）字符集。
113 | 字典顺序、区分大小写、用于 1253（希腊文）字符集。
114 | 字典顺序、不区分大小写、用于 1253（希腊文）字符集。
120 | 混合字典顺序、用于 1253（希腊文）字符集。
121 | 字典顺序、区分大小写、区分重音、用于 1253（希腊文）字符集。
124 | 字典顺序、不区分大小写、不区分重音、用于 1253（希腊文）字符集。
128 | 二进制顺序、用于 1254（土耳其文）字符集。
129 | 字典顺序、区分大小写、用于 1254（土耳其文）字符集。
130 | 字典顺序、不区分大小写、用于 1254（土耳其文）字符集。
136 | 二进制顺序、用于 1255（希伯来文）字符集。
137 | 字典顺序、区分大小写、用于 1255（希伯来文）字符集。
138 | 字典顺序、不区分大小写、用于 1255（希伯来文）字符集。
144 | 二进制顺序、用于 1256（阿拉伯文）字符集。
145 | 字典顺序、区分大小写、用于 1256（阿拉伯文）字符集。
146 | 字典顺序、不区分大小写、用于 1256（阿拉伯文）字符集。
152 | 二进制顺序、用于 1257（波罗的文）字符集。
153 | 字典顺序、区分大小写、用于 1257（波罗的文）字符集。
154 | 字典顺序、不区分大小写、用于 1257（波罗的文）字符集。
155 | 爱沙尼亚文字典顺序、区分大小写、用于 1257（波罗的文）字符集。
156 | 爱沙尼亚文字典顺序、不区分大小写、用于 1257（波罗的文）字符集。
157 | 拉脱维亚文字典顺序、区分大小写、用于 1257（波罗的文）字符集。
158 | 拉脱维亚文字典顺序、不区分大小写、用于 1257（波罗的文）字符集。
159 | 立陶宛文字典顺序、区分大小写、用于 1257（波罗的文）字符集。
160 | 立陶宛文字典顺序、不区分大小写、用于 1257（波罗的文）字符集。
183 | 丹麦/挪威文字典顺序、不区分大小写、大写字母优先、用于 1252 字符集。
184 | 瑞典/芬兰文（标准）字典顺序、不区分大小写、大写字母优先、用于 1252 字符集。
185 | 瑞典/芬兰文（电话簿）字典顺序、不区分大小写、大写字母优先、用于 1252 字符集。
186 | 冰岛文字典顺序、不区分大小写、大写字母优先、用于 1252 字符集。
192 | 二进制顺序、用于 932（日文）字符集。
193 | 字典顺序、不区分大小写、用于 932（日文）字符集。
194 | 二进制顺序、用于 949（韩文）字符集。
195 | 字典顺序、不区分大小写、用于 949（韩文）字符集。
196 | 二进制顺序、用于 950（繁体中文）字符集。
197 | 字典顺序、不区分大小写、用于 950（繁体中文）字符集。
198 | 二进制顺序、用于 936（简体中文）字符集。
199 | 字典顺序、不区分大小写、用于 936（简体中文）字符集。
200 | 字典顺序、区分大小写、用于 932（日文）字符集。
201 | 字典顺序、区分大小写、用于 949（韩文）字符集。
202 | 字典顺序、区分大小写、用于 950（繁体中文）字符集。
203 | 字典顺序、区分大小写、用于 936（简体中文）字符集。
204 | 二进制顺序、用于 874（泰文）字符集。
205 | 字典顺序、不区分大小写、用于 874（泰文）字符集。
206 | 字典顺序、区分大小写、用于 874（泰文）字符集。

请参见

SQL 排序规则示例

选择 SQL 排序规则

指定排序规则

SQL 排序规则


设置客户端代码页

客户端使用的代码页取决于操作系统的设置。

在 Windows NT、Windows 2000 或 Windows 98 操作系统中设置客户端代码页

Windows


升级字符集、排序次序和排序规则

Microsoft® SQL Server™ 2000 支持几种不同的方法来指定排序规则。不需要再分别指定字符型数据的代码页和排序次序以及 Unicode 数据的排序规则。在升级时，可以指定 SQL 排序规则与 SQL Server 的现有实例兼容。

因为 Microsoft SQL Server 实例的默认排序规则在安装过程中定义，所以熟悉以下情况中的 SQL Server 2000 排序规则设置很重要：

  11. 应用程序代码在某些方面依赖于先前的 SQL Server 排序规则的行为。

  12. 将在现有 SQL Server 6.5 或 SQL Server 7.0 安装中使用复制功能。

  13. 必须存储反映多种语言的字符型数据。

请参见

用于国际支持的排序规则选项

排序规则

选择排序规则

指定 SQL Server 实例的默认排序规则


安装之后更改排序规则设置

排序规则设置（包括字符集、排序次序和其它针对区域设置的设置）是所有 Microsoft® SQL Server™ 2000 数据库结构的基础。若要更改其中的一个或多个设置，必须重建 master 和用户数据库。

请参见

选择 SQL 排序规则

排序规则

如何重建 master 数据库（重建 Master 实用工具）


安装或升级到 SQL Server 2000 之后

进行标准安装的组件包括：

  • SQL Server 关系数据库引擎。

  • 用于存储系统级信息（如登录和配置设置）并作为数据库模板使用的系统数据库。

  • 作为学习工具提供的 pubs 和 Northwind 示例数据库。

  • 存储过程，重新编译的 Transact-SQL 语句的集合。

  • 用于管理 SQL Server 的交互式管理工具。

  • SQL Server 联机丛书，是完整的 SQL Server 2000 文档。

请参见

联机丛书

管理工具

选择组件

SQL 存储过程

使用开始菜单

系统和示例数据库

系统数据库和数据


使用开始菜单

Microsoft® SQL Server™ 2000 安装程序在"开始"菜单上的"程序"组中创建 Microsoft SQL Server 程序组。从"Microsoft SQL Server"程序组可以启动：

  • 联机丛书。

  • 客户端网络实用工具。

  • 在 IIS 中配置 SQL XML 支持。

  • 企业管理器。

  • 导入和导出数据。

  • 事件探查器。

  • 查询分析器。

  • 服务器网络实用工具。

  • 服务管理器。
Microsoft SQL Server — 版本切换程序组

如果在同一台计算机上安装了 Microsoft SQL Server 2000 的实例（默认的或命名的）和 Microsoft SQL Server 6.5 版，安装程序将删除"Microsoft SQL Server 6.5"程序组并添加"Microsoft SQL Server— 版本切换"程序组。SQL Server 6.5 和 SQL Server 2000 不能同时运行，但是使用"版本切换"程序组后，就可以在两种版本之间切换。

在"开始"菜单中，只有活动版本的 SQL Server 程序组可以在任何特定时间进行访问。非活动版本显示在"版本切换"程序组中，因此可以很快地从一个版本切换到另外一个版本。

"Microsoft SQL Server — 版本切换"程序组包含下列应用程序：

  • Microsoft SQL Server 6.5 或 Microsoft SQL Server 2000（非活动版本）

  • SQL Server 升级向导

  • 卸载 SQL Server 6.5

请参见

在 SQL Server 6.5 和 SQL Server 2000 之间切换


系统和示例数据库

安装 Microsoft® SQL Server™ 2000 之后，安装程序将创建下表中显示的数据库和日志文件。

数据库 | 数据库文件 | 日志文件
master | Master.mdf | Mastlog.ldf
model | Model.mdf | Modellog.ldf
msdb | Msdbdata.mdf | Msdblog.ldf
tempdb | Tempdb.mdf | Templog.ldf
pubs | Pubs.mdf | Pubs_log.ldf
Northwind | Northwnd.mdf | Northwnd.ldf

master、model、msdb 和 tempdb 都是系统数据库。pubs 和 Northwind 示例数据库作为学习工具提供。（这些数据库的名称区分大小写。）SQL Server 联机丛书中的大多数示例都基于这些数据库。

说明 数据库和日志文件的默认位置是 Program Files\Microsoft SQL Server\Mssql\Data。如果安装 SQL Server 时更改了默认位置，则该位置可能会变化。

请参见

Northwind 示例数据库

pubs 示例数据库

系统数据库和数据


定位目录和文件

下表显示 Microsoft® SQL Server™ 2000（主要为默认实例）的目录和文件的默认位置。此外，根据安装选项的不同，下面列出的文件可能不会全部出现在计算机中，而其它没有列出的文件却可能出现。

这里列出的路径为默认路径，如果安装时改变了位置，路径将发生变化。程序和数据文件的位置都可以更改，但是不能更改共享工具的位置。

重要 不要删除下列任何目录或它们的内容：Binn、Data、Ftdata、HTML 或 1033。如果需要可以删除其它目录，但如果不卸载和重新安装 SQL Server 2000，可能无法重新获得任何丢失的功能或数据。

不要删除或修改 HTML 目录中的任何 .htm 文件。SQL Server 企业管理器和其它工具都需要这些文件才能正常工作。

所有 SQL Server 2000 实例的共享文件

下表显示 SQL Server 2000 所有默认和命名实例的共享文件的位置。

位置 | 描述
\Program Files\Microsoft SQL Server\80\Com | 组件对象模型 (COM) 对象的动态链接库 (DLL)。
\Program Files\Microsoft SQL Server\80\Com\Binn\Resources\1033 | 此 COM 目录中 DLL 使用的资源文件 (RLL)。（注意：1033 用于美国英语；本地化版本使用不同目录号。）
\Program Files\Microsoft SQL Server\80\Tools\Binn | Microsoft Windows NT® 客户端可执行文件。
\Program Files\Microsoft SQL Server\80\Tools\Binn\Resources\1033 | Tools\Binn 目录中 DLL 使用的资源文件。
\Program Files\Microsoft SQL Server\80\Tools\Books | SQL Server 联机丛书文件，包括联机帮助文件。
Program Files\Microsoft SQL Server\80\Tools\DevTools\ | 开发人员使用的头文件、库文件和示例程序。
Program Files\Microsoft SQL Server\80\Tools\Html | Microsoft 管理控制台 (MMC) 和 SQL Server HTML 文件。
Program Files\Microsoft SQL Server\80\Tools\Templates | 含有 SQL 脚本的样板文件，可帮助您在数据库中创建对象。

SQL Server 2000 默认实例的程序和数据文件

下表显示 SQL Server 2000 默认实例的程序和数据文件的位置。有些默认文件位置可以在安装时更改。

位置 | 描述
\Program Files\Microsoft SQL Server\Mssql\Backup | 备份文件的默认位置。
\Program Files\Microsoft SQL Server\Mssql\Binn | 用于扩展存储过程的 Microsoft Windows NT 服务器可执行文件和 DLL 文件。
\Program Files\Microsoft SQL Server\Mssql\Binn\Resources\1033 | 在此 Binn 目录中 DLL 使用的资源文件。
Program Files\Microsoft SQL Server\Mssql\Data | 系统和示例数据库文件。
Program Files\Microsoft SQL Server\Mssql\Ftdata | 全文目录文件。
Program Files\Microsoft SQL Server\Mssql\Install | 安装时运行的脚本和最后得到的输出文件。
Program Files\Microsoft SQL Server\Mssql\Jobs | 临时作业输出文件的存储位置。
Program Files\Microsoft SQL Server\Mssql\Log | 错误日志文件。
Program Files\Microsoft SQL Server\Mssql\Repldata | 复制任务的工作目录。
Program Files\Microsoft SQL Server\Mssql\Upgrade | 从 SQL Server 6.5 版升级到 SQL Server 2000 所使用的文件。

SQL Server 2000 默认实例的文件位置

下图显示 Microsoft® SQL Server™ 2000 默认实例的文件位置。

请参见

SQL Server 2000 的文件路径


更改密码和用户帐户

Microsoft® SQL Server™ 2000 服务帐户和密码与 Microsoft Windows® 用户帐户和密码链接。一个位置的更改可能要求另一个位置也作出更改。

安装后更改 SQL Server 服务帐户

安装 SQL Server 2000 之后，请使用 SQL Server 企业管理器更改指派的密码或其它 SQL Server– 相关服务的属性。每个服务都必须单独更改。新用户帐户在服务重新启动时生效。在故障转移群集节点关闭或脱机时，不得更改任何 SQL Server 服务帐户的密码。如果一定要这么做，则在所有节点回到联机状态后，必须使用企业管理器重置该密码。

如果要运行 Microsoft Windows NT®，且选择将当前 SQL Server 服务帐户更改为非管理员帐户（SQL Server 的当前帐户不是管理员帐户），则显示"有效的管理员登录"对话框。SQL Server 必须有管理员权限才能更改安全条目，所以必须输入用户名、密码和域以模拟选定的非管理员服务帐户。

指定该信息后，所有的对象都被授予完全控制权限。对象的位置由下列决定：

  • 为所有的二进制文件和特定实例的数据安装位置设置权限。

  • 注册表权限取决于实例是否是默认值或是否已命名实例：

    对于默认实例，权限仅应用于列在下面 HKLM\Software\Microsoft\MSSQLServer 项中的项:

    • SQLServerAgent

    • 复制

    • 提供程序

    • 安装程序

    • 跟踪

    • MSSQLServer

    对于命名实例，权限应用于整个 HKLM\Software\Microsoft\MicrosoftSQLServer\80 项。

下列权限授予帐户：

  • SeServiceLogonRight，使帐户得以作为服务运行。

  • SeLockMemoryPrivilege，使帐户得以使用 SQL Server 的 AWE 内存功能。

  • SeTcbPrivilege，使帐户得以模拟其它帐户。

如果要在故障转移聚集配置中运行 SQL Server，则还为聚集中的所有二进制文件和所有节点的数据安装位置设置权限。权限还授予聚集对象上的服务帐户。

说明 如果运行 Microsoft Windows 2000 并希望使用 Windows 2000 加密文件系统对任何 SQL Server 文件进行加密，则必须首先解密这些文件，然后才可以更改 SQL Server 服务帐户。如果不首先解密这些文件，然后重置 SQL Server 服务帐户，则将无法解密这些文件。

可以将 SQLServerAgent 服务帐户更改为非 Microsoft Windows NT® 4.0 管理员帐户。但是，Windows NT 4.0 帐户必须是 sysadmin 固定服务器角色的成员，才能运行 SQL Server 代理。

更改 MSSQLServer 服务登录（企业管理器）

企业管理器

企业管理器

Windows 密码更改

如果 Windows 密码在安装 SQL Server 2000 后发生更改（例如密码过期），则必须同样在 Windows 中修改 SQL Server 服务的用户帐户信息。

更改 SQL Server 服务登录帐户信息 (Windows NT)

Windows

Windows

更改 SQL Server 服务登录帐户信息 (Windows 2000)

Windows

Windows

在"控制面板"中更改完 SQL Server 服务帐户信息之后，还必须在 SQL Server 企业管理器中更改 SQL Server 服务帐户。这将使 Microsoft 搜索服务的服务帐户信息也保持同步。

重要 虽然 Microsoft 搜索服务总是指派给本地系统帐户，但是全文检索引擎始终对 Windows 中的 SQL Server 服务帐户进行跟踪。如果 Windows 密码的更改没有使用 SQL Server 企业管理器进行重新设置，则全文检索和故障转移群集就无法使用。

有关创建 Windows NT 用户帐户、授予高级用户权限、设置密码过期和管理组成员的更多信息，请参见 Windows NT 文档或"域用户管理器帮助"。Microsoft Windows 2000 用户请参见 Windows 2000 文档中的"计算机管理"或"组策略编辑器"。

请参见

创建安全帐户

安全构架


重命名服务器

如果更改运行 Microsoft® SQL Server™ 2000 的计算机名称，SQL Server 启动时将识别出新名称。不必再次运行安装程序以重置计算机名称。

重新启动服务器后，可以使用新计算机名称连接到 SQL Server。但是，若要更改 sysservers 系统表，则需手工运行下列过程：

sp_dropserver <old_name>
go
sp_addserver <new_name>
go
与远程登录和复制有关的问题

如果计算机进行了远程登录，例如，如果该计算机是一个复制发布服务器或分发服务器，sp_dropserver 可能会产生以下类似错误：

Server: Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 44
There are still remote logins for the server 'SERVER1'.

若要解决这一问题，则可能需要除去该服务器的远程登录。如果安装了复制，则必须在运行 sp_dropserver 存储过程之前禁用服务器上的复制。

使用 SQL Server 企业管理器禁用复制

  1. 扩展服务器组，然后扩展分发服务器（包含分发数据库的服务器）。

  2. 右击"复制"文件夹，然后单击"禁用发布"。

  3. 完成"禁用发布和分发向导"中的步骤。


初始安装后部署 SQL Server

Microsoft® SQL Server™ 2000 包含分发安装磁盘图象的新方法。第一次创建安装时，该安装标志为一个新的安装。当安装后重新启动服务器时，SQL Server 2000 验证服务器的名称是否已更改。如果服务器名称已更改，则会自动更正名称。

该功能允许独立服务提供商安装 SQL Server 2000、停止服务器、克隆磁盘映象，然后根据需要分发。在第一次启动分发服务器时更正名称。

该过程只可执行一次。如果重新启动然后停止服务器，则必须创建新的 SQL Server 安装作为在部署时分发的映象。


安装全文检索和索引工具

默认情况下，Microsoft® SQL Server™ 2000 标准版和企业版的典型安装均安装全文检索引擎（Microsoft 搜索服务）。

重要 SQL Server 7.0 中没有安装 SQL Server 7.0 到 SQL Server 2000 的升级文件和全文检索，完成升级后应将全文检索作为附加组件安装。

Microsoft 索引服务 2.0 版

除了在 SQL Server 数据的字符列中使用全文检索之外，还可以将 Microsoft 索引服务和 Microsoft 搜索服务一起使用，以便对文件系统中的数据进行文本化查询。该索引服务包含在 Microsoft Windows® 2000 中。Microsoft Windows NT® 用户可以从 Microsoft Windows NT 4.0 Option Pack 安装索引服务。

安装 Microsoft 索引服务 2.0（仅用于 Windows NT）

  1. 安装 Windows NT 4.0 Option Pack。

  2. 选择 Index Server 2.0。出现错误信息，说明 Index Server 2.0 没有正确安装。

  3. 安装 Windows NT 4.0 Service Pack 4。

  4. 重新安装 Windows NT 4.0 Option Pack。不必更改任何设置。

  5. 可选步骤：重复 Windows NT 4.0 Service Pack 4 的重新安装。

    重复这一过程以确保正确安装。

请参见

文件数据的全文查询

如何向 SQL Server 2000 实例中添加组件（安装程序）


在升级之后配置 SQL Server 2000

将服务器升级到 Microsoft® SQL Server™ 2000 后，可能需要执行几项配置任务，例如：

  • 设置服务器配置参数。

  • 设置安全参数。

  • 注册服务器并将其添加到服务器组。

使用 SQL Server 企业管理器或 Transact-SQL 执行这些任务。

请参见

SQL Server 管理概述


在 SQL Server 6.5 和 SQL Server 2000 之间切换

Microsoft® SQL Server™ 2000 可以与 Microsoft SQL Server 6.5 版安装在同一台计算机上，但同一时刻只能有一个版本处于活动状态。

说明 在版本之间切换与运行多实例不同。有关更多信息，请参见处理 SQL Server 的实例和版本。

SQL Server 升级向导完成从 SQL Server 6.5 版的转换后，SQL Server 2000 就成为活动的 SQL Server 版本。如果计算机上有充足的磁盘空间，则可以完整地保留 SQL Server 6.5。

若要从一个版本切换到另一个版本，请使用"开始"菜单上的"Microsoft SQL Server — 版本切换"应用程序，或者运行 Vswitch.exe。

重要 在试图在 SQL Server 的活动版本和非活动版本之间切换之前，请确认 SQL Server 升级向导已完成其升级任务。

从 SQL Server 6.5 切换到 SQL Server 2000

命令提示符

命令提示符

Windows

Windows

请参见

与 SQL Server 2000 一起使用 SQL Server 6.5

升级之后删除 SQL Server 7.0 或 SQL Server 6.5


升级之后删除 SQL Server 7.0 或 SQL Server 6.5

在将 Microsoft® SQL Server™ 7.0 版安装升级为 Microsoft SQL Server 2000 之后，或者在将数据库从 SQL Server 6.5 版升级到 SQL Server 2000 之后，可以在计算机中保留早期的版本。

可以利用许多配置将 SQL Server 早期版本和 SQL Server 2000 保留在一起。有关更多信息，请参见处理 SQL Server 的实例和版本。

在准备删除早期版本时，可以使用"控制面板"中的"添加/删除程序"选项，或者从"开始"菜单运行卸载程序。

删除 SQL Server 7,0

  • 在"开始"菜单上，在 SQL Server 7.0 组中单击"卸载 SQL Server 7.0"。

删除 SQL Server 6.5

  • 在"开始"菜单上，在 SQL Server 6.5 组中单击"删除 SQL Server 6.5"。


删除 SQL Server 2000

可以通过以下方法删除 Microsoft® SQL Server™ 2000 的实例：

  • 运行 SQL Server 2000 安装程序并选择"卸载"选项。

  • 运行"控制面板"中的"添加/删除程序"应用程序。

每个命名的 SQL Server 2000 实例必须单独删除。不能删除 SQL Server 2000 的个别组件。若要删除组件，必须删除整个实例。

重要 删除 SQL Server 2000 之前，退出所有应用程序，包括 Windows NT 事件查看器、注册表编辑器和所有的 SQL Server 应用程序以及所有依赖于 SQL Server 的应用程序。

使用控制面板删除 SQL Server

Windows

Windows

使用安装程序删除 SQL Server 实例

SQL 安装程序

SQL 安装程序

请参见

现有安装选项


升级到 SQL Server 2000：概述

从 Microsoft® SQL Server™ 7.0 版升级到 Microsoft SQL Server 2000 是 SQL Server 安装程序在初始"安装选择"屏幕上提供的基本选项之一。当选择选项"升级、删除或向 SQL Server 现有安装添加组件"时，安装程序检测当前安装并为选定的升级初始化安装程序屏幕的正确顺序。升级的种类包括：

  • 从 SQL Server 7.0 升级到完整的 SQL Server 2000 安装（在 SQL Server 7.0 上安装）。

  • 将组件添加到 SQL Server 2000 安装。

  • 升级 SQL Server 2000 现有安装的功能集（版本和组件升级）。

  • 使用 SQL Server 升级向导从 SQL Server 6.5 版升级到 SQL Server 2000。

  • 使用复制数据库向导从 SQL Server 7.0 数据库联机升级到 SQL Server 2000 数据库格式。

在从 SQL Server 7.0 升级的过程中，必须为每个升级和更新的注册表安装外部包（如 Microsoft 管理控制台和 Microsoft 分布式事务处理协调器）。master 数据库和其它系统数据库以各种方法升级，涉及在服务器上运行一系列带特定选项的脚本。如果升级过程失败，则内置的恢复机制将重新启动和继续升级。

请参见

从 SQL Server 7.0 升级到 SQL Server 2000

升级现有的 SQL Server 安装

升级 SQL Server 7.0 数据库（复制数据库向导）

升级到 SQL Server 2000 故障转移群集


升级的硬件和软件要求

除了安装 Microsoft® SQL Server™ 时的硬件和软件要求之外，计算机还必须满足以下要求才能升级。

硬件/软件 | 升级要求
操作系统 | 带有 Service Pack 5 (SP5) 或更高版本的 Microsoft Windows NT® Server 企业版 4.0。 带有 SP5 或更高版本的 Windows NT Server 4.0 版。 带有 SP5 或更高版本的 Windows NT Workstation 4.0。 Internet Explorer 5.0 或更高版本。 Windows 2000。
SQL Server 6,5 | 当在同一台计算机上将 SQL Server 6.5 版升级到 SQL Server 2000 实例时，必须应用 SQL Server 6.5 Service Pack 5 (SP5) 或更高版本。当在不同的计算机上将 SQL Server 6.5 升级到 SQL Server 2000 实例时，必须应用 SQL Server 6.5 Service Pack 3 (SP3) 或更高版本。
SQL Server 7.0 | SQL Server 7.0（任意 Service Pack 版本）。
网络协议 | 命名管道。 SQL Server 6.5、SQL Server 7.0 和 SQL Server 2000 都必须设置为监听默认管道 \\.\pipe\sql\query。即使是磁带备份升级也必须有命名管道。
硬盘空间 | 从 SQL Server 7.0 升级到 SQL Server 2000 时不需要附加的硬盘空间。 但是从 SQL Server 6.5 升级到 SQL Server 2000 时，所需的空间约为 SQL Server 6.5 数据库大小的 1.5 倍。

请参见

SQL Server 2000 的硬件和软件安装要求


从 SQL Server 7.0 升级到 SQL Server 2000

可以用升级到 SQL Server 2000 的版本覆盖 Microsoft® SQL Server™ 7.0 版的安装。如果在运行安装程序时将 SQL Server 7.0 检测为现有的安装，则可以选择升级选项。在此进程中，会对所有 SQL Server 7.0 程序文件进行升级，并保留 SQL Server 7.0 数据库中存储的所有数据。另外，SQL Server 7.0 的 SQL Server 联机丛书仍会保留在计算机上。

说明 当将 SQL Server 7.0 工具升级到 SQL Server 2000 时，不升级 SQL Server 7.0 事件探查器跟踪和已注册的服务器。同样地，与 Microsoft 知识库 2.0 一起安装的信息模型也不自动升级。SQL Server 2000 支持数据转换服务 (DTS) 和开放信息模型 (OIM) 的较新版本的信息模型。有关升级 DTS 信息模型的更多信息，请参见 DTS 信息模型。有关升级 OIM 的更多信息，请参见升级信息模型。

在将版本升级到 SQL Server 2000 的过程中，也可以从 SQL Server 的一个版本升级到另一个版本。有关更多信息，请参见 SQL Server 2000：版本和组件。

注意 在执行该版本升级后，SQL Server 7.0 安装将在计算机上不复存在。还原 SQL Server 7.0 安装的唯一办法是先卸载 SQL Server 2000，并完全重新安装 SQL Server 7.0 文件，然后还原所备份的 SQL Server 7.0 数据库。

将 SQL Server 7.0 安装升级到 SQL Server 2000

SQL 安装程序

SQL 安装程序

升级之后

从 SQL Server 7.0 升级到 SQL Server 2000 后，建议重新填充全文目录并更新统计。这两项操作可能要耗费很长时间，但将增强 SQL Server 2000 的性能。

重新填充全文目录

因为从 SQL Server 7.0 升级到 SQL Server 2000 后格式上的变化，所以升级进程将数据库标记为禁用全文。升级之后必须重新填充目录，但是因为该操作耗费很长时间，所以在安装时不会自动运行。管理员应计划在一个方便的时间重新填充所有的全文目录。有关更多信息，请参见 sp_fulltext_catalog 和 sp_fulltext_database。

更新统计

升级到 SQL Server 2000 后，建议升级所有的 SQL Server 7.0 统计。虽然该升级在大型数据库上可能会耗费很长时间，但在 SQL Server 2000 中使用 SQL Server 7.0 统计可能会导致查询性能降低。

使用 sp_updatestats 存储过程更新 SQL Server 2000 数据库中用户定义表中的统计。有关更多信息，请参见 sp_updatestats。

请参见

全文索引

如何重新填充数据库的所有全文目录（企业管理器）

Transact-SQL 概述

如何访问 SQL Server 7.0 的 SQL Server 联机丛书


复制和升级

升级到 Microsoft® SQL Server™ 2000 时，每次可以升级单位中的一个服务器；但是，当服务器用于复制时，则必须按先是分发服务器、然后是发布服务器、最后是订阅服务器的次序升级。当存在许多发布服务器和订阅服务器时，建议按照此次序逐个升级服务器。因为这样即使服务器正在运行不同版本的 SQL Server，也仍然可以继续复制数据。可以用运行 SQL Server 2000 实例的服务器创建新的发布和订阅，并仍然保留在 SQL Server 6.5 或 SQL Server 7.0 中创建的订阅。

使用事务复制时，可以在升级发布服务器之前升级订阅服务器。如果将即时更新用于快照复制或事务复制，则在"升级和即时更新"下的本主题中有其它的升级建议。

可以将运行 SQL Server 6.5 或 SQL Server 7.0 的复制服务器升级到运行 SQL Server 2000。如果服务器运行的是 SQL Server 6.5，则在升级到 SQL Server 2000 之前不必先升级到 SQL Server 7.0。

重要 当将为复制配置的服务器升级到 SQL Server 2000 时，必须将数据库兼容级别设置为 70（7.0 版兼容）或更高版本。如果有在 65（6.5版）或更早的兼容级别上运行的服务器，则在升级过程中暂时将它们更改为 70 或更高版本。

在升级到 SQL Server 2000 的过程中，如果发布服务器或订阅服务器在 65 或更早的兼容级别上运行，则会产生 15048 号错误，指出只有 SQL Server 7.0 版或 SQL Server 2000 支持该操作。

有关设置向后兼容级别的更多信息，请参见 SQL Server 2000 与 SQL Server 6.5 版。

如果在故障转移群集上升级复制，则在升级前必须对以前的安装取消群集。对以前的安装取消群集意味着必须删除所有的发布、删除复制并在升级到 SQL Server 2000 后重新配置复制。将 SQL Server 2000 升级到以后发行的版本时并不要求这样。

升级和即时更新

如果将即时更新用于快照复制或事务复制，更改 SQL Server 2000 中的该功能将影响升级的方式。现在即时更新项目中的行使用 uniqueidentifier 列来标识版本，然而 SQL Server 7.0 中使用 timestamp 列。另外，为即时更新生成的触发器已发生更改，并且触发器生成代码已修改为可接受排队更新。由于这些更改，需要附加的升级步骤。

如果使用即时更新：

  • 在复制数据之前升级发布服务器和订阅服务器。

  • 除去发布和对发布的所有订阅。

  • 使用 ALTER TABLE DROP COLUMN Transact-SQL 语句从发布服务器上的表和允许订阅服务器更新的订阅服务器上的表中除去 timestamp 列。

  • 重新创建发布和订阅。系统向已发布的表添加一个 uniqueidentifier 列。该列用于行版本控制（从订阅服务器接收更新时检测冲突）。

虽然建议先将发布服务器和订阅服务器升级，然后再除去并重新创建现有发布，但发布服务器和订阅服务器可以按任何次序升级。如果需要重新初始化订阅服务器或添加新的订阅服务器，则需要除去并重新创建发布。

升级和文件传输协议

如果使用文件传输协议 (FTP)，则应遵循建议的升级路径，这样可以确保订阅服务器能够从分发服务器获取必要的 FTP 信息。

SQL Server 2000 将 FTP 参数存储为发布属性，所以无需在订阅服务器上为每个订阅管理这些参数。升级到 SQL Server 2000 时，"发布属性"对话框中的"FTP"选项为关闭状态，所以需要为每个使用 FTP 的发布打开该属性，然后重新设置 FTP 参数。

使用运行 SQL Server 2000 实例的分发服务器时，SQL Server 7.0 订阅服务器将继续使用存储在订阅属性中的 FTP 参数查找 FTP 文件。但是，运行 SQL Server 2000 实例的订阅服务器将无法从运行 SQL Server 早期版本的分发服务器获取 FTP 信息。

除非需要重新初始化或连接到 FTP 站点，否则使用合并复制或事务复制的现有订阅将不会受到该更改的影响。需要在快照复制发生前指定 FTP 参数，否则复制代理程序将无法查找到快照文件。

有关更改 FTP 参数的更多信息，请参见使用 TCP/IP 和 FTP 通过 Internet 发布数据和如何指定 FTP 信息（企业管理器）。

疑难解答和复制升级

如果升级复制服务器时发生错误，则们可能与数据库脱机或不可用或脚本失败有关。有关如何解决升级复制时所发生错误的更多信息，请参见复制相关帮助。

当复制正在升级时，建议停止复制服务器上的所有数据修改。当从 SQL Server 6.5 升级时，必须在升级前运行日志读取器代理和分发代理，以确保没有复制命令等待传递给订阅服务器。

因为每次对一台运行 Microsoft® SQL Server™ 2000 实例的服务器进行升级，可能会面临这样的情况，即复制拓扑中的服务器运行不同版本的 SQL Server。可以在不同版本的 SQL Server 之间进行复制，但通常仅限于所使用最早版本的功能。

重要 从 SQL Server 6.5 或 7.0 升级到 SQL Server 2000 时，SQL Server 安装程序将运行几个 *.sql 复制脚本。虽然升级进程要用去几分钟时间并且不显示进度提示，但是可以查看位于 SQL Server Install 目录下的 *.out 和 *.err 文件中的错误信息。

请参见

使用 TCP/IP 和 FTP 通过 Internet 发布数据

在不同版本的 SQL Server 之间进行复制

复制数据考虑事项

可更新订阅


升级 SQL Server 7.0 数据库（复制数据库向导）

作为对常规升级过程的增强，可以执行数据库和相关元数据的联机升级。使用复制数据库向导可以从 Microsoft® SQL Server™ 7.0 向 Microsoft SQL Server 2000 实例移动或复制数据库，在此进程中无须关闭任何服务器。

联机数据库升级的优点有：

  • 服务器在升级过程中仍正常工作。

  • 可以自定义选择要升级的数据库，而保留原有的 (SQL Server 7.0) 服务器仍然可用的其它数据库。

  • 可以在升级过程中包括相关元数据。例如，可以包括与用户数据库相关联的登录信息、作业和用户特定对象。

  • 该进程可在方便的时候运行。

数据库复制向导基于分离和附加功能，该功能允许将用户数据库从源服务器移动或复制到目的服务器。数据转换服务 (DTS) 包执行实际的移动或复制操作。可以调度该包在指定的时间运行或必要时重新运行。

SQL Server 7.0 数据库升级选项

数据库管理员可以将一个或多个数据库从 SQL Server 7.0 实例移动或复制到您的本地计算机上的 SQL Server 2000 默认实例，或者到远程计算机上的默认或命名实例。该升级功能不支持 SQL Server 6.5 数据库。

本地计算机
  • SQL Server 7.0 数据库可升级到本地计算机上的 SQL Server 2000 命名实例。
远程计算机
  • SQL Server 7.0 数据库可升级到远程计算机上的 SQL Server 2000 默认实例。

  • SQL Server 7.0 数据库可升级到远程计算机上的 SQL Server 2000 命名实例。

说明 一台计算机一次只能有一个 SQL Server 活动默认实例；这个实例或者是 SQL Server 7.0 的默认实例，或者是 SQL Server 2000 的默认实例。SQL Server 6.5 也是默认实例。有关更多信息，请参见处理 SQL Server 的实例和版本。

例外情况

以下情况不能使用复制数据库向导：

  • 数据库在源服务器和目的服务器上的名称相同时，不能进行移动或复制。在"数据库选择"屏幕上，该数据库将标注为"已经存在"。

  • 对于涉及复制的数据库，需要进行常规的数据库升级。
复制数据库向导安全措施

在开始数据库移动或复制操作时，必须由一个管理员独占所有文件以防止在此过程中修改文件集。复制数据库文件需要两个连接：在两个 SQL Server 安装上都要有 sysadmin 特权，在服务器/网络上要有管理员特权。

若要防止任何数据损坏的可能，在此操作期间，SQL Server 7.0 数据库必须处于只读情况下而且不能重命名。源服务器和目的服务器之间的任何名称冲突必须在升级数据库之前手动解决。这样就不会改写目的服务器上的任何信息。

如果在一次操作中移动或复制多个数据库，则每个数据库实际上是每次移动一个，即一次分离一个数据库，完成文件复制之后再重新附加。为了避免出现任何问题，DTS 包将消息写到错误日志中，表明数据库即将从源服务器分离。同时，脚本就绪，准备将数据库附加到目的服务器。数据库成功附加到目的服务器之后，日志文件中又写入了一个条目，表明已成功完成操作。

当升级到群集的目的服务器时，复制数据库向导将确认选择了群集目的服务器上的唯一共享驱动器。源服务器也可以是群集服务器。

说明 也可以独立于该升级进程，使用复制数据库向导将用户数据库从 SQL Server 2000 的一个实例移动或复制到 SQL Server 2000 的另一个实例。有关更多信息，请参见使用复制数据库向导。

使用复制数据库向导升级联机数据库

向导

向导

请参见

复制数据库向导帮助


升级 SQL Server 6.5 数据库（升级向导）

使用 SQL Server 升级向导可以将数据从 Microsoft® SQL Server™ 6.5 版转换为 SQL Server 2000 的格式。该向导升级所有数据库，传输所有目录数据、对象和用户数据。同时它还传输复制设置、SQL Executive 设置和大多数 SQL Server 6.5 的配置选项。一定要按照准备从 SQL Server 6.5 升级中注释的那样，检查该升级的所有方面。

说明 若要运行 SQL Server 升级向导，计算机上必须已经安装有一个 Microsoft SQL Server 2000 的默认实例。

SQL Server 升级向导并不支持多个 SQL Server 6.5 安装中数据库的合并。如果一定要升级多个服务器上的 SQL Server 6.5 数据库，请首先将所有 SQL Server 6.5 数据库合并到同一台服务器上，然后运行升级向导，对合并后的服务器进行升级。

SQL Server 升级向导不会从计算机上删除 SQL Server 6.5。如果使用磁带备份进行升级，可以选择删除 SQL Server 6.5 设备以节省磁盘空间。

升级过程完成后，会存在两个单独的 SQL Server 安装，它们各自包含两个单独的相同数据集。SQL Server 6.5 与 SQL Server 2000 的安装由此相互独立。

如果在一台计算机上进行升级，则需要额外的磁盘空间。有关更多信息，请参见估计升级所需的磁盘空间。。也可以从一台计算机升级到另一台计算机。有关更多信息，请参见使用一台或两台计算机进行升级（登录屏幕）。

说明 可以无限期的将 SQL Server 6.5 安装保留在计算机上。除了在同一台计算机上保留 SQL Server 6.5 和 SQL Server 2000 默认实例安装之外，也可在同一台计算机上安装 SQL Server 2000 的多个命名实例。有关更多信息，请参见处理 SQL Server 的实例和版本。

使用直接管道执行版本升级

SQL 安装程序

SQL 安装程序

使用磁带驱动器执行版本升级

SQL 安装程序


准备从 SQL Server 6.5 升级

使用 SQL Server 升级向导从 Microsoft® SQL Server™ 6.5 版升级到 Microsoft SQL Server 2000 之前，请遵循以下检查清单：

  • 备份 SQL Server 6.5 数据库文件（所有 .dat 文件，包括 master），以便在必要时可以完全还原这些文件。

  • 在 SQL Server 6.5 数据库上运行适当的数据库控制台命令 (DBCC)，以确保这些数据库处于一致状态。

  • 估计所需的磁盘空间。除了 Microsoft SQL Server 2000 所占用的硬盘空间外，还必须有大约是 SQL Server 6.5 数据库大小的 1.5 倍的硬盘空间。

  • 在 SQL Server 6.5 安装中将 tempdb 设置为至少 10 MB，建议设为 25 MB。

  • 确保 master 数据库中有至少 3 MB 的可用空间。

  • 确保所有数据库用户在 master 数据库中都有登录信息。

    这对还原数据库很重要，因为系统登录信息驻留在 master 数据库中。

  • 确保已经在 SQL Server 2000 上定义了 @@SERVERNAME。如果 @@SERVERNAME 为 NULL，就可以使用 sp_addserver 系统存储过程。例如，如果计算机被命名为"production"，那么命令将是 sp_addserver 'production1',local。所做的改动直到 MSSQLServer 服务重新启动后才生效。

    说明 因为 SQL Server 6.5 不能识别计算机名称中的连字符 (-)，所以用下划线 (_) 代替连字符。

  • 禁用任何启动存储过程。

    SQL Server 升级向导在升级进程中启动及停止 SQL Server 6.5 服务器。启动时处理的存储过程会导致升级进程停止响应。

  • 确保同时升级所有具有跨数据库相关性的数据库。

    例如，若要升级三个数据库：database1、database2 和 database4，并且对于默认为 database3（不在要升级的数据库之列）的 USER1，在 SQL Server 6.5 的 master..sysdatabases 中有登录信息。数据库没有升级，也就不存在于 SQL Server 2000 中，所以 SQL Server 升级向导并不创建登录信息。如果 USER1 被列为任何升级数据库中的对象所有者，那么将因为不存在 USER1 的登录信息而无法创建这些对象。

  • 如果要执行双机升级，请给 SQL Server 6.5 和 SQL Server 2000 中的 MSSQLServer 服务指派域用户名和密码，而不要使用本地系统帐户或本地用户帐户。域用户帐户应同时属于涉及升级的两台计算机的 Administrators 组。（对于单机升级，本地系统帐户就足够了。）

  • 停止复制，并确保日志为空。

  • 退出所有应用程序，包括依赖于 SQL Server 的所有服务。

如果将 SQL Server 6.5 数据库复制到新的计算机上来执行升级，可能需要用以下方法更新新的 SQL Server 6.5 master 数据库：

  • 在 SQL Server 6.5 master 数据库中，将引用从以前的服务器名更改为当前服务器名。

  • 更新 SQL Server 6.5 master 数据库中的设备文件位置。

  • 确保所有的用户都有相应的登录信息。

更改 SQL Server 6.5 中 tempdb 的大小

Transact-SQL

Transact-SQL

更改为 SQL Server 6.5 master 数据库中当前服务器名

Transact-SQL

Transact-SQL

更新 SQL Server 6.5 master 数据库中的设备文件位置

Transact-SQL

Transact-SQL

请参见

估计升级所需的磁盘空间

使用一台或两台计算机进行升级（登录屏幕）

如何从 SQL Server 6.5 升级


估计升级所需的磁盘空间

执行从 Microsoft® SQL Server™ 6.5 版到 SQL Server 2000 的升级之前，必须确保有可用磁盘空间。若想要执行单机或双机升级，这一点就很重要。

SQL Server 升级向导估计从 SQL Server 6.5 升级到 SQL Server 2000 所需的磁盘空间大小。该向导检查当前 SQL Server 6.5 安装并估计 SQL Server 6.5 的数据将在 SQL Server 2000 中占用的磁盘空间量。

您可以估计：

  • SQL Server 2000 数据库的大小。

  • SQL Server 2000 日志的大小。

  • tempdb 所需的磁盘空间数量。

说明 SQL Server 升级向导对所需磁盘空间进行估计，但不能准确地给出需求数量。

估计升级所需的磁盘空间

Windows


数据和对象传输

在"数据和对象传输"屏幕中可以选择升级选项。

从 6.5 版 Server 导出/导入

对象和数据复选框表明 SQL Server 升级向导从选定的 Microsoft® SQL Server™ 6.5 版数据库导出目录数据、对象和用户数据，然后将它们导入新创建的 SQL Server 2000 数据库中。

数据传输方法

可以使用以下两种数据传输方法中的任何一种执行升级：

  • 命名管道（同时导入/导出）

    直接管道使 SQL Server 升级向导得以将内存中的数据从 Microsoft SQL Server 6.5 版传输出来。这一数据传输方法最可靠，而且性能也最佳。然而，执行单机升级时，在版本升级进程完成之前，不能重新使用 SQL Server 6.5 设备所占用的磁盘空间，所以只有在有可用磁盘空间时才能使用该选项。

  • 磁带（需要安装 Microsoft Windows NT® 磁带驱动程序）®

    SQL Server 升级向导将选定要升级的所有 SQL Server 6.5 数据库备份到磁带上。然后 SQL Server 升级向导在创建新数据文件之前，会选择删除所有 SQL Server 6.5 设备，从而释放磁盘空间。

    重要 SQL Server 升级向导会删除所有 SQL Server 6.5 设备，而不仅仅是那些要升级的 SQL Server 6.5 设备。如果选择删除 SQL Server 6.5 设备，则应升级所有数据库。

    只有想在单机上升级、但硬盘上没有足够空间安装 SQL Server 2000 同时又保留 SQL Server 6.5、而且要执行版本升级的情况下，才应使用磁带备份选项。

    说明 SQL Server 升级向导使用命名管道，即使在执行磁带备份升级时也是如此。SQL Server 6.5 和 SQL Server 2000 必须设置为监听默认命名管道：\\.\pipe\sql\query。

验证

使用 SQL Server 升级向导传输对象和数据非常可靠。如果因对象错误或与 Microsoft SQL Server 的兼容性问题而无法导入对象，这些对象将记入 SQL Server 升级向导的输出日志。

SQL Server 升级向导还提供如下可选的验证方法：

  • 验证成功的对象数据传输

    SQL Server 升级向导在升级进程之前检查 SQL Server 6.5 数据库，并在升级后检查 SQL Server 2000 数据库。向导对这两次检查都备有所有对象的列表，其中包括架构和存储过程以及每个表中的行数。然后向导比较两个列表并报告二者之间的任何差异。

  • 彻底的数据完整性验证

    SQL Server 升级向导在升级前后对每个表的每一列进行校验，以验证数据值是否没有任何更改。

    说明 对于对象中有意的差别，SQL Server 升级向导并不将其报告为错误。如果有些对象（通常是存储过程）因其中存在的错误或与 SQL Server 2000 之间的兼容性问题而无法导入，则向导要进行两次报告：一次是在 SQL 脚本中，该脚本显示对象源代码和 SQL Server 2000 尝试创建对象时返回的错误信息，第二次是在验证进程的输出中。


使用直接管道或磁带驱动器进行升级的次序

SQL Server 升级向导使用指定的选项执行版本升级。整个版本升级进程中，SQL Server 6.5 数据库所使用的 Microsoft® SQL Server™ 6.5 版服务器和数据保持原样。同时会对 SQL Server 6.5 目录数据、对象和数据库进行转换，使它们与 SQL Server 2000 兼容。版本升级完成后，SQL Server 2000 即成为工作的系统。

对直接管道升级和磁带驱动器升级而言，升级次序基本相同。差别之一是数据导出及导入的方式。使用磁带驱动器时，数据导出到磁带驱动器发生在关闭 SQL Server 6.5 之后、启动 SQL Server 2000 之前。这些数据稍后将从磁带驱动器导入 SQL Server 2000 中。而在使用直接管道时，导入和导出并为一步，同时进行。

以下列表显示 SQL Server 升级向导执行从 SQL Server 6.5 到 SQL Server 2000 的升级的次序。对直接管道方法和磁带驱动器方法的差别也予以说明。

  • 启动 SQL Server 6.5

  • 更新 SQL Server 6.5 的 ODBC 和 SQL-DMO 组件

  • 检查 SQL Server 6.5 数据库

  • 导出复制设置

  • 从 master 数据库导出服务器配置设置

  • 导出登录信息

  • 导出数据库所有者

  • 从 msdb 数据库导出 SQL Executive 对象和设置

  • 导出所有选定数据库的数据库对象

  • 关闭 SQL Server 6.5
    • 只适用于磁带驱动器：将数据导出到磁带

    • 只适用于磁带驱动器：备份然后删除 SQL Server 6.5 设备
  • 启动 SQL Server 2000

  • 创建数据库

  • 将 SQL Executive 对象和设置修改为 SQL Server 2000 格式

  • 导入登录信息

  • 导入数据库对象
    • 只适用于磁带驱动器：将数据从磁带导入 SQL Server 2000

    • 只适用于直接管道：从 SQL Server 6.5 导出数据，同时将这些数据导入 SQL Server 2000
  • 将修改过的 SQL Executive 对象和设置导入 SQL Server 2000

  • 导入复制设置

  • 检查 SQL Server 2000 数据库

  • 验证升级是否成功

  • 设置 SQL Server 2000 中的数据库选项

  • 将服务器和数据库标记为已移动

  • 除去临时 tempdb 文件


使用一台或两台计算机进行升级（登录屏幕）

升级进程可在一台计算机上进行，也可在两台计算机之间进行，这取决于 Microsoft® SQL Server™ 6.5 版和 SQL Server 2000 的安装位置。SQL Server 升级向导将两台服务器标识为导出服务器和导入服务器。

  • 如果进行单机升级，请保留导入和导出服务器的默认值。

  • 如果进行双机升级，请选择 SQL Server 6.5 服务器所在的计算机的名称作为导出服务器名称。若要从一台计算机将 SQL Server 升级到另外一台计算机，这两台计算机必须在同一个网络域中。

重要 当升级用于复制的服务器时，仅支持单机升级。复制服务器不支持双机升级。

导出服务器 (6.5)

导出服务器 (6.5) 是 SQL Server 6.5 服务器的名称。此名称默认为运行 SQL Server 升级向导的计算机的名称，但如果 SQL Server 6.5 服务器在另外一台计算机上，则可以更改此名称。

  • 服务器名称

    服务器名称是 SQL Server 6.5 服务器的名称。此名称默认为运行 SQL Server 升级向导的计算机的名称，但如果 SQL Server 6.5 服务器在另外一台计算机上，则可以更改此名称。

  • 管理员密码 ('sa')

    输入 SQL Server 6,5 服务器系统管理员 (sa) 密码。

  • 可选启动参数

    输入在 SQL Server 升级向导启动 SQL Server 6.5 服务器时要使用的跟踪标记或其它启动参数。

导入服务器

导入服务器是 SQL Server 2000 服务器的名称。此名称始终是运行 SQL Server 升级向导的计算机的名称。

  • 服务器名称

    服务器名称是 SQL Server 2000 服务器计算机的名称。此名称始终是运行 SQL Server 升级向导的计算机的名称。

  • 管理员密码 ('sa')

    输入 SQL Server 2000 服务器系统管理员 (sa) 密码。除非在安装 SQL Server 2000 时作了更改，否则默认的 sa 密码为空白。

  • 可选启动参数

    输入在 SQL Server 升级向导启动 SQL Server 2000 服务器时要使用的跟踪标记或其它启动参数。


选择脚本代码页

SQL Server 升级向导要求选择用于创建升级脚本的脚本代码页。当升级向导中出现"代码页选择"屏幕时，大多数用户可以接受记录于 master 数据库中的默认代码页。

在一些情况下，Microsoft® SQL Server™ 6.5 安装实际使用的代码页与记录在 master 数据库中的代码页不同。如果知道实际代码页与所记录的代码页不同，请在"代码页选择"屏幕的列表中选择实际使用的代码页。

注意 如果选择默认代码页之外的脚本代码页，则不要升级复制设置。如果复制涉及到服务器，请在升级完成后重新配置复制设置。

SQL Server 2000 中对排序规则设置的增强不能直接应用于 SQL Server 6.5 升级的代码页选择。有关排序规则增强的更多信息，请参见排序规则。


选择要升级的数据库

运行 SQL Server 升级向导时，可以选择升级 Microsoft® SQL Server™ 6.5 版的部分或全部数据库。其中系统数据库 master、msdb 和 publication 以及示例数据库 pubs 和 Northwind 无法显示选择。但可以在 SQL Server 升级向导的"服务器配置"对话框中选择升级数据库 master、msdb 和 publication（默认选项）。

说明 如果在已经升级了数据库后再次运行 SQL Server 升级向导，则先前更新的那些数据库就默认地纳入排除列表。如果想对一个数据库再次升级，在 SQL Server 2000 中除去该数据库并把它移至向导中的升级列表。


数据库配置

传输数据之前，如有必要，SQL Server 升级向导会创建足够大的数据库和日志文件来容纳升级的数据库数据。在"数据库创建"屏幕上有几个用于创建 Microsoft® SQL Server™ 2000 数据库和日志文件的选项。

使用默认数据库配置

SQL Server 升级向导估计容纳每个所选数据库传输的对象和数据所需的空间大小，并按照估计的大小创建相应的数据库文件。除装载的数据所需空间之外，向导不再预留可用空间。默认情况下，数据库的数据文件存放在 SQL Server 6.5 中该数据库使用的第一个设备位置。

SQL Server 升级向导还根据 SQL Server 6.5 日志的大小为每个数据库创建一个日志文件。默认情况下，该日志文件存放在 SQL Server 6.5 中日志空间所用的第一个设备位置。

可以在 SQL Server 升级向导中查看和编辑默认的数据库配置。可以修改每个数据库和日志文件的：

  • 名称和文件路径。

  • 文件的初始大小。

  • 自动增长的增量。

如果在 SQL Server 6.5 版数据库中使用多个设备，那么将在同一位置创建多个数据库文件。但调整第一个数据库文件的大小以容纳多数数据，其它文件则尽可能地小。若要删除这些文件，必须在创建它们之前完成删除。所有文件都设置为在需要更多空间时自动增长。

使用自定义数据库配置

可以采用两种方法指定自定义配置：

  • 使用在 SQL Server 2000 中创建的数据库和日志。

    SQL Server 升级向导不会创建任何用户数据库。在启动 SQL Server 升级向导之前，应在 SQL Server 2000 中创建必需的数据库和日志。此选项只在必要时使用。

  • 使用自己提供的 SQL 脚本文件。

    SQL Server 升级向导使用您提供的 SQL 脚本文件创建必要的用户数据库和日志。只有熟悉 SQL Server 2000 中的新 CREATE DATABASE 语句时，才可使用此选项。

如果要创建用户数据库或 SQL 脚本文件，则 SQL Server 2000 数据库必须与 SQL Server 6.5 中的数据库同名。同时，请记住在 SQL Server 2000 中，数据或许要比在 SQL Server 6.5 中占用更多的磁盘空间。SQL Server 升级向导将对这种需求增长作出估计。如果需要，可以查看建议的 SQL Server 2000 数据文件的布局以便得到估计的 SQL Server 2000 数据库的初始大小，并编辑默认配置。有关更多信息，请参见建议的数据库布局。

建议每个数据库都保留使用自动增长功能。还可为每个数据库设置向后兼容级别。

编辑默认数据库配置

向导

向导

请参见

CREATE DATABASE

估计升级所需的磁盘空间


建议的数据库布局

"建议的数据库布局"对话框列出 Microsoft® SQL Server™ 升级向导将要创建的数据库、文件组和数据文件。可以从"文件"菜单中创建或删除文件组和数据文件。双击一个数据文件以编辑文件名、初始大小或文件增长详细信息。

对象详细信息

单击建议数据库布局中的文件组或数据文件以查看其详细信息。单击建议数据库布局中的数据库以查看其摘要信息。

驱动器摘要

驱动器摘要列出所有本地固定磁盘驱动器，并列出每个驱动器中现有 SQL Server 6.5 版数据文件的大小、建议的 SQL Server 2000 数据文件的大小和可用空间。在"选项"菜单上选择"可用空间包括 SQL Server 6.5 文件"以查看若删除 SQL Server 6.5 数据文件后将剩余的可用空间。如果使用磁带升级并且删除了 SQL Server 6.5 设备，该选项将显示可用磁盘空间。

请参见

数据库配置


磁带升级传输选项

执行磁带备份时，必须选择磁带驱动器并选择 SQL Server 升级向导处理备份操作和删除 Microsoft® SQL Server™ 6.5 版数据库中的对象的方式。

数据传输设备

创建 SQL Server 2000 数据库之前，SQL Server 升级向导将所有正在升级的数据传输到此磁带驱动器中。

备份 SQL Server 6.5 设备

也可以选择备份 SQL Server 6.5 设备。这与 SQL Server 升级向导为完成升级而执行的将数据传输到磁带的操作是分开的。备份设备有两个选项：

  • 提示手动备份设备

    导出数据之前，SQL Server 升级向导暂停并提示用户执行备份。SQL Server 升级向导并不会为您执行备份。必须使用象 Microsoft Windows NT® 备份这样的备份实用工具。

  • 自动将设备文件复制到以下位置

    导出数据之前，SQL Server 升级向导将设备文件复制到共享网络目录。

警告 若要将设备备份到磁带上，请先删除磁带备份并插入空白磁带然后再继续操作。SQL Server 升级向导在开始将数据传输到磁带驱动器之前，会格式化驱动器中的磁带。如果没有删除磁带备份，SQL Server 升级向导会将其重写。

删除 SQL Server 6.5 设备

如果决定在创建 SQL Server 2000 数据库之前删除 SQL Server 6.5 设备，可以选择是否在删除设备之前得到提示。如果选择删除设备，即使只是要升级一个数据库，所有 SQL Server 6.5 设备文件都将删除。这将导致 SQL Server 6.5 服务器无法使用，除非还原这些文件。

说明 如果选择不删除设备，则必须保证有足够的磁盘空间同时容纳 SQL Server 6.5 和 SQL Server 2000 数据库。如果有足够的可用磁盘空间，则应选用命名管道升级而非磁带升级。

请参见

如何使用磁带驱动器将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）


系统配置

在"系统配置"屏幕上可以设置要传输的系统对象、ANSI Nulls 和被引用的标识符的选项。

要传输的系统对象

当 SQL Server 升级向导升级数据库 master 时，可以升级几个配置选项：

  • 服务器配置

    与 Microsoft® SQL Server™ 2000 相关的登录信息和远程登录注册以及服务器配置选项均作为版本升级进程的一部分进行传输。在 SQL Server 2000 中没有用到的 SQL Server 6.5 中的配置选项不进行传输。

  • 复制设置

    只要任何选定的数据库（包括分发数据库）中有项目、订阅和发布，就传输并升级这些项目、订阅和发布。

  • SQL Executive 设置

    由 SQL Executive 调度的所有任务都传输并升级，以使 SQL Server 2000 能在 SQL Server 代理中调度和运行这些任务。

说明 升级复制或 SQL Executive 设置会导致重写当前对 SQL Server 2000 复制或 SQL Server 代理设置所做的修改。

ANSI Nulls

ANSI_NULLS 选项控制数据库的默认为空性以及空值比较。在将 Microsoft SQL Server 6.5 版升级到 SQL Server 2000 时，应将 ANSI_NULLS 选项设置为 ON 或 OFF。

SQL Server 升级向导创建 SQL Server 2000 数据库表时，ANSI_NULLS 选项所确定的数据库默认为空性并不会导致问题。根据各自在 SQL Server 6.5 中的状态，所有列都被显式限定为 NULL 或 NOT NULL。

SQL Server 升级向导创建 SQL Server 2000 数据库对象时，选项 ANSI_NULLS 在空值比较方面显得很重要。若 ANSI_NULLS 设置为 ON，比较运算符 EQUAL (=) 和 NOT EQUAL (<>) 在其某一参数为 NULL 时总是返回值 NULL。若 ANSI_NULLS 设置为 OFF，这些运算符根据两个参数是否均为 NULL 而返回 TRUE 或 FALSE。

在 SQL Server 6.5 中，存储过程和触发器之类的对象中的选项 ANSI_NULLS 都是在查询执行时解析的。而在 SQL Server 2000 中，选项 ANSI_NULLS 是在对象创建时解析的。必须为要升级的数据库中的所有对象选择所需的 ANSI_NULLS 选项设置。然后 SQL Server 升级向导就可以应用该 ANSI_NULLS 设置创建所有数据库对象。

被引用的标识符

说明 在 SQL Server 2000 中，默认情况下使用被引用的标识符，即它们被设置成 ON。这与它们在 SQL Server 7.0 中按默认方式设置为 OFF 有所不同。

QUOTED_IDENTIFIER 设置决定 Microsoft SQL Serve 赋予双引号 (") 何种含义。若 QUOTED_IDENTIFIER 设置为 OFF，则双引号界定字符串，与单引号的意义相同。若 QUOTED_IDENTIFIER 设置为 ON，则双引号界定标识符（例如列名）。如果标识符名称中含有非法字符（包括空格和标点符号），或标识符名称与 Transact-SQL 的保留字冲突，则标识符必须用双引号引起来。无论 QUOTED_IDENTIFIER 设置如何，标识符都可以用方括号界定。

根据 QUOTED_IDENTIFIER 设置为 ON 或 OFF，语句的含义不同，例如：

SELECT "x" FROM T

如果 QUOTED_IDENTIFIER 设置为 ON，"x"解释为列名是 x。如果该选项设置为 OFF，"x"便为常量字符串 x，与字母 x 等价。

如果 QUOTED_IDENTIFIER 设置为 ON 时创建一个存储过程，而前述 SELECT 语句示例是该存储过程的一部分，则"x"总是表示列名是 x。即使 QUOTED_IDENTIFIER 设置后来切换为 OFF，存储过程仍然像该设置为 ON 一样，将"x"解释成列名是 x。

SQL Server 升级向导在 SQL Server 2000 中重新创建数据库对象时，QUOTED_IDENTIFIER 设置决定所有这些对象的行为。如果 SQL Server 6.5 中所有对象创建时 QUOTED_IDENTIFIER 设置都相同，请单击该设置（"开"或"关"）。如果 SQL Server 6.5 版中的对象创建时两种设置都有，或对所用的设置不确定，请单击"混合型"。

如果选择选项"混合型"，则 SQL Server 升级向导首先对所有含有双引号、QUOTED_IDENTIFIER 设置为 ON 的对象进行转换。然后 SQL Server 升级向导转换所有创建时未将 QUOTED_IDENTIFIER 设置为 OFF 的对象。

请参见

如何用直接管道将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）

如何使用磁带驱动器将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）


完成 SQL Server 升级向导

用此屏幕查看所作选择的摘要。

单击"在记事本中查看警告和选择"按钮以打开升级脚本的文本版。如果所有的选项都正确，请单击"完成"按钮。


升级脚本解释器

单击"完成"按钮之后，该屏幕将显示升级的进度。

进度指示器

显示关于当前任务及完成进度信息。所显示的信息根据任务的类型而不同。

任务

SQL Server 升级向导在启动时将每个升级任务添加到列表中。

状态

SQL Server 升级向导显示每项任务的状态（正在运行、完成或错误）。

已启动

SQL Server 升级向导显示任务开始的时间和日期。

结束

SQL Server 升级向导显示完成的或终止的任务的结束时间和日期。

暂停任务

临时挂起版本升级进程，直到单击"继续"按钮。

取消任务

取消当前运行的任务而继续运行下一个任务。除非确信在运行后续任务之前无需完成当前任务，否则不要取消任务。

重试任务

重试当前升级任务。如果任务因出现错误而结束并更正了问题，SQL Server 升级向导将重试当前任务。

步骤之间的暂停

可用于交互地参予版本升级进程并跟踪 SQL Server 升级向导的进度。SQL Server 升级向导在版本升级进程的每个步骤之间请求确认。


向后兼容性

向后兼容性问题分为以下几部分：

  • 有关从 Microsoft® SQL Server™ 7.0 版升级到 SQL Server 2000 的相关问题，请参见本章后面的：

    SQL Server 2000 与 SQL Server 7.0 版

  • 有关在 SQL Server 6.5 和 Microsoft SQL Server 2000 之间升级的相关问题，请参见本章后面的：

    SQL Server 2000 与 SQL Server 6.5 版

    如果从 SQL Server 6.5 升级到 SQL Server 2000，则两部分都要查看。


SQL Server 2000 与 SQL Server 7.0 版

Microsoft® SQL Server™ 2000 与 SQL Server 7.0 在大多数方面是兼容的。这部分描述从 SQL Server 7.0 升级到 SQL Server 2000 时的向后兼容性问题：

  • 客户端网络实用工具和命名实例

  • 多服务器作业和命名实例

  • 升级 SQL Server 6.5 客户端软件

  • 身份验证模式

  • 在远程表上所执行操作的 ROWCOUNT 设置

  • 服务器配置选项

  • 恢复模型和数据库选项

  • 保留关键字

  • SQL 事件探查器扩展存储过程

  • SQL 查询分析器中的默认连接选项设置

  • bcp 实用工具

  • 来自早期版本可视化数据库设计工具的数据库关系图

  • 数据转换服务

  • 指定信任连接

  • SQL-DMO 中的扩展对象

  • SQL-SCM

  • English Query 和 SQL Server 7.0 OLAP 服务
客户端网络实用工具和命名实例

当使用来自 SQL Server 7.0 或其早期版本的 SQL Server 客户端连接组件时，在连接到 SQL Server 2000 的命名实例之前，必须使用客户端网络实用工具设置别名。例如，若要在 SQL Server 7.0 客户端上连接 SQL Server 2000 命名实例，必须添加指向 \\computername\pipe\MSSQL$instancename\sql\query 的别名。如果使用别名 computername\instancename，客户端可按 SQL Server 2000 客户端所做的那样，通过指定该别名进行连接。对于 TCP/IP 套接字和 NWLink IPX/SPX Net-Library，则必须使用客户端网络实用工具在客户端定义别名，该客户端指定了端口地址，在该端口地址上可以监听命名实例。

多服务器作业和命名实例

当使用主服务器和目标服务器时，SQL Server 7.0 不能与 SQL Server 2000 命名实例相互操作。若想一起使用 SQL Server 7.0 实例和 SQL Server 2000 实例以进行 MSX/TSX 操作，必须使用 SQL Server 2000 的默认实例而不是其命名实例。

升级 SQL Server 6.5 客户端软件

当在服务器上运行 SQL Server 6.5 版实例时，适用于下列问题：

若想从 SQL Server 6.5 客户端软件升级到 SQL Server 2000 客户端软件，并且有使用默认 Net-Library 的应用程序，则必须使用客户端网络实用工具使命名管道或多协议作为默认 Net-Library，才能进行 Windows 身份验证连接。

身份验证模式

SQL Server 2000 可以在两种安全（身份验证）模式下运行：

  • Windows 身份验证模式（Windows 身份验证）

  • 混合模式（Windows 身份验证和 SQL Server 身份验证）

混合模式允许用户使用 Windows 身份验证或 SQL Server 身份验证进行连接。通过 Microsoft Windows NT® 4.0 或 Windows 2000 用户帐户连接的用户可以在 Windows 身份验证模式或混合模式下使用信任连接（由 Windows NT 4.0 或 Windows 2000 验证的连接）。

提供 SQL Server 身份验证是为了向后兼容。SQL Server 身份验证的一个例子是：创建单个 Microsoft Windows® 2000 组，将所有必要的用户添加到该组中，然后授于这个 Windows 2000 组登录 SQL Server 及访问任何所需数据库的权限。

在远程表上所执行操作的 ROWCOUNT 设置

当将数据库兼容级别设置成 80 时，在 SQL Server 2000 中的远程表上执行的 INSERT 语句不支持 ROWCOUNT。对于这些 INSERT 操作，将忽略 SET ROWCOUNT 选项。

SQL Server 7.0 支持在远程表上执行的 INSERT 语句的 ROWCOUNT 设置。

服务器配置选项

SQL Server 2000 不支持下列服务器配置选项。

default sortorder id | resource timeout
extended memory size | spin counter
language in cache | time slice
language neutral full-text | unicode comparison style
max async IO | unicode locale id

有关配置选项的更多信息，请参见设置配置选项和 sp_configur。

恢复模型和数据库选项

Microsoft® SQL Server™ 2000 提供下列恢复模型，用以简化恢复计划、简化备份和恢复过程以及阐明系统操作要求之间的折衷：

  • 简单恢复

  • 完全恢复

  • 大容量日志记录恢复

每一个模型都针对性能、磁盘和磁带空间以及保护数据丢失的不同需要。

在 SQL Server 7.0 和早期版本中，通过 trunc. log on chkpt 和 select into/bulkcopy 数据库选项的组合设置来提供类似的功能。trunc. log on chkpt 和 select into/bulkcopy 数据库选项可通过使用 sp_dboption 存储过程来设置。

下表将 trunc. log on chkpt 和 select into/bulkcopy 的设置映射到新恢复模型。

如果 trunc. log on chkpt 是： | 且 select into/bulkcopy 是： | 则恢复模型是：
FALSE | FALSE | FULL
FALSE | TRUE | BULK-LOGGED
TRUE | TRUE | SIMPLE
TRUE | FALSE | SIMPLE

说明 如果升级某个数据库，而此数据库中的 trunc. log on chkpt 和 select into/bulkcopy 选项设置为真，select into/bulkcopy 设置为假，则强制此数据库为简单恢复模型。

为保持向后兼容，SQL Sever 2000 支持 trunc. log on chkpt 和 select into/bulkcopy 数据库选项，但在以后的版本中可能不再支持。

在 SQL Server 2000 中，ALTER DATABASE Transact-SQL 语句提供 SET 子句用以指定数据库选项，包括恢复模型。有关数据库选项的更多信息，请参见设置数据库选项和 ALTER DATABASE。

保留关键字

在 SQL Server 2000 中，这些关键字不再是保留关键字：AVG、COMMITTED、CONFIRM、CONTROLROW、COUNT、ERROREXIT、FLOPPY、ISOLATION、LEVEL、MAX、MIN、MIRROREXIT、ONCE、ONLY、PERM、PERMANENT、PIPE、PREPARE、PRIVILEGES、REPEATABLE、SERIALIZABLE、SUM、TAPE、TEMP、TEMPORARY、UNCOMMITTED、WORK。

在 SQL Server 2000 中，这些关键字是保留关键字：COLLATE、FUNCTION、OPENXML。

SQL 事件探查器扩展存储过程

在 SQL Server 2000 中不支持 SQL 事件探查器扩展存储过程，如 xp_trace_addnewqueue 和 xp_trace_generate_event。它们由一组新存储过程和系统用户定义函数替换。有关更多信息，请参见创建并管理跟踪和模板。

SQL 查询分析器中的默认连接选项设置

在 SQL Server 7.0 版及其早期版本中，SQL 查询分析器中 SET QUOTED_IDENTIFIER 的默认设置为 OFF。在 SQL Server 2000 中，SQL 查询分析器中的默认设置为 ON，这也是 ODBC 和 OLE DB 的默认设置。此外，SQL Server 2000 中的许多新特性（如索引视图和计算列上的索引）都要求该选项为 ON。

说明 当 QUOTED_IDENTIFIER 设置为 ON 时，如果对字符串使用双引号，则将收到语法错误。

bcp 实用工具

若要在 SQL Server 2000 中读取由 DB-Library bcp 的早期版本创建的字符文件，请使用 -V 开关。有关更多信息，请参见 bcp 实用工具。

来自早期版本可视化数据库设计工具的数据库关系图

对于拥有使用早期版本可视化数据库设计工具创建的数据库关系图的用户：

  • 如果在 SQL Server 2000 数据库上使用的第一个可视化数据库工具的版本比 SQL Server 2000 中的工具早，则 SQL Server 企业管理器不能在该数据库中打开或创建数据库关系图。任何这种尝试都将导致错误：
    ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]Could not find stored procedure 'dbo.dt_getobjwithprop_u'.

    有几种可将数据库置于这种状态的可视化数据库工具。这些工具包括在 SQL Sever 7.0 及其早期版本中的查询设计器、视图设计器、数据库设计器和表设计器，以及许多用于枚举数据库对象的工具。在 Microsoft Access 2000 和 Microsoft Visual Studio® 6 中也有这些工具。

    在数据库上运行下列脚本将使 SQL Server 企业管理器可以处理该数据库中的数据库关系图：

    alter table dbo.dtproperties add uvalue nvarchar(255) null
go
if exists(select * from dbo.dtproperties) exec('update dbo.dtproperties set uvalue = convert(nvarchar(255), value)')
go

    该脚本运行后，SQL Sever 2000 中的 SQL Sever 企业管理器和可视化数据库工具的早期版本都可以访问该数据库中的数据库关系图。当对 SQL Server 2000 数据库使用数据库工具的早期版本时，还要考虑其它问题。有关更多信息，请参见 SQL Server 2000 的硬件和软件安装要求。

数据转换服务

以下是数据转换服务 (DTS) 的向后兼容性问题。

扩展 DTS 对象

数据转换服务 (DTS) 中的某些对象在 SQL Server 2000 中得到了扩展。 有关在 SQL Server 7.0 及其早期版本中使用新的数据转换服务对象、方法及属性的更多信息，请参见扩展 DTS 对象。

复制 SQL Server 对象任务

当在 SQL Server 2000 和 SQL Server 7.0 的实例之间复制数据库对象时，在使用复制 SQL Server 对象任务（Microsoft SQL Server 7.0 版中的传输 SQL Server 对象任务）上有限制。有关更多信息，请参见复制 SQL Server 对象任务。

在 SQL Server 7.0 或其早期版本上运行 DTS 包

在 SQL Server 2000 的实例上创建的 DTS 包不能装载到或运行于 SQL Server 7.0 版（或早期版本）的实例上。如果试图这么做，则可能会收到下面消息中的一个：

  • "无效的类字符串。"

  • "参数不正确。"

两条消息都指明：当前的服务器并不包含用于装载该包所必须的所有组件，并且不能支持在 DTS 包中所定义的对象（例如任务及转换）。

但是，如果收到这两条消息中的一条，仍然可以在 SQL Server 2000 实例上打开并运行包。

使用具有不同的排序规则、不同的代码页和非 Unicode 数据的 DTS

当使用复制 SQL Server 对象任务和复制列转换在 Microsoft SQL Server 2000 和 Microsoft SQL Server 7.0 实例之间复制非 Unicode 数据时，使用不同的代码页和排序规则会出现问题。有关更多信息，请参见数据变换和转换注意事项。

指定信任连接

在 SQL Server 7.0 中，不必在连接字符串中为 ADO、OLE DB 或 ODBC 编写"trusted_connection=yes"代码即可获得信任连接。如果未指定 UID 和PASSWORD，SQL Server 将默认为尝试信任连接。而在 SQL Server 2000 中，必须编写"trusted_connection=yes"代码才能获得信任连接。

SQL-DMO 中的扩展对象

SQL-DMO 中的某些对象在 SQL Server 2000 中得到了扩展。有关在 SQL Server 7.0 或其早期版本中使用扩展 SQL-DMO 对象、方法及属性的更多信息，请参见扩展 SQL-DMO 对象程序设计。

SQL-SCM

SQL-SCM（服务控制管理器）API 已删除，不再受到支持。

English Query 和 SQL Server 7.0 OLAP 服务

对于想要安装或卸载 English Query 的SQL Sever 7.0 OLAP 服务的用户，将会发生下列问题：

  • 在安装期间必须停止运行 SQL Sever 7.0 OLAP 服务。在安装 English Query 之前必须关闭 OLAP 服务。（请参见"控制面板"中的"服务"应用程序。）

  • 如果已安装了 SQL Server 7.0 OLAP 服务并且卸载 English Query，则必须重新安装 OLAP 服务。相反，如果已安装了 English Query 并且卸载 OLAP 服务，则必须重新安装 English Query 以维护 OLAP 连通性。

在 SQL Server 2000 Analysis Services（即以前的 OLAP Services）中不会发生上述问题。


SQL Server 2000 与 SQL Server 6.5 版

Microsoft® SQL Server™ 2000 与 SQL Server 6.5 版在许多方面兼容。SQL Server 2000 中保留了 SQL Server 6.5 版的大多数产品功能。在 SQL Server 升级向导将数据库服务器升级到 SQL Server 2000 后，大多数 SQL Server 6.5 应用程序的运行方式不变。

SQL Server 2000 升级进程：

  • 添加能使任务更容易完成的 SQL Server 2000 的新特性或更改后的早期版本功能。

  • 将升级所需的时间和努力减到最小。

在某些情况下，会发生兼容性问题：

  • 配置选项

    一些服务器配置选项已经更改。

  • SQL-DMO、任务和复制

    任务、复制和设备对象发生更改。SQL Server 2000 使用作业代替任务，并提供新系统表和系统存储过程。

  • 复制和触发器

允许在订阅服务器上进行数据修改的复制类型使用触发器跟踪已发布表的更改。如果在修改已发布表的应用程序上存在触发器，则应启用 sp_configure 服务器选项 nested triggers。该选项影响合并复制中使用的表，或具有即时更新或排队更新选项的快照复制或事务复制中使用的表。在将这些复制类型添加到使用触发器的现有数据库之前，确保应用程序正常工作并启用 nested triggers 选项。默认情况下启用 nested triggers 选项；但如果以前禁用了该选项，则需要再次启用它。

  • 段和设备

    SQL Server 7.0 和 SQL Server 2000 存储索引或表时，使用文件和文件组代替段和设备。除非应用程序依赖于设备中的段的物理布局，否则应用程序不会因此出现兼容性问题。

  • 系统表

    如果应用程序依赖于直接访问系统表，则可能需要修改应用程序。建议使用系统存储过程或信息架构视图。

    下面是不包含在 SQL Server 2000 中的 SQL Server 6.x 系统表。

    master.dbo.spt_datatype_info | sysprocedures
    sysbackupdetail | sysrestoredetail
    sysbackuphistory | sysrestorehistory
    syshistory | syssegments
    syskeys | systasks
    syslocks | sysusages

  • 备份和还原

    SQL Server 2000 使用 BACKUP 和 RESTORE 语句代替 DUMP 和 LOAD。向后兼容支持 DUMP 和 LOAD，但有一些限制。

  • 系统存储过程

    不再支持某些系统存储过程。

有关更多信息，请参见对特定向后兼容性问题的讨论。

设置向后兼容级别

当在默认设置下运行时，对于某些行为与 SQL Server 早期版本中的标准不同的 Transact-SQL 语句，Microsoft SQL Server 2000 执行 SQL-92 行为。SQL Server 2000 还强制保留一些关键字，这些关键字在 SQL Server 的早期版本中不属于关键字。如果使用现有的应用程序升级现有的系统，可以使用数据库兼容级别设置保留以前的行为（如果现有的应用程序依赖于这些行为）。这为您提供了时间以便按有序的方式升级应用程序。但是，大多数应用程序都不受这种行为改变的影响，并可以在SQL Server 2000 兼容级别中运行。

使用 sp_dbcmptlevel 系统存储过程可以为每个数据库指定兼容级别。可以将数据库兼容级别设置为 60（与 6.0 版兼容）、65（与 6.5 版兼容）、70（与 7.0 版兼容）以及默认值 80（与 SQL Server 2000 兼容）。兼容级别设置一般被限制为对少数 Transact-SQL 语句的行为有影响，这些语句也存在于 SQL Server 的早期版本中。即使当将数据库兼容级别设置为 60 或 65 时，应用程序也能获得几乎所有 SQL Server 2000 的新性能增强收益。应用程序还从某些功能（如改进的查询处理器）中获益。有关更多信息，请参见 sp_dbcmptlevel 中有关不同设置所控制的特定行为的讨论。

对于安装 SQL Server 2000 的所有实例，所有数据库的默认级别为 80。对于从 SQL Server 7.0 升级到 SQL Server 2000，所有数据库的默认级别为 80。对于从 SQL Server 6.5 和 SQL Server 6.0 升级到 SQL Server 2000，保持现有默认兼容级别。

重要 master 数据库的兼容级别为 80 并且不能更改。如果向 master 添加了任何用户定义对象，则必须保证它们能够在 80 兼容级别下正确运行。

model 数据库在升级过程中自动设置成 SQL Server 2000 兼容级别。所有用户定义的新数据库创建时的兼容级别设置都与 model 一样。如果不希望在升级之后创建的新数据库中使用任何 SQL Server 2000 行为，那么请使用 sp_dbcmptlevel 更改 model 中的兼容级别设置。

在较低兼容级别将禁用某些行为。例如，关键字 LEFT、OUTER 和 JOIN 在兼容级别 60 不是关键字。这意味着数据库兼容级别必须设置为 65 或更高，LEFT OUTER JOIN 子句才有效。在任意应用程序能够利用那些只在较高兼容级别下才可用的特性之前，所有使用数据库的应用程序都必须升级，以便在较高的兼容级别下正常运行。

同样，将数据库兼容级别设置成 65 可使数据库与 6.5 版兼容，但不一定提供 6.5 版的行为。例如，当 SET ANSI_PADDING 为 ON 并且试图将字符串 'abc' 和 'abc ' 插入主键列时，SQL Server 2000 认为这两个字符串是重复的并且不违反主键约束。在 SQL Server 6.5 中，则认为这两个字符串是唯一的并且两者都成功地插入。将兼容级别设置为 65 不强制 SQL Server 2000 将字符串视为唯一值。

说明 虽然在兼容级别 60 或 65 下运行时，在 SQL Server 2000 上保留了旧有的行为，但在以后的 SQL Server 版本中可能会放弃对这些行为的支持。建议一旦可行，就计划升级您的应用程序，以便在兼容级别设置为 80 时正确运行。

请参见

保留关键字

系统存储过程

系统表


SQL Server 向后兼容性详细信息

Microsoft® SQL Server™ 2000 增加了许多新特性。大多数更改是内部的，将不影响用户的数据库脚本或应用程序。所有的 Transact-SQL 语句都是兼容的。然而，管理工具或脚本应该升级到能在 SQL Server 2000 中工作。

本节中的向后兼容性主题包含 SQL Server 6.5 版中支持的功能和行为的详细列表，这些功能及行为已经更改并且可能影响管理工具或脚本。这些变化不是由向后兼容级别所控制的。

为了表明其对管理工具或脚本潜在的影响，功能更改分组为四个级别。

级别 | 组成
1 | 管理语句、存储过程、或是已从 SQL Server 2000 中删除或在 SQL Server 2000 中不再受其支持的 SQL Server 项。在使用 SQL Server 2000 之前，必须修复使用这些项的管理工具或脚本。有关这些功能的更多信息，请参见级别 1：处理废止的功能。
2 | 产生与 SQL Server 早期版本不同行为的重要更改。例如，在此类别中的项目已进行了以下更改：更改数据类型转换或选定功能使用中的行为，更改选定 Transact-SQL 语句中子句的行为，更改选定系统表中的列名和更改因为数据库兼容性设置引起的行为。有关这些功能的更多信息，请参见级别 2：处理对行为的重要改动。
3 | 专用于支持向后兼容性的项目。包括在这类中的任何项目将获得完全支持，但在以后的版本中可能被删除或不再受支持。SQL Server 2000 提供更有效地完成这些任务的功能，并具有不断更新的支持。有关这些功能的更多信息，请参见级别 3：进行更新以改进早期的功能性。
4 | 产生与 SQL Server 早期版本不同行为的次要更改。例如，此类别中的项目属以下情况：已忽略或具有一个或多个忽略了的参数、更改了字节长度、添加了参数或列、或更改了数据类型列。有关这些功能的更多信息，请参见级别 4：处理行为上的微小改动。

说明 您可能发现回顾 SQL Server 2000 与 SQL Server 7.0 版非常有帮助。


在 SQL Server 2000 中不使用的 SetHostName 属性

当使用 SQL Server 6.5 集成安全性时，除非系统管理员激活 SQL 企业管理器中的 SET HOSTNAME TO USERNAME 选项，否则 SQL Server 6.5 不报告连接所使用的 Windows NT 帐户。

还可以通过 SQL-DMO SetHostName 属性激活该设置。该设置生效后，下列函数和列返回用户的 Windows NT 帐户而不是客户计算机的网络名：

  • Transact-SQL HOST_NAME() 函数

  • 由 sp_who 返回的结果集中的 hostname 列

  • sysprocesses 中的 hostname 列

在 SQL Server 2000 中，sp_who 结果集中的 loginame 列包含使用 Windows NT 身份验证建立连接的 Windows NT 帐户名。应用程序需要的 Windows NT 帐户若与使用 Windows NT 身份验证的连接相关联，则应引用该列。

SQL Server 2000 企业管理器中不再存在 SET HOSTNAME TO USERNAME 选项。SQL Server 2000 忽略 SQL-DMO SetHostName 属性的设置。


级别 1：处理废止的功能

向后兼容级别 1 由管理语句、存储过程或过去由 SQL Server 6.5 支持，而现在已从 SQL Server 2000 中删除或不再受其支持的 Microsoft® SQL Server™ 项组成。在使用 SQL Server 2000 之前，必须修复使用这些项的管理工具或脚本。

子标题 | 相关对象
备份和还原 | BACKUP RESTORE DUMP LOAD sysbackuphistory sysbackupdetail sysrestorehistory sysrestoredetail backupfile backupmediafamily backupmediaset backupset restorefile restorefilegroup restorehistory
配置选项 | sp_configure（backup buffer size、backup threads、database size、free buffers、hash buckets、LE threshold maximum、LE threshold minimum、LE threshold percent、logwrite sleep、max lazywrite IO、memory、open databases、procedure cache、RA cache hit limit、RA cache miss limit、RA delay、RA pre-fetches、RA slots per thread、RA worker threads、recovery flags、remote conn timeout、SMP concurrency、sort pages、min memory per query、index create memory、tempdb in ram 和 user connections 选项） trace flag 204
自定义排序顺序 | 字符集、排序顺序和 Unicode 排序规则
数据库 | ALTER DATABASE
数据库选项 | sp_dboption（subscribe 和 no chkpt. on recovery 选项） sp_addsubscription RESTORE
数据访问对象 (DAO) | odbccmpt 实用工具
DBCC | DBCC DBREINDEX DBCC MEMUSAGE DBCC SHRINKDB
DB-Library | 两相提交 DB-Library for Visual Basic
DECnet 网络库 | DECnet 套接字 Net-Library
磁盘命令 | DISK REINIT DISK REFIT ALTER DATABASE
磁盘镜像 | DISK MIRROR DISK REMIRROR DISK UNMIRROR
索引 | CREATE INDEX
开放式数据服务 | Windows NT 组件服务 SRV_CONFIG SRV_PROC SRV_SERVER srv.h Opends60.lib
程序组工具和实用工具 | 客户端网络实用工具 ISQL_w MS 查询 SQL 客户端配置 SQL 企业管理器 SQL 帮助 SQL 安全管理器 SQL 跟踪 SQL 性能监视器 SQL 服务管理器 SQL 安装程序 SQL 查询分析器 SQL Server 企业管理器 SQL Server 事件探查器 SQL Server 服务管理器
复制 | 受限发布 DBOption 对象 ReplicationDatabase 对象的 EnablePublishing 属性 repl_publisher 登录
安全性 | DENY 分隔标识符
段 | CREATE INDEX CREATE TABLE sp_addsegment sp_dropsegment sp_extendsegment sp_helpsegment CREATE DATABASE ALTER DATABASE
服务 | SQL Executive
SET DISABLE_DEF_CNST_CHK | SET DISABLE_DEF_CNST_CHK
SET SHOWPLAN | SET SHOWPLAN SET SHOWPLAN_ALL SET SHOWPLAN_TEXT
SQL 警报器 | SQLALRTR.exe
SQL-DMO | sqlole.dll
系统存储过程（常规扩展过程） | xp_snmp_getstate xp_snmp_raisetrap
系统存储过程（复制） | sp_replica sp_replsync sp_helppublicationsync sp_subscribe sp_unsubscribe @@ERROR sp_changepublication sp_addpublisher sp_adddistpublisher sp_droppublisher sp_dropdistpublisher sp_distcounters sp_helpreplicationdb sp_helpreplicationdboption sp_replstatus
系统存储过程（系统） | ALTER TABLE CREATE TABLE sp_help sp_helpconstraint sp_commonkey sp_dropkey sp_foreignkey sp_helpjoins sp_helpkey sp_primarykey sp_placeobject sp_dbinstall sp_attach_db sp_makestartup sp_unmakestartup sp_procoption sp_helplogins sp_helprotect sp_tableoption sp_serveroption（fallback 选项） sp_setlangalias sp_droplanguage sp_fallback_activate_svr_db sp_fallback_deactivate_svr_db sp_fallback_enroll_svr_db sp_fallback_help sp_fallback_permanent_svr sp_fallback_upd_dev_drive sp_fallback_withdraw_svr_db sp_devoption sp_diskdefault sp_helplog sp_helpstartup sp_help_revdatabase sp_sqlexec sp_addlanguage
系统存储过程（任务） | sp_addalert sp_addnotification sp_addoperator sp_dropalert sp_dropnotification sp_dropoperator sp_helpalert sp_helphistory sp_helpnotification sp_helpoperator sp_purgehistory sp_runtask sp_stoptask sp_updatealert sp_updatenotification sp_updateoperator sp_add_alert sp_add_notification sp_add_operator sp_delete_alert sp_delete_notification sp_delete_operator sp_help_alert sp_help_jobhistory sp_help_notification sp_help_operator sp_purge_jobhistory sp_start_job sp_stop_job sp_update_alert sp_update_notification sp_update_operator
系统表 | 信息架构视图 系统存储过程（目录过程） sysdevices （mirrorname 和 stripeset 列） syshistory sysjobhistory sysindexes （distribution、segment、rowpage、keys1 和 keys2 列） syskeys syslocks syslockinfo syslogs sysprocesses （gid 和 suid 列） sysprocedures syscomments syssegments CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE CREATE INDEX systasks sysjobs sysjobsteps sysjobservers sysusages master.dbo.spt_datatype_info
事务 | 数据类型转换
实用工具 | probe 登录


级别 2：处理对行为的重要改动

向后兼容级别 2 包含 Microsoft® SQL Server™ 2000 中的重要改动，这些改动产生的行为不同于 SQL Server 早期版本的行为。例如，在此类别中的项目已进行了以下更改：更改数据类型转换或选定功能使用中的行为，更改选定 Transact-SQL 语句中子句的行为，更改选定系统表中的列名和更改因为数据库兼容性设置引起的行为。本主题包括这些项目的向后兼容性详细信息。

子标题 | 相关对象
备份和还原 | BACKUP CREATE DATABASE ALTER DATABASE RESTORE sp_dboption
大容量复制 | bcp 实用工具
配置选项 | 设置配置选项 sp_configure（open databases 和 user connections 选项)
数据库页和扩展盘区 | 页和扩展
数据类型 | CAST 和 CONVERT 数据类型
DB-Library | dbcursorfetchex
空字符串 | sp_dbcmptlevel CHARINDEX DATALENGTH LEFT LTRIM PATINDEX REPLICATE RIGHT RTRIM SPACE SUBSTRING UPDATETEXT
索引 | CREATE INDEX
INSERT | sp_dbcmptlevel INSERT
键集游标 | 键集游标
LTRIM 和 RTRIM 剪裁函数 | LTRIM RTRIM
ODBC | SQLGetDiagRec SQLMoreResults
RIGHT | 使用标识符 保留的关键字
安全性 | GRANT REVOKE DENY sp_addlinkedsrvlogin
SELECT | SELECT
SET SHOWPLAN | SET SHOWPLAN_ALL SET SHOWPLAN_TEXT
系统表 | 信息架构视图 系统存储过程（目录过程） sysdatabases（logptr 和 dumptrdate 列） sysmessages（langid 列） syslogins（language 列） 计算列
表提示 | DELETE FROM INSERT SELECT UPDATE
事务 | SET TRANSACTION ISOLATION LEVEL SET CURSOR_CLOSE_ON_COMMIT ROLLBACK DECLARE CURSOR
触发器和系统存储过程 | sp_dbcmptlevel sp_create_removable CREATE TRIGGER SET QUOTED_IDENTIFIER SET ANSI_NULLS SET ANSI_DEFAULTS
UPDATE | @@ERROR UPDATE INSERT
UPDATETEXT | UPDATETEXT WRITETEXT
视图 | DELETE INSERT UPDATE


级别 3：进行更新以改进早期的功能性

向后兼容性级别 3 由过去 SQL Server 6.5 版支持、现在 SQL Server 2000（以及 SQL Server 7.0）只是为保持向后兼容性而支持的项目组成。包括在这类中的任何项目将获得完全支持，但在以后的版本中可能被删除或不再受支持。建议如果时间允许，将向后兼容性项目替换为推荐的项目。SQL Server 2000 提供更有效地完成这些任务的功能，并具有不断更新的支持。

本主题包括这些项目的向后兼容性详细信息。

子标题 | 相关对象
备份和还原 | BACKUP RESTORE CREATE DATABASE
数据库选项 | sp_dboption（publish 选项） sp_replicationdboption
DBCC | DBCC NEWALLOC DBCC CHECKALLOC DBCC ROWLOCK 构架增强 DBCC TEXTALL DBCC CHECKDB DBCC TEXTALLOC DBCC CHECKTABLE DBCC DBREPAIR DROP DATABASE
设备 | SQL Server 构架概述 DISK INIT CREATE DATABASE ALTER DATABASE DISK REINIT sp_logdevice sp_dropdevice
开放式数据服务 | srv_config srv_config_alloc srv_getconfig srv_init srv_run srv_tdsversion srv_getuserdata srv_setuserdata srv_errhandle srv_iodead srv_log srv_sendstatus srv_sfield srv_event srv_eventdata srv_getserver srv_got_attention srv_handle srv_pre_handle srv_post_handle srv_setevent srv_terminatethread srv_attention srv_connect srv_disconnect srv_language srv_rpc srv_exit srv_start srv_sleep srv_restart srv_stop srv_langcpy srv_langlen srv_langptr srv_paramdata srv_paramlen srv_parammaxlen srv_paramname srv_paramnnumber srv_paramset srv_paramstatus srv_paramtype srv_returnval srv_rpcdb srv_rpcnumber srv_rpcoptions srv_clearstatistics srv_sendstatistics srv_alloc srv_bmove srv_bzero srv_free srv.h srv_describe srv_setcollen srv_setcoldata srv_paramsetoutput srv_paraminfo
查询性能 | SUSER_ID SUSER_SID SUSER_NAME SUSER_SNAME syslogins sysdatabases sysremotelogins sysusers sysalternates
安全性 | GRANT 身份验证 SETUSER
SELECT | FASTFIRSTROW SELECT INDEX = (index hint)
SET SHOWPLAN | SET SHOWPLAN_TEXT SET SHOWPLAN_ALL SQLGetDiagRec
系统存储过程（扩展） | xp_grantlogin xp_revokelogin sp_grantlogin sp_revokelogin
系统存储过程（系统） | sp_add_job sp_add_jobschedule sp_add_jobstep sp_addtask sp_delete_job sp_delete_jobschedule sp_delete_jobstep sp_droptask sp_help_jobhistory sp_help_jobschedule sp_help_jobstep sp_helptask sp_purge_jobhistory sp_reassigntask sp_start_job sp_stop_job sp_update_job sp_update_jobschedule sp_update_jobstep sp_updatetask


级别 4：处理行为上的微小改动

向后兼容性级别 4 包括 Microsoft® SQL Server™ 2000 中的微小改动，这些改动产生与 SQL Server 早期版本不同的行为。例如，这一级中的项目有如下改动：项目被忽略或包含一个或多个已忽略的参数，字节长度变化，添加了参数或列，或者更改了数据类型列。

本主题包括这些项目的向后兼容性详细信息。

子标题 | 相关对象
别名 | 角色 管理权限
备份和还原 | RESTORE HEADERONLY LOAD HEADERONLY
配置 | sp_configure（media retention 选项） 设置配置选项
CREATE PROCEDURE | CREATE TABLE SELECT INTO
数据类型 | decimal 和 numeric 使用数学函数 +（加） -（减） *（乘） /（除） ATN2 AVG CAST 和 CONVERT EXP POWER RADIANS ROUND SUM
DATEPART 和 SET DATEFIRST | SET DATEFIRST DATEPART
DBCC | DBCC
DBCS 字符串比较 | Unicode 空格字符
DELETE 和 SELECT | FROM
设备 | ALTER DATABASE
函数 | @@DBTS
全局变量 | 函数
ODBC | SQL_COPT_SS_PERF_QUERY_INTERVAL SQLMoreResults SQL_NO_DATA
重建 master 数据库 | 重建主控实用工具
重建注册表（级别 4） | setup/t RegistryRebuild = On
复制 | 在不同版本的 SQL Server 间复制 订阅发布的一个或多个项目
安全性 | SYSTEM_USER
SELECT | SELECT FROM
触发器和系统存储过程（系统） | CREATE TRIGGER sp_dboption（recursive triggers 选项） sp_tableoption xp_readmail xp_sendamil
UPDATE | UPDATE
实用工具 | SQL 查询分析器 isql 实用工具


如何安装 SQL Server 2000

这一组"如何"主题中包括了安装 Microsoft® SQL Server™ 2000 时常用的过程。


如何安装 SQL Server 2000（安装程序）

安装 SQL Server 2000

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"。

    如果运行的是 Microsoft Windows® 95，则单击"SQL Server 2000 必要条件"，然后单击"安装公用控件库更新"。

  3. 选择"安装数据库服务器"，安装程序于是准备 SQL Server 安装向导。在"欢迎"屏幕中单击"下一步"按钮。

  4. 在"计算机名"对话框中，"本地计算机"是默认选项，并且本地计算机名出现在编辑框中。单击"下一步"按钮。

    对于远程安装，请单击"远程计算机"选项。然后可以键入计算机名或者单击"浏览"按钮以找到远程计算机。

    如果检测到群集，则"虚拟服务器"是默认选项。

  5. 在"安装选项"对话框中，单击"创建 SQL Server 新实例或安装客户端工具"选项，然后单击"下一步"按钮。

  6. 按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

  7. 在"安装定义"对话框中，单击"服务器和客户端工具"选项，然后单击"下一步"按钮。

  8. 在"实例名称"对话框中，如果"默认"复选框可用，就可以安装默认实例或命名实例。如果"默认"复选框不可用，则表示已经安装了默认实例，且只能安装命名实例。
    • 若要安装默认实例，请选择"默认"复选框，然后单击"下一步"按钮。

    • 若要安装命名实例，请清除"默认"复选框，并在"实例名称"编辑框中键入一个新的命名实例。单击"下一步"按钮。
  9. 在"安装类型"对话框中单击"典型"或"最小"，然后单击"下一步"按钮。

    如果要选择组件和子组件，则更改字符集、网络库或其它设置，并单击"自定义"按钮，然后单击"下一步"按钮。

  10. 在"服务帐户"对话框中，接受默认设置，输入域密码，然后单击"下一步"按钮。

    有关服务帐户选项的信息，请参见服务帐户。

  11. 在"身份验证模式"对话框中，接受默认设置，然后单击"下一步"按钮。

    若要使用"混合模式"，请参见身份验证模式。

  12. 在完成选项的指定后，请在"开始复制文件"对话框中单击"下一步"按钮。

  13. 在"选择授权模式"对话框中，按照许可协议进行选择，然后单击"继续"按钮开始安装。

    有关授权的信息，请单击"帮助"按钮或向系统管理员进行咨询。

  14. 在"安装完成"对话框中单击"是，我想现在重新启动计算机"选项，然后单击"完成"按钮。

请参见

如何向 SQL Server 2000 实例中添加组件（安装程序）

如何创建区分大小写的 SQL Server 实例（安装程序）

如何安装 SQL Server 命名实例（安装程序）


如何只安装客户端工具（安装程序）

可以使用任意 SQL Server 光盘，在受支持的任何操作系统上仅安装客户端工具。有关更多信息，请参见如何从任意光盘仅安装工具。

为 SQL Server 2000 只安装客户端工具

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。

  3. 在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  4. 在"安装选项"对话框中，单击"创建 SQL Server 新实例或安装客户端工具"选项，然后单击"下一步"按钮。

  5. 按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

  6. 在"安装定义"对话框中单击"仅客户端工具"选项，然后单击"下一步"按钮。

  7. 在"选择组件"对话框中，接受默认设置或选择需要的组件，然后单击"下一步"按钮。

    可以在"组件"列表中选择一项（如"管理工具"选项），然后从相关的"子组件"列表中选择项目，比如"企业管理器"选项。单击以选择希望安装的项目；清除不希望安装的项目的复选框。

    有关各个组件的信息，请选择该组件项，然后查看"描述"框。

  8. 在"开始复制文件"对话框中，单击"下一步"按钮以完成客户端工具的安装。


如何从任意光盘仅安装工具（安装程序）

说明 在此过程中，可以在安装有 SQL Server 2000 支持的任意操作系统的计算机上使用任何 SQL Server 2000 版本的安装光盘。

从任意光盘仅安装工具

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。该光盘可以是任何 SQL Server 2000 版本的安装光盘（无论操作系统是否支持）。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。

  3. 在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  4. 按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

  5. 在"选择组件"对话框中，接受默认设置或选择需要的组件，然后单击"下一步"按钮。

    可以在"组件"列表中选择一项，比如"管理工具"选项，然后从相关的"子组件"列表中选择项目，比如"企业管理器"选项。单击以选择希望安装的项目；清除不希望安装的项目的复选框。

    有关各个组件的信息，请选择该组件项，然后查看"描述"框。

  6. 在"开始复制文件"对话框中，单击"下一步"按钮以完成客户端工具的安装。


如何只安装连接（安装程序）

使用"仅连接"选项可以安装网络库和 MDAC（Microsoft® 数据访问组件）。

为 SQL Server 2000 只安装连接

  1. 将 Microsoft SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"。

    如果运行的是 Microsoft Windows® 95，请单击"安装公用控件库更新"。

  3. 选择"安装数据库服务器"，安装程序于是准备 SQL Server 安装向导。在"欢迎"屏幕中单击"下一步"按钮。

  4. 在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  5. 在"安装选项"对话框中单击"创建 SQL Server 新实例或安装客户端工具"，然后单击"下一步"按钮。

  6. 按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

  7. 在"安装定义"对话框中单击"仅连接"选项，然后单击"下一步"按钮。

  8. 在"开始复制文件"对话框中单击"下一步"按钮以完成安装。


如何安装 SQL Server 2000 命名实例（安装程序）

Microsoft® SQL Server™ 2000 命名实例可以在第一次运行 SQL Server 安装程序时安装，也可以在安装了默认实例之后安装。对于其它每个要安装的命名实例，都请按照此过程进行操作。

说明 如果计算机上已有 SQL Server 7.0 安装，则该安装会在安装 SQL Server 2000 命名实例的过程中保持原封不动。默认的 SQL Server 2000 实例将重写 SQL Server 7.0 安装（作为以前的默认安装），但命名实例不会重写 SQL Server 7.0。

安装 SQL Server 2000 的命名实例

  1. 将 SQL Server 2000 光盘插入 CD-ROM 驱动器中。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"。

    如果运行的是 Microsoft Windows® 95，请选择"安装公用控件库更新"。

  3. 选择"安装数据库服务器"，安装程序于是准备 SQL Server 安装向导。在"欢迎"屏幕中单击"下一步"按钮。在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  4. 在"安装选项"对话框中，单击"创建 SQL Server 新实例或安装客户端工具"，然后单击"下一步"按钮。
    • 如果这是首次在计算机上安装 SQL Server 2000，则请按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

    • 如果计算机上已经装有 SQL Server 2000，就不会出现这些屏幕。
  5. 在"安装定义"对话框中，单击"服务器和客户端工具"选项，然后单击"下一步"按钮。

  6. 在"实例名称"对话框中清除"默认"复选框并键入新命名实例的名称，然后单击"下一步"按钮。

    说明 如果已有默认安装（SQL Server 7.0 或 2000），则"默认"复选框不可用。

    如果已键入一个实例名称，则在安装程序完成前可以返回"实例名称"对话框更改该名称。然而，需要一个工作区来编辑实例名称框，单击"上一步"按钮回到该对话框后实例名称框将不可用。选择"默认"复选框，然后立即将其清除，这样就可以编辑实例名称了。

    有关实例名称的更多信息，请单击"帮助"按钮。

  7. 在"安装类型"对话框中选择"典型"、"最小"或"自定义"选项，然后单击"下一步"按钮。

    如果要选择子组件或更改字符集、网络库或其它设置，请单击"自定义"按钮。

  8. 在"服务帐户"对话框中，接受默认设置，输入域密码，然后单击"下一步"按钮。

    有关服务帐户的信息，请参见服务帐户。

  9. 在"身份验证模式"对话框中，接受默认设置，然后单击"下一步"按钮。

    若要使用"混合模式"身份验证，请参见身份验证模式。

  10. 在完成选项的指定后，请在"开始复制文件"对话框中单击"下一步"按钮。

  11. 在"选择授权模式"对话框中，按照许可协议进行选择，然后单击"继续"按钮开始安装。

    有关授权的信息，请单击"帮助"按钮或向系统管理员进行咨询。

  12. 在"安装完成"对话框中单击"是，我想现在重新启动计算机"选项，然后单击"完成"按钮。

请参见

处理 SQL Server 2000 的命名实例和多实例

与 SQL Server 2000 命名实例一起运行 SQL Server 7.0


如何将 SQL Server 7.0 安装升级到 SQL Server 2000（安装程序）

注意 此版本升级过程将重写 Microsoft® SQL Server™ 7.0 安装；因此计算机上不再存在此安装。另外，还删除以前的注册表设置。例如，在升级后需要重新注册服务器。

若要还原 SQL Server 7.0 安装，必须首先卸载 SQL Server 2000 并执行完全重新安装 SQL Server 7.0 文件，然后还原所备份的 SQL Server 7.0 数据库。

将 SQL Server 7.0 升级到 SQL Server 2000

  1. 将要升级到的版本的 Microsoft SQL Server 2000 光盘插入光盘驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

    说明 如果购买的 SQL Server 版本所具有的功能比当前的 SQL Server 7.0 安装多，则升级过程将同时执行版次和功能版本的升级。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，安装程序于是准备 SQL Server 安装向导。在"欢迎"屏幕中单击"下一步"按钮。

  3. 在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  4. 在"安装选项"对话框中，单击"升级、删除或将组件添加到 SQL Server 现有实例中"，然后单击"下一步"按钮。

  5. 在"实例名称"对话框中，"默认"是被选定的。单击"下一步"按钮。

    说明 在升级时，SQL Server 7.0 会自动变为 SQL Server 2000 的默认实例。

  6. 在"现有安装"对话框中，单击"升级现有安装"选项，然后单击"下一步"按钮。

  7. 在"升级"对话框中，会得到是否希望继续进行所请求的升级的提示。单击"是，升级我的<针对升级的文本>"开始升级过程，然后单击"下一步"按钮。升级进程一直运行直到结束。

  8. 在"连接到服务器"对话框中选择身份验证模式，然后单击"下一步"按钮。

    如果不确定采用哪种模式，请接受默认值："我登录到计算机上所使用的 Windows 帐户信息 (Windows)"。

  9. 在"开始复制文件"对话框中单击"下一步"按钮。

  10. 在"安装完成"对话框中，单击"是，我想现在重新启动计算机"选项，然后单击"完成"按钮。

请参见

身份验证模式

如何在 SQL Server 2000 内进行版本升级（安装程序）


如何使用复制数据库向导联机升级数据库（企业管理器）

将 SQL Server 7.0 数据库升级到 SQL Server 2000 数据库

  1. 展开服务器组，然后展开服务器。

  2. 右击该服务器，指向"所有任务"选项，然后单击"复制数据库向导"命令。

  3. 完成向导中的步骤。

重要 升级 SQL Server 7.0 数据库后，对目的服务器上的数据库运行 sp_updatestats（更新统计），以确保复制的数据库具有最佳性能。

请参见

复制数据库向导帮助

升级 SQL Server 7.0 数据库（复制数据库向导）


如何在 SQL Server 2000 内进行版本升级（安装程序）

将某个 SQL Server 2000 安装升级到其它版本的 SQL Server 2000

  1. 将想要安装的版本的 Microsoft® SQL Server 2000™ 光盘插入光盘驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，安装程序于是准备 SQL Server 安装向导。在"欢迎"屏幕中单击"下一步"按钮。

  3. 在"计算机名"对话框中选择"本地计算机"或"远程计算机"。

  4. 在"安装选项"对话框中，单击"升级、删除或将组件添加到 SQL Server 现有实例中"选项，然后单击"下一步"按钮。

  5. 在"实例名称"对话框中，单击"下一步"按钮。

  6. 在"现有安装"对话框中，单击"升级现有安装"选项，然后单击"下一步"按钮。

  7. 如果安装程序检测到正在进行版本升级，就会出现"升级"对话框。单击"是，升级我的<针对升级的文本>"以升级当前安装的功能集，然后单击"下一步"按钮。

  8. 在升级完成后，会得到是否要安装别的组件的提示。如果单击"是"按钮，就会出现"选择组件"对话框。接受默认值或选择其它希望安装的组件，然后单击"下一步"按钮。

    可以在"组件"列表中选择一项，然后从相关的"子组件"列表中选择各个项目。单击以选择希望安装的项目；清除不希望安装的项目的复选框。

  9. 在完成选项的指定后，请在"开始复制文件"对话框中单击"下一步"按钮。

  10. 在"安装完成"对话框中单击"是，我想现在重新启动计算机"选项，然后单击"完成"按钮以完成版本升级。

请参见

升级现有的 SQL Server 安装


如何卸载 SQL Server 的现有安装（安装程序）

卸载 SQL Server 7.0 或 SQL Server 2000 现有安装（默认或命名实例）

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，安装程序于是准备 SQL Server 安装向导。在"欢迎"屏幕中单击"下一步"按钮。

  3. 在"计算机名"对话框中，选择"本地计算机"或"远程计算机"。

  4. 在"安装选项"对话框中，单击"升级、删除或将组件添加到 SQL Server 现有实例中"选项，然后单击"下一步"按钮。

  5. 如果安装了默认实例，则在"实例名称"对话框中，"默认"选项是被选定的。如果要卸载命名实例，请从"实例名称"列表框中选择该实例，然后单击"下一步"按钮。

  6. 在"现有安装"对话框中，单击"卸载现有安装"选项，然后单击"下一步"按钮。

  7. 安装程序于是删除选定的安装。在"卸载"对话框中单击"下一步"按钮，然后在"安装完成"对话框中单击"完成"按钮。


如何测试 SQL Server 2000 的安装（命令提示符）

测试安装

  1. 启动 Microsoft® SQL Server™ 2000 的方法是在命令提示符下输入下列命令：

    对于默认实例，请使用：

    net start mssqlserver

    对于命名实例，请输入实例名称，例如：

    net start MSSQL$Instance1
  2. 采用输入方法连接到 SQL Server：

    对于默认实例，请使用：

    osql /Usa /P <administrator password>

    对于命名实例，请输入服务器名称和实例名称，例如：

    osql /Usa /P /S Machine1\Instance1

    当连接 osql 时，即出现 osql 提示符：

    1>

    如果未能连接 osql，则返回 ODBC 错误。

  3. 输入一个简单查询，例如：
    SELECT @@SERVERNAME
GO

    osql 实用工具返回服务器名称：

    1> SELECT @@SERVERNAME
2> GO
-------------------------------
WOLFHOUND

(1 row affected)
1>
  4. 验证是否已选中了 SQL Server 2000 服务器，方法是输入：
    SELECT @@VERSION
GO

    osql 实用工具返回版本信息。

  5. 退出 osql 实用工具，方法是输入：
    Exit


如何更改 SQL Server 服务登录帐户信息 (Windows NT)

更改 SQL Server 服务登录帐户信息 (Windows NT)

  1. 在"开始"菜单中指向"设置"子菜单，然后单击"控制面板"命令。

  2. 双击"服务"按钮。

  3. 在"服务"对话框中，双击"服务"列表中的"MSSQLSERVER"。

    说明 对于命名实例，实例名称也包含在内。例如，若要修改 Instance1 的用户帐户，请双击"MSSQL$Instance1"。

  4. 在"服务"对话框中的"登录身份"下选择"本帐户"，然后输入更改后的帐户信息。

  5. 对于 SQL Server 代理重复上述步骤 3 和 4。在"服务"对话框中，双击"SQLSERVERAGENT"（对于命名实例则是"SQLAgent$Instance1"），然后在"服务"对话框中输入更改后的帐户信息。

  6. 启动 SQL Server 企业管理器，同样为 SQL Server 和 SQL Server 代理程序更改其中的用户帐户信息。有关更多信息，请参见如何更改 SQL Server 服务登录帐户信息（企业管理器）。


如何更改 SQL Server 服务登录帐户信息 (Windows)

更改 SQL Server 服务登录帐户信息 (Windows 2000)

  1. 在"开始"菜单上，指向"程序"，进而指向"管理工具"，然后单击"服务"命令。

  2. 右击"MSSQLServer"，然后单击"属性"命令。

  3. 在"登录"选项卡中，输入并确认新的密码，然后使用 SQL Server 服务管理器重新启动服务。

  4. 对于 SQLServerAgent 及其它服务重复该密码重置。

  5. 启动 SQL Server 企业管理器，同样为 SQL Server 和 SQL Server 代理更改其中的用户帐户信息。有关更多信息，请参见如何更改 SQL Server 服务登录帐户信息（企业管理器）。


如何更改 SQL Server 服务登录帐户信息（企业管理器）

说明 如果正在运行 Microsoft® Windows® 2000 且想要使用 Windows 2000 加密文件系统加密任何 Microsoft SQL Server™ 文件，则必须不加密这些文件才能更改 SQL Server 服务帐户。如果加密了这些文件然后重置 SQL Server 服务帐户，则无法不加密这些文件。

更改 MSSQLServer 服务登录（企业管理器）

  1. 展开一个服务器组。

  2. 右击一个服务器，再单击"属性"。

  3. 在"SQL Server 属性"对话框中，单击"安全"选项卡。

  4. 在"启动服务帐户"框中，"此帐户"一项已选中，表明 SQL Server 服务帐户是一个 Windows 域帐户。输入所需帐户和密码更改。

更改 SQLServerAgent 服务登录（企业管理器）

说明 可将 SQLServerAgent 服务帐户更改为非 Microsoft Windows NT® 4.0 管理员帐户。但是，Windows NT 4.0 帐户必须是 sysadmin 固定服务器角色的成员以运行 SQL Server 代理程序。

  1. 展开服务器组，然后展开服务器。

  2. 展开"管理"文件夹。

  3. 右击"SQL Server 代理程序"，然后单击"属性"。

  4. 在"SQL Server 代理程序属性"对话框中，单击"常规"选项卡。

  5. 在"服务启动帐户"框中输入适当的帐户和密码。

请参见

创建 SQL Server 服务用户帐户

更改密码和用户帐户


如何重建注册表（安装程序）

重建注册表

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。

  3. 在"计算机名"对话框中单击"下一步"按钮。

  4. 在"安装选项"对话框中，单击"高级选项"按钮，然后在"高级选项"对话框中单击"注册表重建"选项。单击"下一步"按钮。

  5. 此时出现一条消息，告知您安装程序基于您在后续屏幕中所提供的信息重建注册表。

    注意 所输入的安装选项必须与您在初始安装时所输入的选项相同。如果您不知道或不确定此信息，请不要使用这种注册表重建进程。如果使用注册表重建进程，则必须卸载并重新安装 SQL Server 以还原注册表。

  6. 若要准备注册表重建，请输入与 SQL Server 初始安装过程中在安装程序屏幕出现时所输入的内容相同的信息。完成后，将会进行注册表重建。

  7. 说明 重建注册表包括重新复制外部组件如 MDAC 和 MS DTC。


如何重建 master 数据库（重建 Master 实用工具）

重建 master 数据库

  1. 关闭 Microsoft® SQL Server™ 2000，然后运行 Rebuildm.exe。该程序位于 Program Files\Microsoft SQL Server\80\Tools\Binn 目录中。

  2. 在"重建 Master"对话框中单击"浏览"按钮。

  3. 在"浏览文件夹"对话框中，选择 SQL Server 2000 光盘上或用于安装 SQL Server 2000 的共享网络目录中的 \Data 文件夹，然后单击"确定"按钮。

  4. 单击"设置"按钮。在"排序规则设置"对话框中，验证或更改用于 Master 数据库或其它数据库的设置。

    最初，显示的是默认排序规则设置，但这些设置有可能与安装期间选择的排序规则不匹配。可以选择与安装期间使用的排序规则相同的设置，也可以选择新的排序规则设置。完成后单击"确定"按钮。

  5. 在"重建 Master"对话框中单击"重建"按钮以启动进程。

    重建 Master 实用工具重新安装 master 数据库。

    说明 若要继续，则可能需要终止正在运行的服务器。

请参见

选择 SQL 排序规则


如何进行远程 SQL Server 2000 安装（安装程序）

进行远程安装

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。

  3. 在"计算机名"框中单击"远程计算机"按钮。然后可以键入计算机名或者单击"浏览"按钮以找到远程计算机。

  4. 在"安装选项"对话框中，单击"创建 SQL Server 新实例"或"安装客户端工具"。

  5. 按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

  6. 在"远程安装信息"对话框中输入密码和其它信息。有关更多信息，请参见远程安装信息。完成定义各选项之后，单击"下一步"按钮。

  7. 在"安装定义"、"实例名称"、"安装类型"和随后出现的安装屏幕中，选择所需的远程安装的选项。

    SQL Server 安装程序用指定的选项在本地系统文件夹中创建 Setup.iss 文件。

  8. 在安装程序创建 Setup.iss 之后，就会出现"安装完成"对话框。单击"完成"按钮以启动远程安装进程。

  9. 完成该进程后，在出现的消息框中单击"确定"按钮。在运行远程实例之前，重新引导远程计算机。


如何记录无值守安装文件（安装程序）

"记录无值守"安装程序选项使您得以模拟安装并创建一个 .iss 文件，该文件可在将来用于 Microsoft® SQL Server™ 2000 的无值守安装。SQL Server 文件并不在这一进程中安装。

创建用于无值守安装的文件

  1. 将 Microsoft SQL Server 2000 光盘插入 CD-ROM 驱动器中。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"，选择"安装数据库服务器"，然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。

  3. 在"计算机名"对话框中，选择需要的选项，然后单击"下一步"按钮。

  4. 在"安装选项"对话框中单击"高级选项"命令，然后在"高级选项"对话框中单击"记录无值守 .ISS 文件"。单击"下一步"按钮。

  5. 在后续的安装程序屏幕中，为无值守安装选择所需的选项。完成各项选择之后，在"安装信息"屏幕中单击"下一步"按钮。

  6. 在"安装完成"屏幕中，单击"完成"按钮。

    此时出现下列消息："安装程序收集到创建无值守安装文件 (.iss) 所需的信息，以便使用较新的 SQL Server 无值守安装。"

    然后 SQL Server 安装程序用指定的选项在 %windir% 位置创建 Setup.iss 文件。

    若要运行该文件，请参见如何运行无值守 SQL Server 2000 安装（命令提示符）。

请参见

执行无值守安装


如何运行无值守 SQL Server 2000 安装（命令提示符）

可以通过包含在 Microsoft® SQL Server™ 2000 光盘中的示例批处理文件和安装程序初始化文件运行无值守安装。或者可以直接从要安装的 SQL Server 版本相应目录中的命令提示符下，根据需要使用参数来运行安装程序。

使用已做好的批处理文件运行无值守安装

  1. 在 SQL Server 2000 光盘的根目录中查找 .bat 文件和 .iss 文件。

  2. 查看 .bat 文件及相关的 .iss 文件，如有必要可作修改。有关更多信息，请参见手动创建安装文件。

  3. 从命令提示符运行适当的批处理文件及安装程序文件：
    • 对于标准无值守安装，运行 Sqlins.bat。

    • 对于仅客户端无值守安装，运行 Sqlcli.bat。

    • 对于自定义无值守安装，运行 Sqlcst.bat。

从命令提示符直接运行无值守安装

  1. 在适当的构架目录中从安装目录运行 Setupsql.exe 文件。

  2. 根据需要使用参数：
-f1 <initialization file path>
选择一个无值守安装程序初始化文件。
start/wait 命令（带有 -SMS 选项）
只有在 SQL Server 安装程序完成之后才返回对命令提示符的控制。
-s 标志
导致安装程序在无用户界面的静默模式下运行。

有关命令提示符选项和参数的示例，请参见 SQL Server 2000 光盘上的 .bat 示例文件。

请参见

执行无值守安装

如何记录无值守安装文件（安装程序）


如何向 SQL Server 2000 实例中添加组件（安装程序）

说明 不能通过清除"选择组件"对话框中的复选框来删除组件。如果需要删除 SQL Server 实例中的组件，必须卸载该实例。

向 SQL Server 2000 实例（默认或命名）中添加组件

  1. 运行 SQL Server 安装程序，选择"SQL Server 2000 组件"，然后单击 SQL Server 安装向导"欢迎"屏幕上的"下一步"按钮。

  2. 在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  3. 在"安装选项"对话框中，单击"升级、删除或将组件添加到 SQL Server 现有实例中"选项，然后单击"下一步"按钮。

  4. 如果已经安装了默认实例，则在"实例名称"对话框中，"默认"选项是被选定的。如果要向命名实例中添加组件，请从"实例名称"列表中选择该组件，然后单击"下一步"按钮。

  5. 在"现有安装"对话框中，单击"向现有安装中添加组件"选项，然后单击"下一步"按钮。

  6. 在"选择组件"对话框中，从"组件"列表中选择一个组件，然后从相关的"子组件"列表中选择各项。单击以选择要添加的项目，然后单击"下一步"按钮。

    有关各个组件的信息，请选择该组件项，然后查看"描述"框。

  7. 在完成选项的指定后，请在"开始复制文件"对话框中单击"下一步"按钮，向所选 SQL Server 实例中添加组件。

请参见

如何卸载 SQL Server 的现有安装（安装程序）


如何访问 SQL Server 7.0 的 SQL Server 联机丛书

如果 Microsoft® SQL Server™ 7.0 正作为默认实例运行（而且 SQL Server 2000 作为命名实例），则 SQL Server 7.0 的 SQL Server 联机丛书在计算机上保持完好无损。可以从"开始"菜单访问 SQL Server 联机丛书，或者在桌面上创建联机丛书的快捷方式。

从开始菜单访问 SQL Server 7.0 的 SQL Server 联机丛书

  • 在"开始"菜单上，指向"程序"菜单的"Microsoft SQL Server 7.0"子菜单，然后单击"联机丛书"命令。

创建 SQL Server 7.0 的 SQL Server 联机丛书的快捷方式

  1. 在计算机上找到 Sqlbol.chm 文件。（默认位置是 C:\Mssql7\Books。）

  2. 右击 Sqlbol.chm 文件，然后单击"创建快捷方式"命令。

  3. 将该快捷方式复制到桌面，从桌面上使用它访问 SQL Server 联机丛书。

首次安装 SQL Server 7.0 的 SQL Server 联机丛书或重新安装时，必须从 SQL Server 7.0 光盘或 SQL Server Web 站点安装。

从 SQL Server 7.0 光盘重新安装 SQL Server 联机丛书

  1. 将 Microsoft SQL Server 7.0 光盘插入 CD-ROM 驱动器中。

  2. 在光盘中找到 Sqlbol.chm 文件，并将其复制到计算机上的某个位置。

  3. 在桌面上创建 SQL Server 7.0 的 SQL Server 联机丛书的快捷方式。

从 SQL Server Web 站点下载 SQL Server 7.0 的 SQL Server 联机丛书

  1. 转到 Microsoft SQL Server Web 站点，网址为 Microsoft Web 站点。

  2. 在 SQL Server"欢迎"页上单击"支持"。

  3. 在"支持"页上单击"文档"并按照指令访问 SQL Server 7.0 联机丛书。


如何安装 English Query（安装程序）

安装 English Query

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"。

  3. 在"安装组件"屏幕上，选择"安装 English Query"。

    不必再选择其它内容。SQL Server 安装程序将 English Query 安装到计算机上。


如何安装 Analysis Services（安装程序）

下列过程是安装 Analysis Services 的简化步骤。有关更完整的安装过程和相关信息，请参见运行安装程序。

安装 Analysis Services

  1. 将 Microsoft® SQL Server™ 2000 光盘插入 CD-ROM 驱动器。如果该光盘不自动运行，请双击该光盘根目录中的 Autorun.exe 文件。

  2. 选择"SQL Server 2000 组件"。

  3. 在"安装组件"屏幕上选择"安装 Analysis Services"。

  4. 在 Microsoft SQL Server Analysis Services 的"欢迎"屏幕上单击"下一步"按钮。

  5. 按照"用户信息"、"软件许可协议"和相关屏幕上的指导进行操作。

  6. 在"选择组件"对话框中根据需要选择或清除组件，然后单击"下一步"按钮。

    如果要更改 Analysis Services 程序文件的默认位置，请单击"目的文件夹"上的"浏览"按钮，然后选择一个文件夹位置。

  7. 在"数据文件夹位置"对话框中接受或更改数据文件的默认位置，然后单击"下一步"按钮。

  8. 在"选择程序文件夹"中接受或更改默认设置，然后单击"下一步"按钮。

SQL Server 安装程序将 Analysis Services 安装到计算机上。


如何创建区分大小写的 SQL Server 2000 实例（安装程序）

创建区分大小写的 SQL Server 2000 实例

  1. 运行 SQL Server 安装程序来安装"SQL Server 2000 组件"，并选择"安装数据库服务器"，然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。

  2. 在"计算机名"对话框中，"本地计算机"是默认选项，本地计算机名显示在编辑框中。单击"下一步"按钮。

  3. 在"安装选项"对话框中单击"创建 SQL Server 新实例或安装客户端工具"，然后单击"下一步"按钮。

  4. 按照"用户信息"和相关屏幕上的指导进行操作。

  5. 在"安装定义"对话框中，单击"服务器和客户端工具"选项，然后单击"下一步"按钮。

  6. 在"实例名称"对话框中：
    • 若要创建区分大小写的默认实例，请接受"默认"复选框并单击"下一步"按钮。

    • 若要创建区分大小写的命名实例，请清除"默认"复选框并键入实例名称。
  7. 在"安装类型"对话框中单击"自定义"选项，然后单击"下一步"按钮。

  8. 在"选择组件"、"服务帐户"和"身份验证模式"对话框中，更改或接受默认设置，然后单击"下一步"按钮。

  9. 在"排列规则设置"对话框中有两个选项：
    • 若要使 Windows 区域设置排序规则区分大小写，请选择"排列规则指示器"，然后从列表中选择正确的排序规则指示器。清除"二进制"复选框，然后选择"区分大小写"复选框。

    • 若要使 SQL 排序规则区分大小写，请选择"SQL 排序规则"，然后键入正确的排序规则名称。

    有关排序规则选项的更多信息，请单击"帮助"按钮。完成选项的设置后，请单击"下一步"按钮。

  10. 在随后出现的各对话框中，更改或接受默认设置，然后单击"下一步"按钮。

  11. 在完成选项的指定后，请在"开始复制文件"对话框中单击"下一步"按钮。

  12. 在"选择授权模式"对话框中，按照许可协议进行选择，然后单击"继续"按钮开始安装。

  13. 有关授权的信息，请单击"帮助"按钮或向系统管理员进行咨询。

请参见

选择 SQL 排序规则


如何设置客户端代码页

在 Windows NT、Windows 2000 或 Windows 98 操作系统中设置客户端代码页

  • 使用在 Microsoft® Windows NT®、Microsoft Windows® 98 或 Microsoft Windows 2000 文档中所描述的"控制面板"中的"区域设置"应用程序。


如何从 SQL Server 6.5 切换到 SQL Server 2000（命令提示符）

从 SQL Server 6.5 切换到 SQL Server 2000

  • 运行 Vswitch.exe。
-SwitchTo <65|80>
确定要激活的 Microsoft® SQL Server™ 2000 的版本。
-Silent <0|1>
指定是否显示任何用户界面或消息。如果指定为 1，则不会显示任何用户界面或消息。默认值为 0。
示例
c:\...\vswitch -SwitchTo 80 -Silent 1


如何从 SQL Server 6.5 切换到 SQL Server 2000 (Windows)

从 SQL Server 6.5 切换到 SQL Server 2000

  • 在"开始"菜单上，指向"程序"的"Microsoft SQL Server — 版本切换"子菜单，然后单击"Microsoft SQL Server 2000"命令。

    SQL Server 安装程序会从 Microsoft® SQL Server™ 6.5 版切换到 SQL Server 2000。


如何删除 SQL Server 2000 (Windows)

可以使用"控制面板"来删除 Microsoft® SQL Server™ 2000 实例。每个命名实例都需要单独删除。在升级或维护实例时，可使用安装程序中的"卸载"选项来删除 SQL Server。有关更多信息，请参见如何卸载现有安装（安装程序）。

不能在安装了选定的 SQL Server 2000 组件后删除该组件。若要删除组件，必须删除整个实例。

删除 SQL Server 2000 的命名实例

  1. 在"控制面板"中单击"添加/删除程序"。

  2. 选择一个 SQL Server 2000 实例名称，然后单击"删除"按钮。

删除所有 SQL Server 2000 实例

  1. 在"控制面板"中单击"添加/删除程序"。

  2. 对已安装的 SQL Server 2000 的每个实例，重复此删除过程。

虽然 SQL Server 2000 已经卸载，但有些文件可能还保留着。如有任何与 SQL Server 2000 相关的文件仍然存在，应手动删除相应目录。

请参见

定位目录和文件


如何从 SQL Server 6.5 升级

本部分中的"如何"主题专门针对使用 SQL Server 升级向导将数据从 Microsoft® SQL Server™ 6.5 转换到 Microsoft SQL Server 2000 的过程。

说明 若要运行 SQL Server 升级向导，计算机上必须已经安装有 Microsoft SQL Server 2000 实例。

从 SQL Server 6.5 升级时的注意事项：
  • 在升级过程中，SQL Server 6.5 服务器将停止并启动，同时将对象编为脚本并析取数据。数据传输开始后，只有 SQL Server 2000 在运行，无法访问 SQL Server 6.5。

  • 如果将现有的 SQL Server 6.5 服务器升级到运行 SQL Server 2000 的另一台计算机，则这两台计算机都应配置为对 MSSQLServer 服务使用域用户名和密码。

  • 在该升级过程中，在 SQL Server 6.5 中使用 sp_addmessage 创建的用户定义消息不转换到 SQL Server 2000。若要保留这些自定义消息，请将在 SQL Server 6.5 中添加的消息手工复制到 SQL Server 2000 安装。

请参见

SQL Server 升级向导疑难解答

完成 SQL Server 升级向导

升级日志文件

升级到 SQL Server 2000 常见问题解答


如何更改 SQL Server 6.5 中 tempdb 的大小 (ISQL/w)

更改 SQL Server 6.5 中 tempdb 的大小

  1. 在"开始"菜单上指向"程序"菜单，单击"Microsoft SQL Server 6.5"子菜单，然后单击"ISQL/w"命令。

  2. 输入 sa 密码；然后单击"连接"按钮。

  3. 执行 DISK INIT 命令以将 tempdb 设备的大小增加到至少 25 MB。

  4. 执行 ALTER DATABASE 命令以将 tempdb 数据库的大小增加到至少 25 MB。
示例
--Increase the size of the tempdb device
DISK INIT name = 'tempdb1',physname = 'c:\mssql\data\tempdb1.DAT',vdevno = 100, size = 12800
GO
--Increase the size of tempdb
ALTER DATABASE tempdb ON tempdb1 = 25


如何更改为 SQL Server 6.5 master 数据库中当前的服务器名称 (ISQL/w)

更改为 SQL Server 6.5 master 数据库中当前服务器名

  1. 以最小配置模式启动 Microsoft® SQL Server™。在命令提示符窗口中，从 \Mssql\Binn 目录运行：
    sqlservr -f
  2. 在"开始"菜单上，指向"程序"菜单，单击"Microsoft SQL Server 6.5"子菜单，然后单击"ISQL/w"命令。

  3. 输入 sa 密码；然后单击"连接"按钮。

  4. 执行 SELECT @@SERVERNAME 检索以前的服务器名称。

  5. 执行 sp_dropserver 除去以前的服务器。

  6. 执行 sp_addserver 添加当前服务器。

  7. 终止 SQL Server。在命令提示符窗口中同时按下 Ctrl 键和 C 键。

  8. 重新启动 SQL Server。

  9. 执行 SELECT @@SERVERNAME 以验证当前服务器名称。
示例
--Start SQL Server in minimal configuration mode.
--Retrieve the former server name.
SELECT @@SERVERNAME
--Drop the server returned from the previous select.
sp_dropserver 'SERVER6X'
--Add the current server.
sp_addserver 'SERVER70', local
--Stop SQL Server.
--Restart SQL Server in minimal configuration mode.
--Verify the current server name.
SELECT @@SERVERNAME


如何更新 SQL Server 6.5 master 数据库中的设备文件位置 (ISQL/w)

更新 SQL Server 6.5 master 数据库中的设备文件位置

  1. 在"开始"菜单上，指向"程序"菜单，单击"Microsoft SQL Server 6.5"子菜单，然后单击"ISQL/w"命令。

  2. 输入 sa 密码；然后单击"连接"按钮。

  3. 从 master 数据库里的 sysdevices 中进行选择以查看原来的设备文件位置。

  4. 执行 sp_configure 以允许对系统表进行更新，然后用 RECONFIGURE WITH OVERRIDE 语句强制实施该配置。

  5. 更新已更改的设备文件位置。

  6. 执行 sp_configure 以禁止对系统表进行更新，然后用 RECONFIGURE WITH OVERRIDE 语句强制实施该配置。
示例
--View the old device file locations
SELECT phyname FROM sysdevices

--Allow updates to the system tables
sp_configure 'allow updates',1
GO
RECONFIGURE WITH OVERRIDE
GO
--Update device file locations that have changed
UPDATE sysdevices
SET phyname = "E:\Data\HR\HR1.dat"
WHERE name = "HumanResources1"
GO
UPDATE sysdevices
SET phyname = "E:\Data\HR\HR1Log.dat"
WHERE name = "HumanResources1Log"
GO
--Disallow updates to the system tables
sp_configure 'allow updates',0
GO
RECONFIGURE WITH OVERRIDE
GO


如何估计从 SQL Server 6.5 升级到 SQL Server 2000 所需要的磁盘空间（SQL Server 升级向导）

说明 若要运行 SQL Server 升级向导，计算机上必须安装有 Microsoft® SQL Server™ 2000 实例。

估计升级所需的磁盘空间

  1. 在"开始"菜单中指向"程序"菜单，单击"Microsoft SQL Server — 版本切换"子菜单，再单击"SQL Server 升级向导"命令，然后单击"下一步"按钮。

  2. 选择"命名管道"，然后单击"下一步"按钮。

  3. 在"导出服务器 (6.5)"中的"服务器名称"框内，输入装有 SQL Server 6.5 的本地计算机或远程计算机的名称。

  4. 在"管理员密码 ('sa')"框中输入 SQL Server 6.5 的 sa 密码，然后单击"下一步"按钮。

    如果不加以更改，SQL Server 2000 的系统管理员密码应是空的。

  5. 将要升级的数据库包括进来。将所有不纳入磁盘空间估算的数据库都移动到"排除"列表中，然后单击"下一步"按钮。

  6. 选择"使用默认配置"或编辑默认值，然后单击"编辑"按钮。

    出现 SQL Server 升级向导版式实用工具，显示推荐使用的 SQL Server 2000 数据文件版式。

  7. 单击"高级"。

  8. 单击"建议的数据库布局"框中的一个对象，以便在"对象详细信息"框中查看详细信息。

  9. "驱动器摘要"框显示所有 SQL Server 2000 数据文件的估计大小和所有本地固定磁盘上剩余的可用磁盘空间。在"选项"菜单上选择"可用空间包括 SQL Server 6.5 文件"以查看若删除 SQL Server 6.5 数据文件后将剩余的可用空间。

  10. 单击"接受"按钮以返回到"数据库创建"对话框。

  11. 单击"取消"以退出 SQL Server 升级向导。


如何编辑默认数据库配置（SQL Server 升级向导）

说明 若要运行 SQL Server 升级向导，计算机上必须安装有 Microsoft® SQL Server™ 2000 实例。

编辑默认数据库配置

  1. 在 SQL Server 升级向导的"数据库创建"对话框中单击"编辑"按钮。

  2. 单击"高级"按钮以查看对象详细信息和驱动器摘要。

  3. 在"建议的数据库布局"框中双击一个数据库文件。

  4. 更改任意数据库文件特性，然后单击"确定"按钮。

  5. 查看对驱动器摘要所做的更改。

  6. 完成所有要做的更改后，单击"接受"按钮以保存数据库配置。

请参见

建议的数据库布局


如何使用直接管道将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）

说明 若要运行 SQL Server 升级向导，计算机上必须安装有 Microsoft® SQL Server™ 2000 实例。

通过命名管道将 SQL Server 6.5 版升级到 SQL Server 2000

  1. 在"开始"菜单中指向"程序"菜单，单击"Microsoft SQL Server — 版本切换"子菜单，单击"SQL Server 升级向导"命令，然后单击"下一步"按钮。

  2. 在"数据和对象传输"屏幕上接受默认选定内容，包括"命名管道"，然后单击"下一步"按钮。建议使用验证选项，但不是必须如此。有关信息，请单击"帮助"按钮。

  3. 在"登录"屏幕上的"导出服务器 (6.5)"组框内的"服务器名称"框中，输入安装 Microsoft SQL Server 6.5 版的本地计算机或远程计算机的名称。

    在"管理员密码 ('sa')"框中输入 SQL Server 6.5 的 sa 密码，然后单击"下一步"按钮。如果不加以更改，SQL Server 2000 的系统管理员密码应是空的。

    对于"导入服务器 (2000)"组框，服务器名称已经提供。如果需要，请输入可选启动参数。有关信息，请单击"帮助"按钮。完成选项的设置后，请单击"下一步"按钮。

  4. 如果已做好升级的准备，请在询问是否要继续的消息框内单击"是"按钮。SQL Server 升级向导关闭 SQL Server 6.5 并启动 SQL Server 2000。

  5. 在"代码页选择"屏幕中接受或更改默认设置，然后单击"下一步"按钮。

  6. 在"数据库选择"屏幕中，将要升级的数据库包括进来。将所有这次不升级的数据库都移动到"排除"列表中，然后单击"下一步"按钮。

    建议转换所有数据库。

  7. 在"数据库创建"对话框中，选择"使用默认配置或编辑默认值"选项，然后单击"下一步"按钮。

    单击"编辑"按钮以进行检查，并在版式实用工具内更改推荐的磁盘配置。在"建议的数据库布局"框中，根据需要进行改动。单击"高级"以查看"对象详细信息"和"驱动器摘要"框。完成后，单击"接受"按钮以返回到 SQL Server 升级向导。

  8. 在"系统配置"屏幕上的"要传输的系统对象"中，选择要从 SQL Server 6.5 传输到 SQL Server 2000 的对象类型：
    • 服务器配置

      与 SQL Server 2000 相关的登录注册和远程登录注册、服务器配置选项均作为版本升级的一部分进行传输。

    • 复制设置

      所有项目，每个已选数据库的订阅和发布，以及分发数据库（如果有的话）均进行传输和升级。

    • SQL Executive 设置

      所有由 SQL Executive 调度的任务均进行传输与升级，以便 SQL Server 2000 可以在 SQL Server 代理中调度和运行这些任务。

  9. 在"系统配置"屏幕上的"高级设置"中，对于"ANSI Nulls"请选择下列选项之一：
    • "Off"（创建存储过程时不应使用 ANSI Null）。这是默认设置。

    • "On"（创建存储过程时应使用 ANSI Null）。
  10. 在"被引用的标识符"中选择下列选项之一，然后单击"下一步"按钮：
    • "混合型（或未知）"（一些对象是用设为 ON 的 QUOTED_IDENTIFIER 创建的，而其余对象是用设为 OFF 的 QUOTED_IDENTIFIER 创建的，或者无法确定它们是如何创建的）。

    • "Off"（所有对象都应该用设为 OFF 的 QUOTED_IDENTIFIER 编译）。

    • "On"（所有对象都应该用设为 ON 的 QUOTED_IDENTIFIER 编译）。
  11. 在"完成 SQL Server 向导"屏幕中，查看所作选择的摘要。单击"在记事本中查看警告和选择"按钮以打开升级脚本的文本版。如果所有的选项都正确，请单击"完成"按钮。

此时出现"SQL Server 升级脚本解释器"屏幕，并附有升级进度信息。

请参见

使用直接管道或磁带驱动器进行升级的次序


如何使用磁带驱动器将 SQL Server 6.5 版升级到 SQL Server 2000（SQL Server 升级向导）

说明 若要运行 SQL Server 升级向导，计算机上必须安装有 Microsoft® SQL Server™ 2000 实例。

使用磁带驱动器将 SQL Server 6.5 版升级到 SQL Server 2000

  1. 在"开始"菜单中指向"程序"菜单，单击"Microsoft SQL Server — 版本切换"子菜单，再单击"SQL Server 升级向导"命令，然后单击"下一步"按钮。

  2. 在"数据和对象传输"屏幕上单击"磁带"选项，然后单击"下一步"按钮。建议使用验证选项，但不是必须如此。有关信息，请单击"帮助"按钮。

  3. 在"登录"屏幕上"导出服务器 (6.5)"组框内的"服务器名称"框中，输入已安装了 Microsoft SQL Server 6.5 版的计算机名称。

    在"管理员密码 ('sa')"框中输入 SQL Server 6.5 的 sa 密码，然后单击"下一步"按钮。

    如果不加以更改，SQL Server 2000 的系统管理员密码应是空的。

    对于"导入服务器 (2000)"组框，服务器名称已经提供。如果需要，请输入可选启动参数。有关信息，请单击"帮助"按钮。完成选项的设置后，请单击"下一步"按钮。

  4. 如果已做好升级的准备，请在询问是否要继续的消息框内单击"是"按钮。SQL Server 升级向导切换到 SQL Server 2000 服务器。

  5. 在"代码页选择"屏幕中接受或更改默认设置，然后单击"下一步"按钮。

  6. 在"数据库选择"屏幕中，把欲升级的数据库包括进来。将所有这次不升级的数据库都移动到"排除"列表中，然后单击"下一步"按钮。

  7. 在"数据传输设备"框中指定磁带驱动器的位置。

  8. 如果尚未备份数据库，请在"6.5 设备备份选项"中选择"导出数据前先备份 6.5 设备"。

    在创建 SQL Server 2000 数据库前，SQL Server 升级向导要么提示备份 SQL Server 6.5 设备，要么自动为您复制这些设备。

  9. 如果磁盘空间不足，必要时可选择"在导入数据之前删除 6.5 设备"选项，然后单击"下一步"按钮。

    在导出对象和数据之后，在 SQL Server 2000 中创建数据库之前，SQL Server 升级向导会删除 SQL Server 6.5 设备以收回磁盘空间。

  10. 选择"使用默认配置"选项或编辑默认值，然后单击"下一步"按钮。

    单击"编辑"按钮以进行检查，并在版式实用工具内更改推荐的磁盘配置。在"建议的数据库布局"框中，根据需要进行改动。单击"高级"以查看"对象详细信息"和"驱动器摘要"框。完成后，单击"接受"按钮以返回到 SQL Server 升级向导。

  11. 在"要传输的系统对象"屏幕中选择要从 SQL Server 6.5 传输到 SQL Server 2000 的对象类型：
    • 服务器配置

      与 SQL Server 2000 相关的登录注册和远程登录注册、服务器配置选项均作为版本升级的一部分进行传输。

    • 复制设置

      所有项目，每个已选数据库的订阅和发布，以及分发数据库（如果有的话）均进行传输和升级。

    • SQL Executive 设置

      所有由 SQL Executive 调度的任务均进行传输与升级，以便 SQL Server 2000 可以在 SQL Server 代理中调度和运行这些任务。

  12. 在"ANSI Nulls"中选择下列选项之一：
    • "Off"（创建存储过程时不应使用 ANSI Null）。这是默认设置。

    • "On"（创建存储过程时应使用 ANSI Null）。
  13. 在"引用的标识符"中选择下列选项之一，然后单击"下一步"按钮：
    • "混合型（或未知）"（一些对象是用设为 ON 的 QUOTED_IDENTIFIER 创建的，而其余对象是用设为 OFF 的 QUOTED_IDENTIFIER 创建的，或者无法确定它们是如何创建的）。

    • "Off"（所有对象都应该用设为 OFF 的 QUOTED_IDENTIFIER 编译）。

    • "On"（所有对象都应该用设为 ON 的 QUOTED_IDENTIFIER 编译）。
  14. 在"完成 SQL Server 向导"屏幕中查看所作选择的摘要。单击"在记事本中查看警告和选择"按钮以打开升级脚本的文本版。如果所有的选项都正确，请单击"完成"按钮。

    此时出现"SQL Server 升级脚本解释器"屏幕，并附有升级进度信息。

请参见

使用直接管道或磁带驱动器进行升级的次序


数据库构架

Microsoft® SQL Server™ 2000 数据存储在数据库中。在数据库中，数据被组织到用户可以看见的逻辑组件中。数据库还可以按物理方式，在磁盘上作为两个或更多的文件实现。

使用数据库时使用的主要是逻辑组件，例如表、视图、过程和用户。文件的物理实现在很大程度上是透明的。一般只有数据库管理员需要处理物理实现。

每个 SQL Server 实例有四个系统数据库（master、model、tempdb 和 msdb）以及一个或多个用户数据库。有些单位只使用一个用户数据库来存储其所有数据。有些单位则为本单位的每一个组都设立了不同的数据库，而且有时一个数据库只能由一个应用程序使用。例如，一个单位可以有销售数据库、工资单数据库、文档管理应用程序数据库等。应用程序有时只使用一个数据库，而有时则可以访问几个数据库。

不需要运行多个 SQL Server 数据库引擎的复本，即可使多个用户得以访问服务器上的数据库。SQL Server 标准版或企业版实例能够处理同时在多个数据库中工作的上千个用户。根据定义的安全权限，每个 SQL Server 实例可使所有连接到实例的用户都能使用该实例上的所有数据库。

当连接到 SQL Server 实例时，您的连接会与服务器上的具体某个数据库相关联。这个数据库就称为当前数据库。系统管理员通常会将您连接到默认数据库，但您可以使用数据库 API 内的连接选项来指定另一个数据库。可使用 Transact-SQL USE database_name 语句，或使用可更改当前数据库上下文的 API 函数，由一个数据库切换到另一个数据库。

SQL Server 2000 允许从 SQL Server 实例中分离数据库，然后将数据库重新附加到另一个实例，甚至可以将数据库附加回原来的实例。如果有 SQL Server 数据库文件，可以在连接时让 SQL Server 以特定的数据库名称附加该数据库文件。

请参见

数据库设计注意事项


数据库逻辑组件

Microsoft® SQL Server™ 2000 数据库中的数据被组织成几个不同的对象。这些对象就是当用户连接到数据库时所能看到的东西。

在 SQL Server 中，这些组件被定义为对象：

约束 | 表
默认值 | 触发器
索引 | 用户定义的数据类型
键 | 用户定义函数
存储过程 | 视图


数据类型和表结构

Microsoft® SQL Server™ 2000 数据库中的所有数据包含在称为表的对象中。每个表代表某类对用户有意义的对象。例如，可在一个学校数据库内找到班级表、教师表和学生表。

SQL Server 中的表有两个主要组件：

  • 列

    每列代表由表建模的对象的某种特性，例如，一个部件表有 ID 列、颜色列和重量列。

  • 行

    每行代表由表建模的对象的个别事件。例如，部件表中公司运送的每个部件均占一行。

数据类型

因为每一列都代表对象的一个特性，所以一列中每个事件的数据均相似。列属性中有一个称为列数据类型的属性，用于定义该列可以包含的数据类型。SQL Server 有多种可指定给列的基本数据类型：

binary | Bigint | bit | Char | datetime
decimal | Float | image | Int | Money
nchar | Ntext | nvarchar | Numeric | Real
smalldatetime | smallint | smallmoney | sql_variant | sysname
text | timestamp | tinyint | varbinary | varchar
uniqueidentifier |  |  |  |

SQL Server 2000 还支持 table 基本数据类型，该数据类型可用于存储 SQL 语句的结果集。table 数据类型不适用于表中的列，而只能用于 Transact-SQL 变量和用户定义函数的返回值。有关更多信息，请参见使用特殊数据。

用户也可以创建自己定义的数据类型，例如：

-- Create a birthday data type that allows nulls.
EXEC sp_addtype birthday, datetime, 'NULL'
GO
-- Create a table using the new data type.
CREATE TABLE employee
   (emp_id         char(5),
   emp_first_name   char(30),
   emp_last_name   char(40),
   emp_birthday      birthday)

用户定义的数据类型使表结构对程序员更有意义，并有助于确保包含相似数据类的列具有相同的基本数据类型。

SQL Server 提供了几种数据类型同义词，有助于支持未包括在基本数据类型中的 SQL-92 数据类型名称，如国家字符和字符变化。当在 CREATE TABLE 语句中指定某个同义词时，给列指派一种与此同义词关联的基本数据类型。有关更多信息，请参见数据类型同义词。

域是列中所有允许值的集合。它不仅包括强制数据类型的概念，也包括列中所允许的值。例如，一个部件颜色域既包括数据类型，例如 char(6)，也包括该列所允许的字符串，例如：Red、Blue、Green、Yellow、Brown、Black、White、Teal、Grey 和 Silver。可以通过 CHECK 约束和触发器等机制来强制执行域值。

如果指派了列的数据类型，列中的所有值都必须是所指派的数据类型。仅当 SQL Server 可将源值的数据类型隐性转换为列的数据类型时，SQL 语句才能将不同的数据类型值指定为源值。例如，SQL Server 支持将 int 值隐性转换为 decimal；因此 SQL 语句可将 int 值指定为指派给 decimal 列的值。

SQL Server 2000 sql_variant 数据类型是一种特殊的数据类型，使您得以在同一列中存储多种基本数据类型的值。例如，可在同一列中存储 nchar 值、int 值和 decimal 值。有关更多信息，请参见使用 sql_variant 数据。

空值

列可以接受或拒绝空值。在数据库内 NULL 是特殊值，代表未知值的概念。NULL 不同于空字符或 0。空字符实际上是有效字符，0 是有效数字。而 NULL 只是表示该值未知这一概念。NULL 也不同于零长度字符串。如果列定义中包含 NOT NULL 子句，则不能为该行插入含有 NULL 值的行。如果列定义中仅包含 NULL 关键字，则接受 NULL 值。

在列内允许 NULL 值会增加使用该列的逻辑比较的复杂性。SQL-92 标准规定：对 NULL 值的任何比较都不取值为 TRUE 或 FALSE，而是取值为 UNKNOWN。此规定在比较运算符中引入了三值逻辑，而要正确运用该逻辑很困难。

系统表

SQL Server 将定义服务器配置的数据以及它的所有表存储在称为系统表的特殊表集内。用户不应直接查询或更新系统表，除非没有其它方法获得应用程序所需的数据。只有 SQL Server 才应引用系统表来响应用户发出的管理命令。系统表可能因版本的不同而异。对于直接引用系统表的应用程序，可能必须先进行重写，然后才能升级到使用不同版本系统表的新 SQL Server 版本。SQL Server 通过其它方法表现系统表中的大部分信息。有关更多信息，请参见系统表。

临时表

SQL Server 支持临时表。临时表就是那些名称以井号 (#) 开头的表。如果当用户断开连接时没有除去临时表，SQL Server 将自动除去临时表。临时表不存储在当前数据库内，而是存储在系统数据库 tempdb 内。

临时表有两种类型：

  • 本地临时表

    以一个井号 (#) 开头的那些表名。只有在创建本地临时表的连接上才能看到这些表。

  • 全局临时表

    以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表，那么只要所有其它任务停止引用它们，这些表即被除去。当创建全局临时表的连接断开后，新的任务不能再引用它们。当前的语句一执行完，任务与表之间的关联即被除去；因此通常情况下，只要创建全局临时表的连接断开，全局临时表即被除去。

现在，临时表的许多传统用途可由具有 table 数据类型的变量替换。

使用表

用户使用数据操作语言 (DML) SQL 语句来处理表中的数据：

-- Get a list of all employees named Smith:
SELECT emp_first_name, emp_last_name
FROM employee
WHERE emp_last_name = 'Smith'

-- Delete an employee who quit:
DELETE employee
WHERE emp_id = 'OP123'

-- Add a new employee:
INSERT INTO employee
VALUES ( 'OP456', 'Dean', 'Straight', '01/01/1960')

-- Change an employee name:
UPDATE employee
SET emp_last_name = 'Smith'
WHERE emp_id = 'OP456'

请参见

指定列数据类型

表


SQL 视图

视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以用引用表时所使用的方法，在 Transact-SQL 语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能：

  • 将用户限定在表中的特定行上。

    例如，只允许雇员看见工作跟踪表内记录其工作的行。

  • 将用户限定在特定列上。

    例如，对于那些不负责处理工资单的雇员，只允许他们看见雇员表中的姓名列、办公室列、工作电话列和部门列，而不能看见任何包含工资信息或个人信息的列。

  • 将多个表中的列联接起来，使它们看起来象一个表。

  • 聚合信息而非提供详细信息。

    例如，显示一个列的和，或列的最大值和最小值。

通过定义 SELECT 语句以检索将在视图中显示的数据来创建视图。SELECT 语句引用的数据表称为视图的基表。在下例中，pubs 数据库中的 titleview 是一个视图，该视图选择三个基表中的数据来显示包含常用数据的虚拟表：

CREATE VIEW titleview
AS
SELECT title, au_ord, au_lname, price, ytd_sales, pub_id
FROM authors AS a
     JOIN titleauthor AS ta ON (a.au_id = ta.au_id)
     JOIN titles AS t ON (t.title_id = ta.title_id)

之后，可以用引用表时所使用的方法在语句中引用 titleview。

SELECT *
FROM titleview

一个视图可以引用另一个视图。例如，titleview 显示的信息对管理人员很有用，但公司通常只在季度或年度财务报表中才公布本年度截止到现在的财政数字。可以建立一个视图，在其中包含除 au_ord 和 ytd_sales 外的所有 titleview 列。使用这个新视图，客户可以获得已上市的书籍列表而不会看到财务信息：

CREATE VIEW Cust_titleview
AS
SELECT title, au_lname, price, pub_id
FROM titleview

视图可用于在多个数据库或 Microsoft® SQL Server™ 2000 实例间对数据进行分区。分区视图可用于在整个服务器组内分布数据库处理。服务器组具有与服务器聚集相同的性能优点，并可用于支持最大的 Web 站点或公司数据中心的处理需求。原始表被细分为多个成员表，每个成员表包含原始表的行子集。每个成员表可放置在不同服务器的数据库中。每个服务器也可得到分区视图。分区视图使用 Transact-SQL UNION 运算符，将在所有成员表上选择的结果合并为单个结果集，该结果集的行为与整个原始表的复本完全一样。例如在三个服务器间进行表分区。在第一个服务器上定义如下的分区视图：

CREATE VIEW PartitionedView AS
SELECT *
    FROM MyDatabase.dbo.PartitionTable1
UNION ALL
SELECT *
    FROM Server2.MyDatabase.dbo.PartitionTable2
UNION ALL
SELECT *
    FROM Server3.MyDatabase.dbo.PartitionTable3

在其它两个服务器上定义类似的分区视图。利用这三个视图，三个服务器上任何引用 PartitionedView 的 Transact-SQL 语句都将看到与原始表中相同的行为。似乎每个服务器上都存在原始表的复本一样，而实际上每个表只有一个成员表和分区视图。有关更多信息，请参见视图使用方案。

只要所做的修改只影响视图所引用的其中一个基表，就可以更新所有 SQL Server 版本内的视图（可以对其执行 UPDATE、DELETE 或 INSERT 语句）。

-- Increase the prices for publisher '0736' by 10%.
UPDATE titleview
SET price = price * 1.10
WHERE pub_id = '0736'
GO

SQL Server 2000 支持可引用视图的更复杂的 INSERT、UPDATE 和 DELETE 语句。可在视图上定义 INSTEAD OF 触发器，指定必须对基表执行的个别更新以支持 INSERT、UPDATE 或 DELETE 语句。另外，分区视图还支持 INSERT、UDPATE 和 DELETE 语句修改视图所引用的多个成员表。

索引视图是 SQL Server 2000 具有的功能，可显著提高复杂视图类型的性能，这些视图类型通常在数据仓库或其它决策支持系统中出现。

视图的结果集通常不保存在数据库中，因此视图也称为虚拟表。视图的结果集动态包含在语句逻辑中并在运行时动态生成。有关更多信息，请参见视图解析。

复杂的查询（如决策支持系统中的查询）可引用基表中的大量行，并将大量信息聚积在相对较简洁的聚合中，如总和或平均值。SQL Server 2000 支持在执行此类复杂查询的视图上创建聚集索引。当执行 CREATE INDEX 语句时，视图 SELECT 的结果集将永久存储在数据库中。SQL 语句此后若引用该视图，响应时间将会显著缩短。对基本数据的修改将自动反映在视图中。

SQL Server 2000 CREATE VIEW 语句支持 SCHEMABINDING 选项，以防止视图所引用的表在视图未被调整的情况下发生改变。必须为任何创建索引的视图指定 SCHEMABINDING。

请参见

CREATE INDEX

CREATE TRIGGER

CREATE VIEW

设计索引视图

视图


SQL 存储过程

存储过程是一组编译在单个执行计划中的 Transact-SQL 语句。

Microsoft® SQL Server™ 2000 存储过程以四种方式返回数据：

  • 输出参数，既可以返回数据（整型值或字符值等），也可以返回游标变量（游标是可以逐行检索的结果集）。

  • 返回代码，始终是整型值。

  • SELECT 语句的结果集，这些语句包含在该存储过程内或该存储过程所调用的任何其它存储过程内。

  • 可从存储过程外引用的全局游标。

存储过程帮助在不同的应用程序之间实现一致的逻辑。在一个存储过程内，可以设计、编码和测试执行某个常用任务所需的 SQL 语句和逻辑。之后，每个需要执行该任务的应用程序只须执行此存储过程即可。将业务逻辑编入单个存储过程还提供了单个控制点，以确保业务规则正确执行。

存储过程还可以提高性能。许多任务以一系列 SQL 语句来执行。对前面 SQL 语句的结果所应用的条件逻辑决定后面执行的 SQL 语句。如果将这些 SQL 语句和条件逻辑写入一个存储过程，它们就成为服务器上一个执行计划的一部分。不必将结果返回给客户端以应用条件逻辑，所有工作都可以在服务器上完成。下例中的 IF 语句显示了在一个过程中嵌入条件逻辑，以防止给应用程序发送结果集：

IF (@QuantityOrdered < (SELECT QuantityOnHand
                  FROM Inventory
                  WHERE PartID = @PartOrdered) )
   BEGIN
   -- SQL statements to update tables and process order.
   END
ELSE
   BEGIN
   -- SELECT statement to retrieve the IDs of alternate items
   -- to suggest as replacements to the customer.
   END

应用程序不必传输存储过程中的所有 SQL 语句：它们只须传输包含过程名和参数值的 EXECUTE 或 CALL 语句。

存储过程还可以使用户不必知道数据库内的表的详细信息。如果一组存储过程支持用户需要执行的所有业务功能，则用户永远不必直接访问表，他们可以只执行特定的存储过程，这些过程为他们所熟悉的业务进程建立了模型。

存储过程的这个用途的一个例证是 SQL Server 系统存储过程，它将用户从系统表中隔离出来。SQL Server 中包含一组系统存储过程，这些过程的名称通常以 sp_ 开头。这些系统存储过程支持运行 SQL Server 系统所需的所有管理任务。可以使用 Transact-SQL 中与管理相关的语句（如 CREATE TABLE）或系统存储过程来管理 SQL Server 系统，永远不必直接更新系统表。

存储过程和执行计划

在 SQL Server 6.5 版及更早的版本中，存储过程是对执行计划进行部分预编译的方法。在创建存储过程的同时，系统表内也存储了一个部分编译好的执行计划。执行存储过程比执行 SQL 语句更有效，因为 SQL Server 不必从头到尾编译执行计划，而只须优化该过程所存储的计划。同时，在 SQL Server 过程高速缓存中保留了完全编译好的存储过程执行计划，这意味着后面执行的存储过程可以使用预先编译好的执行计划。

SQL Server 2000 和 SQL Server 7.0 版在语句处理上做了许多修改，将存储过程的许多性能优点扩展到所有 SQL 语句。SQL Server 2000 和 SQL Server 7.0 在创建存储过程时不保存部分编译的计划。与任何其它的 Transact-SQL 语句一样，存储过程也在执行时进行编译。SQL Server 2000 和 SQL Server 7.0 在过程高速缓存内保留所有 SQL 语句的执行计划，而不只是存储过程的执行计划。数据库引擎使用一种高效的算法，将新的 Transact-SQL 语句与现有执行计划的 Transact-SQL 语句进行比较。如果数据库引擎确定新的 Transact-SQL 语句与现有执行计划的 Transact-SQL 语句相匹配，就重新使用这个计划。这样就将执行计划的重复使用性扩展到了所有 SQL 语句，从而减少了预编译存储过程的相对性能优势。

SQL Server 2000 和 SQL Server 7.0 版提供了新的处理 SQL 语句的可选方法。有关更多信息，请参见查询处理器构架。

临时存储过程

SQL Server 2000 还支持临时存储过程，这些过程与临时表一样，在连接断开时自动被除去。临时存储过程存储在 tempdb 内，它们在连接到 SQL Server 以前的版本时很有用。如果应用程序生成需要多次执行的动态 Transact-SQL 语句，就可以使用临时存储过程。无须每次重新编译 Transact-SQL 语句，而可以创建临时存储过程，在第一次执行时编译该过程，然后多次执行预先编译好的计划。不过，大量使用临时存储过程会导致在 tempdb 内争夺系统表。

SQL Server 2000 和 SQL Server 7.0 的两个功能消除了使用临时存储过程的需要：

  • 可重新使用前面 SQL 语句的执行计划。该功能与新的系统存储过程 sp_executesql 结合使用时尤为强大。

  • 本来就支持用于 OLE DB 和 ODBC 的准备/执行模型，无须使用任何存储过程。

有关临时存储过程的其它用法的更多信息，请参见执行计划的高速缓存和重新使用。

存储过程示例

下面简单的存储过程示例说明存储过程返回数据的三个方法：

  1. 首先发出 SELECT 语句，要求返回汇总了 sales 表中销售点 (store) 订购活动的结果集。

  2. 然后发出 SELECT 语句填写输出参数。

  3. 最后通过带 SELECT 语句的 RETURN 语句返回整数。返回代码通常是用来传回错误检查信息的。此过程的执行没有错误，因此返回了另一个值说明所返回代码的填写方式。
USE Northwind
GO
DROP PROCEDURE OrderSummary
GO
CREATE PROCEDURE OrderSummary @MaxQuantity INT OUTPUT AS
-- SELECT to return a result set summarizing
-- employee sales.
SELECT Ord.EmployeeID, SummSales = SUM(OrDet.UnitPrice * OrDet.Quantity)
FROM Orders AS Ord
     JOIN [Order Details] AS OrDet ON (Ord.OrderID = OrDet.OrderID)
GROUP BY Ord.EmployeeID
ORDER BY Ord.EmployeeID

-- SELECT to fill the output parameter with the
-- maximum quantity from Order Details.
SELECT @MaxQuantity = MAX(Quantity) FROM [Order Details]

-- Return the number of all items ordered.
RETURN (SELECT SUM(Quantity) FROM [Order Details])
GO

-- Test the stored procedure.

-- DECLARE variables to hold the return code
-- and output parameter.
DECLARE @OrderSum INT
DECLARE @LargestOrder INT

-- Execute the procedure, which returns
-- the result set from the first SELECT.
EXEC @OrderSum = OrderSummary @MaxQuantity = @LargestOrder OUTPUT

-- Use the return code and output parameter.
PRINT 'The size of the largest single order was: ' +
                 CONVERT(CHAR(6), @LargestOrder)
PRINT 'The sum of the quantities ordered was: ' +
                 CONVERT(CHAR(6), @OrderSum)
GO

下例执行后的输出结果是：

EmployeeID  SummSales
----------- --------------------------
1           202,143.71
2           177,749.26
3           213,051.30
4           250,187.45
5           75,567.75
6           78,198.10
7           141,295.99
8           133,301.03
9           82,964.00
The size of the largest single order was: 130
The sum of the quantities ordered was: 51317

请参见

存储过程


SQL 用户定义函数

编程语言中的函数是用于封装经常执行的逻辑的子例程。任何代码若必须执行函数所包含的逻辑，都可以调用该函数，而不必重复所有的函数逻辑。

Microsoft® SQL Server™ 2000 支持两种函数类型：

  • 内置函数

    按 Transact-SQL 参考中定义的方式运行且不能修改。只有使用 Transact-SQL 参考中所定义语法的 Transact-SQL 语句才能引用这类函数。有关这些内置函数的更多信息，请参见使用函数。

  • 用户定义函数

    使您得以用 CREATE FUNCTION 语句定义自己的 Transact-SQL 函数。有关这些内置函数的更多信息，请参见用户定义函数。

用户定义函数接受零个或更多的输入参数，并返回单值。一些用户定义函数返回单个的标量数据值，如 int、char 或 decimal 值。

例如，下面的语句创建一个返回 decimal 的简单函数：

CREATE FUNCTION CubicVolume
-- Input dimensions in centimeters.
   (@CubeLength decimal(4,1), @CubeWidth decimal(4,1),
    @CubeHeight decimal(4,1) )
RETURNS decimal(12,3) -- Cubic Centimeters.
AS
BEGIN
   RETURN ( @CubeLength * @CubeWidth * @CubeHeight )
END

然后可以在允许整型表达式的任何地方（如表的计算列中）使用该函数：

CREATE TABLE Bricks
   (
    BrickPartNmbr   int PRIMARY KEY,
    BrickColor      nchar(20),
    BrickHeight     decimal(4,1),
    BrickLength     decimal(4,1),
    BrickWidth      decimal(4,1),
    BrickVolume AS
              (
               dbo.CubicVolume(BrickHeight,
                         BrickLength, BrickWidth)
              )
   )

SQL Server 2000 还支持返回 table 数据类型的用户定义函数：

  • 该函数可声明内部 table 变量，将行插入该变量，然后将该变量作为返回值返回。

  • 一类称为内嵌函数的用户定义函数，将 SELECT 语句的结果集作为变量类型 table 返回。

这些函数可用在能指定表表达式的地方。有关 table 数据类型的更多信息，请参见使用特殊数据。

返回 table 的用户定义函数可以是替代视图的强大方式。返回 table 的用户定义函数可用在 Transact-SQL 查询中允许表或视图表达式的地方。视图受限于单个 SELECT 语句，而用户定义函数可包含附加的语句，使函数所包含的逻辑比视图可能具有的逻辑更强大。

返回 table 的用户定义函数还可替换返回单个结果集的存储过程。由用户定义函数返回的 table 可在 Transact-SQL 语句的 FROM 子句中引用，而返回结果集的存储过程则不能。例如，fn_EmployeesInDept 是返回 table 的用户定义函数，可由 SELECT 语句唤醒调用：

SELECT *
FROM tb_Employees AS E,
     dbo.fn_EmployeesInDept('shipping') AS EID
WHERE E.EmployeeID = EID.EmployeeID

下面的语句在 Northwind 数据库中创建将要返回 table 的函数：

CREATE FUNCTION LargeOrderShippers ( @FreightParm money )
RETURNS @OrderShipperTab TABLE
   (
    ShipperID     int,
    ShipperName   nvarchar(80),
    OrderID       int,
    ShippedDate   datetime,
    Freight       money
   )
AS
BEGIN
   INSERT @OrderShipperTab
        SELECT S.ShipperID, S.CompanyName,
               O.OrderID, O.ShippedDate, O.Freight
        FROM Shippers AS S
             INNER JOIN Orders AS O ON (S.ShipperID = O.ShipVia)
        WHERE O.Freight > @FreightParm
   RETURN
END

在这个函数中，返回的本地变量名是 @OrderShipperTab。函数中的语句在 @OrderShipperTab 变量中插入行，以生成由该函数返回的 table 结果。外部语句唤醒调用该函数以引用由该函数返回的 table：

SELECT *
FROM LargeOrderShippers( $500 )


约束、规则、默认值和触发器

除数据类型和大小外，表中的列还具有其它属性。这些属性在确保数据库中的数据完整性方面有重要作用：

  • 数据完整性是指列中每个事件都有正确的数据值。

    数据值必须是正确的数据类型，并且位于正确的域内。

  • 引用完整性表示得到正常维护的表之间的关系。

    表中的数据只应指向另一个表中的现有行，不应指向不存在的行。

用于维护这两种完整性的对象包括：

  • 约束

  • 规则

  • 默认值

  • 触发器


约束

约束使您得以定义 Microsoft® SQL Server™ 2000 自动强制数据库完整性的方式。约束定义关于列中允许值的规则，是强制完整性的标准机制。使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。

约束类

SQL Server 2000 支持五类约束。

  • NOT NULL 指定不接受 NULL 值的列。

  • CHECK 约束对可以放入列中的值进行限制，以强制执行域的完整性。

    CHECK 约束指定应用于列中输入的所有值的布尔（取值为 TRUE 或 FALSE）搜索条件，拒绝所有不取值为 TRUE 的值。可以为每列指定多个 CHECK 约束。下例显示名为 chk_id 约束的创建，该约束确保只对此关键字输入指定范围内的数字，以进一步强制执行主键的域。

    CREATE TABLE cust_sample
    (
    cust_id                int        PRIMARY KEY,
    cust_name            char(50),
    cust_address            char(50),
    cust_credit_limit    money,
    CONSTRAINT chk_id CHECK (cust_id BETWEEN 0 and 10000 )
    )
  • UNIQUE 约束在列集内强制执行值的唯一性。

    对于 UNIQUE 约束中的列，表中不允许有两行包含相同的非空值。主键也强制执行唯一性，但主键不允许空值。UNIQUE 约束优先于唯一索引。

  • PRIMARY KEY 约束标识列或列集，这些列或列集的值唯一标识表中的行。

    在一个表中，不能有两行包含相同的主键值。不能在主键内的任何列中输入 NULL 值。在数据库中 NULL 是特殊值，代表不同于空白和 0 值的未知值。建议使用一个小的整数列作为主键。每个表都应有一个主键。

    一个表中可以有一个以上的列组合，这些组合能唯一标识表中的行，每个组合就是一个候选键。数据库管理员从候选键中选择一个作为主键。例如，在 part_sample 表中，part_nmbr 和 part_name 都可以是候选键，但是只将 part_nmbr 选作主键。

    CREATE TABLE part_sample
            (part_nmbr        int            PRIMARY KEY,
            part_name        char(30),
            part_weight        decimal(6,2),
            part_color        char(15) )
  • FOREIGN KEY 约束标识表之间的关系。

    一个表的外键指向另一个表的候选键。当外键值没有候选键时，外键可防止操作保留带外键值的行。在下例中，order_part 表建立一个外键引用前面定义的 part_sample 表。通常情况下，order_part 在 order 表上也有一个外键，下面只不过是一个简单示例。

    CREATE TABLE order_part
        (order_nmbr        int,
        part_nmbr        int
            FOREIGN KEY REFERENCES part_sample(part_nmbr)
                ON DELETE NO ACTION,
        qty_ordered        int)
GO

    如果一个外键值没有候选键，则不能插入带该值（NULL 除外）的行。如果尝试删除现有外键指向的行，ON DELETE 子句将控制所采取的操作。ON DELETE 子句有两个选项：

    • NO ACTION 指定删除因错误而失败。

    • CASCADE 指定还将删除包含指向已删除行的外键的所有行。

    如果尝试更新现有外键指向的候选键值，ON UPDATE 子句将定义所采取的操作。它也支持 NO ACTION 和 CASCADE 选项。

列约束和表约束

约束可以是列约束或表约束：

  • 列约束被指定为列定义的一部分，并且仅适用于那个列（前面的示例中的约束就是列约束）。

  • 表约束的声明与列的定义无关，可以适用于表中一个以上的列。

当一个约束中必须包含一个以上的列时，必须使用表约束。

例如，如果一个表的主键内有两个或两个以上的列，则必须使用表约束将这两列加入主键内。假设有一个表记录工厂内的一台计算机上所发生的事件。假定有几类事件可以同时发生，但不能有两个同时发生的事件属于同一类型。这一点可以通过将 type 列和 time 列加入双列主键内来强制执行。

CREATE TABLE factory_process
   (event_type   int,
   event_time   datetime,
   event_site   char(50),
   event_desc   char(1024),
CONSTRAINT event_key PRIMARY KEY (event_type, event_time) )

请参见

CREATE TABLE

创建和修改表


规则

规则是一个向后兼容的功能，用于执行一些与 CHECK 约束相同的功能。CHECK 约束是用来限制列值的首选标准方法。CHECK 约束比规则更简明，一个列只能应用一个规则，但是却可以应用多个 CHECK 约束。CHECK 约束作为 CREATE TABLE 语句的一部分进行指定，而规则以单独的对象创建，然后绑定到列上。

下例创建一个规则，执行与前面主题中的 CHECK 约束示例相同的功能。Microsoft® SQL Server™ 2000 首选的方法是 CHECK 约束。

CREATE RULE id_chk AS @id BETWEEN 0 and 10000
GO
CREATE TABLE cust_sample
   (
   cust_id            int
   PRIMARY KEY,
   cust_name         char(50),
   cust_address         char(50),
   cust_credit_limit   money,
   )
GO
sp_bindrule id_chk, 'cust_sample.cust_id'
GO

请参见

CREATE TABLE

创建和修改表


默认值

如果在插入行时没有指定列的值，那么默认值指定列中所使用的值。默认值可以是任何取值为常量的对象，例如：

  • 持续

  • 内置函数

  • 数学表达式

有两种使用默认值的方法：

  • 在 CREATE TABLE 中使用 DEFAULT 关键字创建默认定义，将常量表达式指派为列的默认值。

    这是首选的标准方法，也是定义默认值的更简明的方法。

  • 使用 CREATE DEFAULT 语句创建默认对象，然后使用 sp_bindefault 系统存储过程将它绑定到列上。

    这是一个向前兼容的功能。

下例使用其中一种默认值类型创建表。它创建默认对象给一列指派默认值，并将默认对象绑定到该列上。然后在没有为该列指定值的情况下使用默认值做插入测试，并检索测试行以验证所应用的默认值。

USE pubs
GO
CREATE TABLE test_defaults
   (keycol      smallint,
   process_id   smallint DEFAULT @@SPID,   --Preferred default definition
   date_ins   datetime DEFAULT getdate(),   --Preferred default definition
   mathcol      smallint DEFAULT 10 * 2,   --Preferred default definition
   char1      char(3),
   char2      char(3) DEFAULT 'xyz') --Preferred default definition
GO
/* Illustration only, use DEFAULT definitions instead.*/
CREATE DEFAULT abc_const AS 'abc'
GO
sp_bindefault abc_const, 'test_defaults.char1'
GO
INSERT INTO test_defaults(keycol) VALUES (1)
GO
SELECT * FROM test_defaults
GO

下例的输出是：

Default bound to column.

(1 row(s) affected)

keycol process_id date_ins                    mathcol char1 char2
------ ---------- --------------------------- ------- ----- -----
1      7          Oct 16 1997  8:34PM         20      abc   xyz

(1 row(s) affected)

请参见

CREATE TABLE

创建和修改表


触发器

Microsoft® SQL Server™ 2000 触发器是一类特殊的存储过程，被定义为在对表或视图发出 UPDATE、INSERT 或 DELETE 语句时自动执行。触发器是功能强大的工具，使每个站点可以在有数据修改时自动强制执行其业务规则。触发器可以扩展 SQL Server 约束、默认值和规则的完整性检查逻辑，但只要约束和默认值提供了全部所需的功能，就应使用约束和默认值。

表可以有多个触发器。CREATE TRIGGER 语句可以与 FOR UPDATE、FOR INSERT 或 FOR DELETE 子句一起使用，指定触发器专门用于特定类型的数据修改操作。当指定 FOR UPDATE 时，可以使用 IF UPDATE (column_name) 子句，指定触发器专门用于具体某列的更新。

触发器可使公司的处理任务自动进行。在库存系统内，更新触发器可以检测什么时侯库存下降到了需要再进货的量，并自动生成给供货商的定单。在记录工厂加工过程的数据库内，当某个加工过程超过所定义的安全限制时，触发器会给操作员发电子邮件或寻呼。

无论何时只要有新的标题添加到 pubs 数据库中，下面的触发器就会生成电子邮件：

CREATE TRIGGER reminder
ON titles
FOR INSERT
AS
   EXEC master..xp_sendmail 'MaryM',
      'New title, mention in the next report to distributors.'

触发器包含 Transact-SQL 语句，这与存储过程十分相似。与存储过程一样，触发器也返回由触发器内的 SELECT 语句生成的结果集。不建议在触发器中包含 SELECT 语句，但仅填充参数的语句除外。这是因为用户不期望看到由 UPDATE、INSERT 或 DELETE 语句返回的结果集。

可使用 FOR 子句指定触发器的执行时间：

  • AFTER

    触发器在触发它们的语句完成后执行。如果该语句因错误（如违反约束或语法错误）而失败，触发器将不会执行。不能为视图指定 AFTER 触发器，只能为表指定该触发器。可以为每个触发操作（INSERT、UPDATE 或 DELETE）指定多个 AFTER 触发器。如果表有多个 AFTER 触发器，可使用 sp_settriggerorder 定义哪个 AFTER 触发器最先激发，哪个最后激发。除第一个和最后一个触发器外，所有其它的 AFTER 触发器的激发顺序不确定，并且无法控制。

    在 SQL Server 2000 中 AFTER 是默认触发器。不能在 SQL Server 7.0 版或更早的版本中指定 AFTER 或 INSTEAD OF，这些版本中的所有触发器都作为 AFTER 触发器运行。

  • INSTEAD OF

    该触发器代替触发操作执行。可在表和视图上指定 INSTEAD OF 触发器。只能为每个触发操作（INSERT、UPDATE 和 DELETE）定义一个 INSTEAD OF 触发器。INSTEAD OF 触发器可用于对 INSERT 和 UPDATE 语句中提供的数据值执行增强的完整性检查。INSTEAD OF 触发器还允许指定某些操作，使一般不支持更新的视图可以被更新。

请参见

用触发器强制执行业务规则


排序规则

在 Microsoft® SQL Server™ 2000 中，字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。

SQL Server 2000 支持在一个数据库中存储具有不同排序规则的对象。可为一直到列级的各级别指定不同的 SQL Server 2000 排序规则。可为表中的每列指派不同的排序规则。SQL Server 的早期版本仅支持每个 SQL Server 实例有一个排序规则。在 SQL Server 7.0 或更早的版本实例中创建的所有数据库和数据库对象具有相同的排序规则。

字符数据的存储方式

在计算机中，字符由不同的位模式（ON 或 OFF）表示。每个字节有 8 位，这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。对于使用 1 个字节存储每个字符的程序，通过给每个位模式指派字符可表示最多 256 个不同的字符。2 个字节有 16 位，这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符。

单字节代码页是字符定义，这些字符映射到每个字节可能有的 256 种位模式中的每一种。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式。每种欧洲语言（如德语和西班牙语）都有各自的单字节代码页。虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同，但用于表示重音字符（如"é"和"á"）的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据，必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义，那么数据将丢失。如果某个数据库为来自许多不同国家的客户端提供服务，则很难为该数据库选择这样一种代码页，使其包括所有客户端计算机所需的全部扩展字符。而且，在代码页间不停地转换需要花费大量的处理时间。

仅靠单字节字符集存储许多语言所使用的字符也是不够的。例如，一些亚洲语言包含上千个字符，所以每个字符必须使用双字节。双字节字符集正是为这些语言定义的。但是，这些语言都有各自的代码页，在运行不同双字节代码页的计算机之间传输数据也存在困难。

SQL Server 2000 支持以下代码页。

代码页 | 描述
1258 | 越南语
1257 | 波罗的语
1256 | 阿拉伯语
1255 | 希伯来语
1254 | 土耳其语
1253 | 希腊语
1252 | 拉丁 1 字符 (ANSI)
1251 | 西里尔语
1250 | 中欧语言
950 | 繁体中文
949 | 朝鲜语
936 | 简体中文
932 | 日语
874 | 泰国语
850 | 多语种 (MS-DOS Latin1)
437 | MS-DOS 美国英语

为解决在网络中支持多种代码页时出现的字符转换和解释问题，ISO 标准化组织和称为 Unicode Consortium 的团体定义了 Unicode 标准。Unicode 使用双字节存储每个字符。由于 65,536 个字符足以涵盖世界上所有语言常用的字符，因此 Unicode 标准适用于所有的主要语言。如果网络中的所有计算机和程序都使用 Unicode，则无需进行任何字符转换，每个用户与所有其它用户看到的字符完全相同，并且不会丢失任何字符。

在运行 Microsoft Windows® 操作系统的计算机上，操作系统和 Windows 应用程序使用的代码页由 Windows 区域设置定义。区域设置是在安装操作系统时选择的。Windows 应用程序使用由 Windows 区域设置定义的代码页来解释数据。Windows 应用程序还支持宽字符数据，即 Unicode 数据。

SQL Server 2000 支持两类字符数据类型：

  • Unicode 数据类型 nchar、nvarchar 和 ntext。这些数据类型使用 Unicode 字符表示法。代码页不适用于这些数据类型。

  • 非 Unicode 字符数据类型 char、varchar 和 text。这些数据类型使用单字节或双字节代码页中定义的字符表示法。

有关字符数据的存储方式以及代码页、Unicode 和排序次序操作的更多信息，请参见在 http://msdn.microsoft.com MSDN® 页中的 Developing International Software for Windows 95 and Windows NT 4.0。

国际化数据和 Unicode

当只使用字符数据和代码页时，在一个数据库内很难以多种语言存储数据。很难为数据库找到一种代码页，能够存储所需全部语言特有的字符。对于运行各种代码页的不同客户端所读取和更新的特殊字符，要确保正确地转换也很困难。支持国际化客户端的数据库应始终使用 Unicode 数据，而不应使用非 Unicode 数据类型。

例如，北美洲客户的数据库必须处理三种主要语言：

  • 墨西哥使用的西班牙文名称和地址。

  • 魁北克使用的法文名称和地址。

  • 加拿大的其余地区和美国使用的英文名称和地址。

当只使用字符列和代码页时须小心，以确保数据库所安装的代码页能够处理这三种语言的字符。当其中一种语言的字符由运行另一种语言的代码页的客户端读取时，必须更加小心以确保能够正确转换字符。

随着 Internet 的发展，支持众多运行不同区域设置的客户端计算机变得日益重要。很难选择这样一种代码页，使其包含的字符数据类型能够支持全球范围用户所需的全部字符。

管理国际化数据库中的字符数据的最简单方法是始终使用 Unicode nchar、nvarchar 和 ntext 数据类型，代替对应的非 Unicode 数据类型（char、varchar 和 text）。如果所有使用国际化数据库的应用程序也采用 Unicode 变量而不是非 Unicode 变量，那么在系统中的任何地方都无须进行字符转换。每个客户端与所有其它客户端看见的字符数据都完全相同。

对于可使用单字节代码页的系统，Unicode 数据需要的存储空间是非 Unicode 字符数据的两倍，但却消除了在代码页间转换扩展字符的必要，因此至少部分弥补了上面的不足。使用双字节代码页的系统没有这个问题。

SQL Server 2000 将所有的文本化系统目录数据都存储在包含 Unicode 数据类型的列中。数据库对象（如表、视图和存储过程）的名称存储在 Unicode 列中。这样就可以只使用 Unicode 开发应用程序，从而避免了所有的代码页转换问题。

排序次序

排序次序指定 SQL Server 解释、排序、比较和显示字符数据所使用的规则。例如，排序次序定义"a"是小于、等于还是大于"b"。排序次序定义排序规则是否区分大小写，例如"m"和"M"是否相同。另外还定义排序规则是否区分重音，例如"á"和"ä"是否相同。

SQL Server 2000 对每种排序规则使用两种排序次序，一种用于 Unicode 数据，另一种用于字符代码页。

许多 SQL Server 排序规则使用相同的代码页，但是代码页的排序次序不同。这使站点得以选择：

  • 是否仅根据位模式所表示的数字值来排序字符。二进制排序的速度最快，这是因为 SQL Server 不用做任何调整并可使用快速、简单的排序算法。二进制排序次序始终区分大小写。由于代码页中的位模式可能不按照特定语言的字典规则所定义的序列排列，二进制排序有时并不按照使用该语言的用户所期待的序列对字符进行排序。

  • 区分大小写还是不区分大小写。

  • 区分重音还是不区分重音。

请参见

用于国际支持的排序规则选项

SQL Server 排序规则基础知识

Unicode 数据

使用 Unicode 数据


SQL Server 排序规则基础知识

Microsoft® SQL Server™ 2000 支持多种排序规则。排序规则对控制正确使用语言（如马其顿语或波兰语）或字母表（如西欧语言使用的拉丁字母表 Latin1_General）字符的规则进行编码。

每个 SQL Server 排序规则指定三个属性：

  • 用于 Unicode 数据类型（nchar、nvarchar 和 ntext）的排序次序。排序次序定义字符的排序序列，以及在比较操作中对字符取值的方法。

  • 用于非 Unicode 字符数据类型（char、varchar 和 text）的排序次序。

  • 用于存储非 Unicode 字符数据的代码页。

    说明 不能指定与 Unicode 数据类型（nchar、nvarchar 和 ntext）对应的代码页。用于 Unicode 字符的双字节位模式由 Unicode 标准定义且不能更改。

可在任何级别上指定 SQL Server 2000 排序规则。安装 SQL Server 2000 实例时，可指定该实例的默认排序规则。每次创建数据库时，可指定用于该数据库的默认排序规则。如果未指定排序规则，数据库的默认排序规则即是实例的默认排序规则。无论何时定义字符列、变量或参数，都可指定这些对象的排序规则。如果未指定排序规则，将使用数据库的默认排序规则创建这些对象。

如果 SQL Server 实例的所有用户都使用同一种语言，则应选择支持该语言的排序规则。例如，若所有用户都讲法语，则选择法语排序规则。

如果 SQL Server 实例的用户使用多种语言，则应选择能对多语种需求提供最佳支持的排序规则。例如，如果用户一般都讲西欧语言，则选择 Latin1_General 排序规则。当支持使用多种语言的用户时，对所有字符数据都使用 Unicode 数据类型 nchar、nvarchar 和 ntext 最为重要。Unicode 旨在消除非 Unicode char、varchar 和 text 数据类型的代码页转换困难。因为排序规则定义用于比较操作的排序次序和 Unicode 字符的排序，所以当用 Unicode 数据类型实现所有的列时，排序规则仍会产生不同。即使当使用 Unicode 数据类型存储字符数据时，也应选择支持大多数用户的排序规则，以防使用非 Unicode 数据类型实现列或变量。

SQL Server 排序规则定义数据库引擎存储和操作字符及 Unicode 数据的方式。然而，当数据移入应用程序后，在应用程序中进行的字符排序和比较将由计算机上选定的 Windows 区域设置控制。应用程序使用的字符数据排序规则是由 Windows 区域设置控制的项目之一，区域设置还定义其它项目，如数字、时间、日期和货币格式。对于 Microsoft Windows NT® 4.0、Microsoft Windows® 98 和 Microsoft Windows 95，可使用控制面板中的"区域设置"应用程序指定 Windows 区域设置。对于 Microsoft Windows 2000，可使用"控制面板"中的"区域选项"应用程序指定区域设置。有关 Windows 区域设置的更多信息，请参见 Microsoft Web 站点 MSDN® 页中的 Developing International Software for Windows 95 and Windows NT 4.0。

多个排序规则可对非 Unicode 数据使用相同的代码页。例如，代码页 1251 定义西里尔语字符集。多个排序规则（如 Cyrillic_General、Ukrainian 和 Macedonian）都使用该代码页。虽然这些排序规则都使用相同的位集来表示非 Unicode 字符数据，但在处理字典定义时所应用的排序和比较规则略有不同，而字典定义确定语言或字母表中与排序规则相关的正确字符序列。

因为 SQL Server 2000 排序规则控制 Unicode 和非 Unicode 排序次序，所以不会遇到由为 Unicode 和非 Unicode 数据指定不同的排序规则而引起的问题。在 SQL Server 的早期版本中，对代码页号、字符排序次序和 Unicode 排序规则分别进行指定。SQL Server 的早期版本还支持每个代码页有不同数目的排序次序，并为某些代码页提供 Windows 区域设置中没有的排序次序。在 SQL Server 7.0 中，还可以指定为非 Unicode 数据选择的排序次序以外的其它 Unicode 排序次序。这会导致在使用与非 Unicode 数据相对的 Unicode 数据时，排序和比较操作返回不同的结果。

请参见

COLLATE

用于国际支持的排序规则选项

排序规则

Unicode 数据

使用 Unicode 数据


选择排序规则

在 Microsoft® SQL Server™ 2000 中，可指定单个排序规则名来控制所有三个排序规则特性：Unicode 排序次序、非 Unicode 代码页和非 Unicode 排序次序。SQL Server 2000 排序规则不允许对 Unicode 和非 Unicode 字符数据使用不同的比较和排序规则。有两组 SQL Server 2000 排序规则：Windows 排序规则和 SQL 排序规则。

Windows 排序规则

Windows 排序规则是为 SQL Server 定义的排序规则，用以支持 Microsoft Windows® 区域设置。通过为 SQL Server 指定 Windows 排序规则，并为计算机指定相关联的 Windows 区域设置，SQL Server 实例便与计算机上运行的应用程序使用相同的代码页及排序和比较规则。例如，SQL Server 的法语 Windows 排序规则与 Windows 法语区域设置的排序规则特性相匹配。

Windows 区域设置的数量比 SQL Server Windows 排序规则多。Windows 区域设置名基于语言和地域，如法语（加拿大）。不过，多种语言共享用于排序和比较字符的公用字母表和规则。例如，33 个 Windows 区域设置（包括所有葡萄牙语和英语 Windows 区域设置）使用 Latin1 代码页 (1252) 并遵循一组公用的字符排序和比较规则。基于 Latin1_General 代码页和排序规则的 SQL Server Windows 排序规则支持所有这 33 个 Windows 区域设置。另外，Windows 区域设置还指定 SQL Server Windows 排序规则不涉及的特性，如货币、日期和时间格式等。美国和英国这样的国家有不同的货币、日期和时间格式，因此它们需要不同的 Windows 排序规则。但它们排序和比较字符所使用的字母表和规则相同，所以不需要不同的 SQL Server 排序规则。

SQL 排序规则

SQL 排序规则是兼容性选项，用以匹配 SQL Server 早期版本所指定的代码页号和排序次序的公用组合特性。例如，为将 SQL Server 2000 SQL 排序规则映射到 SQL Server 早期版本所指定的排序规则，SQL Server 2000 SQL 排序规则 SQL_Latin1_General_CP1_CI_AS 与下列 SQL Server 7.0 版的默认规范相匹配：

  • ISO 代码页 1252。

  • 字典次序、不区分大小写的字符排序次序。

  • 通用 Unicode 排序规则。

SQL Server 2000 中的可用 SQL 排序规则与可在 SQL Server 早期版本中指定的所有组合并非都匹配。例如，SQL Server 2000 SQL 排序规则不支持非 Unicode 数据的区分大小写排序次序和 Unicode 数据的不区分大小写排序次序。在 SQL Server 2000 中不能明确指定的 SQL 早期排序规则被称为已废弃的 SQL 排序规则。

在 SQL Server 2000 中应主要使用 Windows 排序规则。仅当要与 SQL Server 早期版本的现有实例保持兼容时，或要在使用 SQL Server 早期版本的 SQL 排序规则开发的应用程序中维护兼容性时，才应使用 SQL 排序规则。

排序规则比较和排列规则

排序规则中所定义的大多数比较和排列规则由字典定义控制，而字典定义确定字母表或语言的正确字符序列。可控制的特性包括字符和 Unicode 数据的比较和排序是：

  • 基于字典规则，即定义语言或字母表中与排序规则相关的正确字符序列，还是基于表示不同字符的二进制位模式序列。

  • 区分大小写还是不区分大小写。例如，定义"a"与"A"是否相同。如果选择不区分大小写，比较操作将始终忽略大小写，因此将字符的大写与小写视为相同。如果选择区分大小写，大写和小写的相对排序序列将不确定，除非还指定了大写字母优先。大写字母优先仅影响排序操作，用于指定在排序序列中大写字母排在同一字符的小写字母前面。大写字母优先不影响比较操作，因此指定该选项时仍将"A"和"a"视为相同。只能在 SQL 排序规则中指定大写字母优先，而不能在 Windows 排序规则中指定。

  • 区分还是不区分重音字符（也称为扩展字符）。重音字符是带变音符的字符，如德语的元音变化 (ë) 或西班牙语的颚化符号 (~)。例如，区分重音将定义"a"和"ä"是否相同。

当选择排序规则时，可指定是否需要二进制行为，或指定字典排序是否区分大小写和重音：

  • 在二进制排序规则中，比较和排序操作严格基于字符的位模式。这是最快的选项。因为存储大写字符所使用的位模式不同于存储相应的小写字符所使用的位模式，而且重音字符的位模式与非重音字符的位模式也不相同，所以二进制排序次序始终区分大小写和重音。二进制排序规则还忽略为特定语言定义的字典序列。它们仅基于表示每个字符的相对位模式值对字符进行排序。虽然为拉丁字符（如"A"或"z"）定义的位模式使二进制排序输出正确的结果，但为某些代码页中的扩展字符定义的位模式可能不同于该语言与排序规则相关的字典所定义的排序序列。这会导致排序和比较结果有时与使用该语言的用户所期望的不同。

  • 如果不指定二进制排序规则，SQL Server 将使用选定排序规则的字典次序。字典次序表示不只是基于位模式对字符进行排序或比较。该排序规则将遵从相关语言关于正确字符序列的规则。例如，不区分大小写的排序次序必须使用字典规则来确定哪种大写和小写位模式相同。

    虽然代码页中的位模式通常可为使用该代码页的任何语言输出正确的比较和排序结果，但某些语言的规则可能需要不同于为少量字符的位模式生成的结果。例如，捷克语、匈牙利语和波兰语使用同一代码页 1250，该代码页专门用于斯拉夫语。然而，这些语言所使用的重音字符排序序列规则略有不同。

    如果不指定二进制排序，所有 SQL Server 操作将遵从用于排序和比较字符的字典规则。当使用字典次序时，可指定排序规则是否区分大小写和重音字符。

区分大小写不仅适用于数据，还适用于 SQL 标识符和密码。如果为 SQL Server 实例或数据库指定二进制或区分大小写的默认排序次序，则所有的对象引用都必须使用创建对象时所使用的大小写。例如，考察下表：

CREATE TABLE MyTable (PrimaryKey int PRIMARY KEY, CharColumn nchar(10))

如果在使用区分大小写或二进制排序次序的 SQL Server 实例或数据库上执行 CREATE TABLE 语句，所有的表引用都必须使用在 CREATE TABLE 语句中指定的大小写：

-- Object not found error because case is not correct:
SELECT * FROM MYTABLE
-- Invalid column name error because case is not correct
-- for the WHERE clause reference to the PrimaryKey column.
SELECT *
FROM MyTable
WHERE PRIMARYKEY = 123
-- Correct statement:
SELECT CharColumn
FROM MyTable
WHERE PrimaryKey = 123

请参见

用于国际支持的排序规则选项

指定排序规则

Unicode 数据

使用 Unicode 数据


指定排序规则

可在多个级别上指定 Microsoft® SQL Server™ 2000 排序规则，具体如下：

  • 当安装 SQL Server 实例时，可在安装过程中指定该实例的默认排序规则。实例的默认排序规则也成为这些系统数据库的默认排序规则：master、model、tempdb、msdb 和 Distribution。

  • 当创建数据库时，可使用 CREATE DATABASE 语句的 COLLATE 子句指定该数据库的默认排序规则。还可在创建数据库时使用 SQL Server 企业管理器指定排序规则。如果不指定排序规则，将为数据库指派 model 数据库的默认排序规则。model 数据库的默认排序规则与 SQL Server 实例的默认排序规则相同。

  • 当创建表时，可使用 CREATE TABLE 语句的 COLLATE 子句指定每个字符的排序规则。还可在创建表时使用 SQL Server 企业管理器指定排序规则。如果不指定排序规则，将为列指派数据库的默认排序规则。

    还可使用 COLLATE 子句中的 database_default 选项，指定临时表中的列使用连接的当前用户数据库（而不是 tempdb）的默认排序规则。

  • 当指定文字字符串时，可使用 COLLATE 子句指定排序规则。如果不指定排序规则，将为文字指派数据库的默认排序规则。

  • 在 SQL-DMO 中可使用"排序规则"属性指定实例、数据库和列的排序规则。有关更多信息，请参见排序规则属性。

  • 为存储过程或函数的参数、用户定义数据类型和变量指派数据库的默认排序规则：

标识符的排序规则取决于定义标识符时所在的级别。为实例级对象（如登录名和数据库名）的标识符指派实例的默认排序规则。为数据库对象（如表、视图和列名）的标识符指派数据库的默认排序规则。当连接上下文与一个数据库相关联时，可创建变量、GOTO 标签、临时存储过程和临时表，然后当连接上下文切换到另一个数据库时加以引用这些对象。由于这一点，变量、GOTO 标签和临时表的标识符使用实例的默认排序规则。

只能为 char、varchar、text、nchar、nvarchar 和 ntext 数据类型指定列或文字的排序规则。

排序规则一般由排序规则名标识。有两类名称：一类是 Windows 排序规则名称，用于匹配 Windows 区域设置的新排序规则；另一类是 SQL 排序规则名称，用于升级 SQL Server 早期版本时所产生的兼容模式排序规则。有关更多信息，请参见 Windows 排序规则名称和 SQL 排序规则名称。

指定排序规则名的特例是在安装过程中：

  • 不指定 Windows 排序规则的排序规则名，而是指定排序规则指示器，然后选择复选框以指定区分或不区分大小写或重音的二进制排序或字典排序。

  • 不指定 SQL 排序规则名称，而是基于更易于阅读的长显示名称选择排序规则。

可以执行系统函数 fn_helpcollations，检索 Windows 排序规则和 SQL 排序规则的有效排序规则名列表，例如：

SELECT *
FROM ::fn_helpcollations()

还可使用 SQL-DMO ListCollations 方法获得有效排序规则名的列表。有关更多信息，请参见 ListCollations 方法。

系统目录存储过程已得到增强，可报告有排序规则的所有 SQL Server 对象的排序规则。

SQL Server 只支持由基础操作系统支持的代码页。当执行依赖排序规则的操作时，被引用对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。这些操作可包括：

  • 指定 SQL Server 实例的默认排序规则。

  • 创建数据库时指定数据库的默认排序规则。

  • 还原数据库备份。Windows 必须支持数据库的默认排序规则所使用的代码页。

  • 附加数据库。Windows 必须支持数据库的默认排序规则所使用的代码页。

  • 创建表时指定列的排序规则。

  • 创建用户定义的数据类型时指定排序规则。

  • 声明字符串常量时指定排序规则。

如果指定的排序规则或被引用对象所使用的排序规则使用 Microsoft Windows® 操作系统不支持的代码页，SQL Server 将发出 2775 号错误：

"系统不支持代码页 codepagenumber。"

对该错误信息的响应取决于计算机上安装的 Windows 操作系统版本：

  • Microsoft Windows 2000 支持 SQL Server 排序规则所使用的所有代码页，因此不会产生该错误信息。

  • Microsoft Windows NT® 4.0 可能要求安装语言包以支持某些代码页。有关安装 Windows NT 语言包的更多信息，请参见 Windows NT 帮助。

  • Microsoft Windows 98 仅支持在一台计算机上使用一种代码页。必须选择与 Windows 98 使用相同代码页的 SQL Server 排序规则。

请参见

ALTER TABLE

用于国际支持的排序规则选项

排序规则

常量

CREATE DATABASE

CREATE TABLE

DECLARE @local_variable

table

使用 Unicode 数据


指定 SQL Server 实例的默认排序规则

在安装过程中定义 Microsoft® SQL Server™ 2000 实例的默认排序规则。如果选择最小安装或典型安装选项，安装程序将安装以下排序规则：

  • 如果将 SQL Server 6.5 版或 SQL Server 7.0 版的默认实例升级到 SQL Server 2000，或者安装的 SQL Server 2000 默认实例将与 SQL Server 6.5 版的默认实例进行版本交换，SQL Server 安装程序将继续使用现有 SQL Server 6.5 版或 7.0 版实例所使用的排序规则，包括已废弃的排序规则。

  • 在所有其它情况下，安装程序将选择 Windows 排序规则，以便在安装有 SQL Server 2000 实例的计算机上支持 Windows 区域设置。

说明 如果计算机使用的是美国英语区域设置，则安装程序不将实例的默认排序规则设置为 Windows 排序规则 Latin1_General_CI_AS。而是设置为 SQL 排序规则 SQL_Latin1_General_Cp1_CI_AS。这一点在以后的版本中可能会改变。

如果选择"自定义"安装选项，当显示"字符集/排序次序/Windows 排序规则"窗口时，安装程序将使用与最小和典型安装相同的逻辑来设置选定的排序规则。在以下情况中不应使用选定的排序规则：

  • 如果要在复制方案中包括该实例，则复制方案中包括的所有 SQL Server 实例（发布服务器、订阅服务器和分发服务器）应使用相同的代码页。应确保安装程序所选择的排序规则与复制方案中的其它 SQL Server 实例使用相同的代码页。

  • 如果实例必须支持的主要语言与安装实例的计算机所使用的 Windows 区域设置不同。

有关说明为 Windows 区域设置指定何种排序规则名称，请参见 Windows 排序规则名称。

在安装过程中，指派给 master、model、tempdb、msdb 和 Distribution 系统数据库的默认排序规则与为实例选择的默认排序规则相同。

请参见

用于国际支持的排序规则选项


混合排序规则环境

兼容性问题对使用多个排序规则存储数据的组织会有影响。大多数组织对所有的 Microsoft® SQL Server™ 2000 数据库使用相同的排序规则，从而消除了所有的排序规则兼容性问题。然而，有些组织存储的数据必须可由使用不同语言的用户查看，并且希望尽可能减少排序规则兼容性问题。

所有字符和 Unicode 对象（如列、变量和常量）都有排序规则。每当使用具有不同排序规则和代码页的对象时，都必须对查询进行编码以符合排序规则类型强制规则。当对使用运算符将多个具有不同排序规则的简单表达式组合在一起的复杂表达式进行编码时，所有排序规则必须可以隐性转换，或者可以使用 COLLATE 子句显式转换。有关排序规则强制顺序的更多信息，请参见排序规则的优先顺序。

如果没有在字符或 Unicode 表达式中指定排序规则，则默认排序规则可能因连接的当前数据库设置而异。例如，如果没有在字符或 Unicode 常量上指定 COLLATE 子句，则将给该常量指派当前数据库的默认排序规则。这意味着 Transact-SQL 语句的结果在不同数据库的上下文中执行时可能有不同的排序规则。

若设置复制，则复制网络（包括发布服务器、订阅服务器和分发服务器）中包括的所有数据库都必须使用相同的代码页。

大容量复制函数 BULK INSERT 和 bcp 命令提示实用工具支持列排序规则。有关更多信息，请参见在不同排序规则间复制数据。

尽可能减少排序规则问题

如果必须存储反映多种语言的字符数据，始终使用 Unicode nchar、nvarchar 和 ntext 数据类型（而不是 char、varchar、text 数据类型）可使排序规则兼容性问题减到最少。使用 Unicode 数据类型可消除代码页转换问题。

对减少排序规则兼容性问题的另一个建议是使站点标准化，使之区分或不区分大小写和重音字符。若始终选择对大小写和重音使用相同敏感性的排序规则，最终用户将在所有系统间体验到一致的行为。大多数 SQL Server 2000 站点选择不区分大小写但区分重音。大小写敏感性还适用于 SQL Server 的对象名；因此，若指定区分大小写的排序规则，则所有用户在查询数据库时必须指定正确的大小写。例如，若服务器区分大小写并创建一个名为 Employees 的表，则所有的查询都必须将该表引用为 Employees。未使用正确大小写的引用（如 EMPLOYEES 或 employees）将无效。

排序规则和 tempdb

每次启动 SQL Server 时都生成 tempdb 数据库，该数据库与 model 数据库的默认排序规则相同，后者通常与实例的默认排序规则相同。如果为创建的用户数据库指定的默认排序规则与 model 的排序规则不同，则该用户数据库与 tempdb 的默认排序规则也不同。所有的临时存储过程或临时表都创建并存储在 tempdb 中，这意味着临时表中的所有隐性列以及临时存储过程中的所有类型强制默认常量、变量和参数与永久表和永久存储过程中创建的对等对象使用不同的排序规则。

text 数据类型可能由此产生问题。例如，某个 SQL Server 2000 实例的默认排序规则是 Latin1_General_CS_AS，并且执行以下语句：

CREATE DATABASE TestDB COLLATE Estonian_CS_AS
USE TestDB
CREATE TABLE TestPermTab (PrimaryKey int PRIMARY KEY, TextCol text )

在该系统中，tempdb 数据库对代码页 1252 使用 Latin1_General_CS_AS 排序规则，TestDB 和 TestPermTab.TextCol 对代码页 1257 使用 Estonian_CS_AS 排序规则。如果接下来执行：

USE TestDB
GO
-- Create a temporary table with the same column declarations
-- as TestPermTab
CREATE TABLE #TestTempTab (PrimaryKey int PRIMARY KEY, TextCol text )
-- This statement gets an code page conversion not allowed error
-- because the temporary table is created in tempdb, which has a
-- different default collation than TestDB.
INSERT INTO #TestTempTab
         SELECT * FROM TestPermTab
GO

若要消除错误，可使用以下可选方法之一：

  • 在两个 TextCol 列中使用 Unicode 数据类型 ntext 而不是 text。

  • 指定临时表列使用用户数据库（而不是 tempdb）的默认排序规则。如果系统需要，这将使临时表得以在多个数据库中使用具有类似格式的表。
    CREATE TABLE #TestTempTab
   (PrimaryKey int PRIMARY KEY,
    TextCol text COLLATE database_default
   )
  • 指定 #TestTempTab 列的正确排序规则：
    CREATE TABLE #TestTempTab
   (PrimaryKey int PRIMARY KEY,
    TextCol text COLLATE Estonian_CS_AS
   )
BACKUP 和 RESTORE 中的排序规则

若还原数据库，RESTORE 将使用记录在备份文件中的源数据库的排序规则。还原的数据库与备份的原始数据库使用相同的排序规则。数据库内具有不同排序规则的个别对象仍保留其原来的排序规则。即使运行还原的实例与运行 BACKUP 的实例使用不同的默认排序规则，仍能还原数据库。

若目标服务器上已存在同名数据库，还原备份的唯一方法是在 RESTORE 语句中指定 REPLACE。若指定 REPLACE，现有的数据库将由备份文件中的数据库内容完全替换，并且还原数据库的排序规则将与备份文件中记录的排序规则相同。

若还原日志备份，目的数据库必须与源数据库的排序规则相同。

排序规则和文本列

若创建的含有 text 列的表所使用的代码页与数据库默认排序规则的代码页不同，则仅有两种方法可指定插入列的数据值或更新现有值。可以：

  • 指定 Unicode 常量。

  • 从另一个具有相同代码页的列中选择值。

假设数据库和表如下：

-- Create a database with a default of code page 1252.
CREATE DATABASE TestDB COLLATE Latin1_General_CS_AS
-- Create a table with a different code page, 1253.
CREATE TABLE TestTab
   (PrimaryKey int PRIMARY KEY,
    TextCol text COLLATE Greek_CS_AS
   )

-- This INSERT statement successfully inserts a Unicode string.
INSERT INTO TestTab VALUES (1, N'abc')
-- This INSERT statement successfully inserts data by selecting
-- from a similarly formatted table in another database that uses
-- uses the Greek 1253 code page as its default.
INSERT INTO TestTab
     SELECT * FROM GreekDatabase.dbo.TestTab


更改排序规则

可使用 ALTER TABLE 语句更改列的排序规则：

CREATE TABLE MyTable
  (PrimaryKey   int PRIMARY KEY,
   CharCol      varchar(10) COLLATE French_CI_AS NOT NULL
  )
GO
ALTER TABLE MyTable ALTER COLUMN CharCol
            varchar(10)COLLATE Latin1_General_CI_AS NOT NULL
GO

不能更改正由以下对象引用的列的排序规则：

  • 计算列。

  • 索引。

  • 自动生成或由 CREATE STATISTICS 语句生成的分发统计。

  • CHECK 约束。

  • FOREIGN KEY 约束。

还可在 ALTER DATABASE 上使用 COLLATE 子句来更改数据库的默认排序规则：

ALTER DATABASE MyDatabase COLLATE French_CI_AS

更改数据库的默认排序规则不会更改任何现有用户定义表中的列排序规则。可使用 ALTER TABLE 更改列的排序规则。在 ALTER DATABASE 语句上使用 COLLATE CLAUSE 可以：

  • 更改数据库的默认排序规则。新的默认排序规则适用于随后创建在数据库中的所有列、用户定义数据类型、变量和参数。在数据库中定义的对象上解析 SQL 语句中指定的对象标识符时，也使用新的默认排序规则。

  • 将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。

  • 将存储过程和用户定义函数的所有现有的 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。

  • 将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型，以及基于这些系统数据类型的所有用户定义数据类型更改为使用新的默认排序规则。

为列或数据库以外的任何其它对象指派了排序规则后，将不能更改排序规则，除非除去并重新创建对象。这一操作将十分复杂。若要更改 Microsoft® SQL Server™ 2000 实例的默认排序规则，必须：

  • 确保具有重新创建用户数据库及数据库中的所有对象所需的全部信息或脚本。

  • 使用工具（如大容量复制）导出所有数据。

  • 除去所有用户数据库。

  • 重建 master 数据库并指定新的排序规则。

  • 创建所有数据库及数据库中的所有对象。

  • 导入所有数据。

    说明 也可以不更改 SQL Server 2000 实例的默认排序规则，而为创建的每个新数据库指定默认排序规则。


SQL 索引

Microsoft® SQL Server™ 2000 索引是与表或视图相关联的结构，可加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构内，使 SQL Server 得以快速有效地找到与键值相关联的一行或多行。


表索引

Microsoft® SQL Server™ 2000 支持在表中任何列（包括计算列）上定义的索引。

如果一个表没有创建索引，则数据行不按任何特定的顺序存储。这种结构称为堆集。

SQL Server 索引的两种类型为：

  • 聚集

    聚集索引基于数据行的键值在表内排序和存储这些数据行。由于数据行按基于聚集索引键的排序次序存储，因此聚集索引对查找行很有效。每个表只能有一个聚集索引，因为数据行本身只能按一个顺序存储。数据行本身构成聚集索引的最低级别。

    只有当表包含聚集索引时，表内的数据行才按排序次序存储。如果表没有聚集索引，则其数据行按堆集方式存储。

  • 非聚集

    非聚集索引具有完全独立于数据行的结构。非聚集索引的最低行包含非聚集索引的键值，并且每个键值项都有指针指向包含该键值的数据行。数据行不按基于非聚集键的次序存储。

    在非聚集索引内，从索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页的存储方式是堆集还是聚集。对于堆集，行定位器是指向行的指针。对于有聚集索引的表，行定位器是聚集索引键。

只有在表上创建了聚集索引时，表内的行才按特定的顺序存储。这些行就基于聚集索引键按顺序存储。如果一个表只有非聚集索引，它的数据行将按无序的堆集方式存储。

索引可以是唯一的，这意味着不会有两行有相同的索引键值。另外，索引也可以不是唯一的，多个行可以共享同一键值。

有两种方法可以在 SQL Server 内定义索引。CREATE INDEX 语句创建并命名索引。CREATE TABLE 语句支持在创建索引时使用下列约束：

  • PRIMARY KEY 创建唯一索引来强制执行主键。

  • UNIQUE 创建唯一索引。

  • CLUSTERED 创建聚集索引。

  • NONCLUSTERED 创建非聚集索引。

当在 SQL Server 2000 上创建索引时，可指定是按升序还是降序存储键。

SQL Server 2000 支持在计算列上定义的索引，只要为列定义的表达式满足某些限制，如仅引用包含计算列的表中的列、具有确定性等。

填充因子是 SQL Server 索引的一个属性，它控制索引在创建时的填充密度。默认的填充因子通常能够提供较好的性能，但在某些情况下，更改填充因子可能会有益。如果打算对表执行许多更新和插入，则可在创建索引时使用小填充因子，以便为后面的键留出更多的空间。如果是不会更改的只读表，则可在创建索引时使用大填充因子，以减小索引的物理大小，这样可以降低 SQL Server 浏览索引时的磁盘读取次数。只有在创建索引时才能应用填充因子。随着键的插入和删除，索引最终将稳定在某个密度上。

索引不仅可以提高选择行的检索速度，通常还可以提高更新和删除的速度。这是因为 SQL Server 在更新或删除行时必须先找到该行。使用索引定位行提高了效率，这通常可以弥补更新索引所需的额外开销，除非表中有很多索引。

下例显示在表上创建索引的 Transact-SQL 语法。

USE pubs
GO
CREATE TABLE emp_sample
   (emp_id      int         PRIMARY KEY CLUSTERED,
   emp_name      char(50),
   emp_address   char(50),
   emp_title   char(25)      UNIQUE NONCLUSTERED )
GO
CREATE NONCLUSTERED INDEX sample_nonclust ON emp_sample(emp_name)
GO

对于具体什么样的索引集可优化性能这个问题，取决于系统中的查询混合。考察 emp_sample.emp_id 上的聚集索引。如果大多数引用 emp_sample 的查询在它们的 WHERE 子句中有关于 emp_id 的等式或范围比较，聚集索引将发挥很好的作用。如果大多数查询的 WHERE 子句引用的是 emp_name 而非 emp_id，则通过将 emp_name 上的索引置为聚集索引可提高性能。

许多应用程序的查询混合都很复杂，单靠询问用户和程序员很难进行评估。SQL Server 2000 提供索引优化向导，帮助您在数据库中设计索引。对具有复杂访问模式的大型架构，最简单的设计索引的方法是使用索引优化向导。

可以为索引优化向导提供一组 SQL 语句。这组语句可以是为反映系统中典型的语句混合而生成的语句脚本。不过，这组语句通常是 SQL 事件探查器跟踪记录，记录在系统典型负载期间系统上实际处理的 SQL 语句。索引优化向导分析工作负荷和数据库，然后提出可提高工作负荷性能的索引配置建议。可以选择替换现有的索引配置，或者保留现有的索引配置并实现新的索引，以提高执行速度慢的查询子集的性能。

请参见

索引

创建索引的并行操作


视图索引

Microsoft® SQL Server™ 2000 支持在视图上定义索引。视图有时也称为虚拟表，这是由于视图返回的结果集与包含行和列的表具有相同的常规格式，并且在 SQL 语句中可以相同的方式引用视图和表。非索引视图的结果集不永久存储在数据库中。每当查询引用视图时，SQL Server 便动态地将生成视图结果集所需的逻辑合并到由基表中的数据生成完整的查询结果集所需的逻辑中。生成视图结果的过程称为视图具体化。有关更多信息，请参见视图解析。

对于涉及对大量的行进行复杂处理的非索引视图，为引用视图的每个查询动态生成结果集的开销会很大。这类视图包括聚集大量数据或联接许多行的视图。若经常在查询中引用这类视图，可通过在视图上创建唯一聚集索引来提高性能。在视图上创建唯一聚集索引时将执行该视图，并且结果集在数据库中的存储方式与带聚集索引的表的存储方式相同。有关用于存储聚集索引的结构的更多信息，请参见聚集索引。

在视图上创建索引的另一个好处是：查询优化器开始在查询中使用视图索引，而不是直接在 FROM 子句中命令视图。这样一来，可从索引视图检索数据而无需重新编码，由此带来的高效率也使现有查询获益。

在视图上创建聚集索引可存储创建索引时生成的结果集。索引视图还自动反映自创建索引后对基表数据所做的更改，这一点与在基表上创建的索引相同。当对基表中的数据进行更改时，索引视图中存储的数据也反映数据更改。视图的聚集索引必须唯一，从而提高了 SQL Server 在索引中查找受任何数据更改影响的行的效率。

必须设置特定的 SET 选项后才能在视图上创建索引。只有当执行语句的连接具有相同的选项设置时，查询优化器才考虑对后续 SQL 语句使用索引。有关更多信息，请参见影响结果的 SET 选项。

与基表上的索引相比，对索引视图的维护可能更复杂。只有当提高的视图结果检索速度超过了修改所需的开销时，才应在视图上创建索引。这样的视图通常包括映射在相对静态的数据上、处理多行以及由许多查询引用的视图。

在视图上创建的第一个索引必须是唯一聚集索引。在创建唯一聚集索引后，可创建其它非聚集索引。视图上的索引命名规则与表上的索引命名规则相同。唯一区别是表名由视图名替换。

若除去视图，视图上的所有索引也将被除去。若除去聚集索引，视图上的所有非聚集索引也将被除去。可分别除去非聚集索引。除去视图上的聚集索引将删除存储的结果集，并且优化器将重新像处理标准视图那样处理视图。

尽管 CREATE UNIQUE CLUSTERED INDEX 语句仅指定组成聚集索引键的列，但视图的完整结果集将存储在数据库中。与基表上的聚集索引一样，聚集索引的 B 树结构仅包含键列，但数据行包含视图结果集中的所有列。

请参见

CREATE INDEX

创建索引视图

在视图上使用索引


索引键的最大值

Microsoft® SQL Server™ 2000 保留 900 字节的最大索引键值限制，但更改了 CREATE INDEX 检查指定索引键是否超出允许的 900 字节最大键值时所使用的算法。新的 CREATE INDEX 算法与用于 CREATE TABLE 的行大小算法类似。

Microsoft SQL Server 7.0 版和更早的版本在检查 CREATE INDEX 语句所指定的键是否超出 900 字节时始终使用可变列的最大大小，例如：

CREATE TABLE TestTable
    (PrimaryKey      int PRIMARY KEY,
     VarCharCol1     varchar(500),
     VarCharCol2     varchar(500)
    )
-- This statement fails because the maximum sizes
-- of the two columns exceeds 900 bytes:
CREATE INDEX TestIdx ON TestTable(VarCharCol1, VarCharCol2)

在 SQL Server 2000 中，上面的 CREATE INDEX 语句将成功执行但出现警告消息，除非一个或更多的数据行生成的键值超出 900 字节。

SQL Server 2000 CREATE INDEX 语句使用以下算法：

  • 若所有固定列的大小加上 CREATE INDEX 语句指定的所有可变列的最大大小小于 900 字节，CREATE INDEX 语句将成功执行且不出现警告或错误。

  • 若所有固定列的大小加上所有可变列的最大大小超过 900 字节，但是所有固定列的大小加上所有可变列的最小大小小于 900 字节，CREATE INDEX 语句将成功执行但出现一条警告，指出如果后续 INSERT 或 UPDATE 语句指定的值所生成的键值大于 900 字节，该语句将失败。若表中现有数据行的值所生成的键值大于 900 字节，CREATE INDEX 语句将失败。若后续 INSERT 或 UPDATE 语句指定的数据值所生成的键值大于 900 字节，该语句将失败。

  • 若所有固定列的大小加上 CREATE INDEX 语句指定的所有可变列的最小大小大于 900 字节，CREATE INDEX 语句将失败。

下表显示创建某类索引的结果，这类索引的键只包含固定列或可变长度列。

索引列 |  |  |  |  |
固定数据列的大小 | 可变长度列的最大大小 | 索引键列长度总和的最大值* | 是否创建索引 | 消息 | 由于索引键值过大导致 INSERT 或 UPDATE 运行时错误
> 900 字节 | 无 | 不相关 | 否 | 错误 | 索引没有生成错误。
<=900 字节 | 无 | 不相关 | 是 | 无 | 否
无 | <=900 字节 | 不相关 | 是 | 无 | 否
无 | > 900 字节 | > 900 字节 | 否 | 错误 | 索引没有生成错误。
无 | > 900 字节 | <=900 字节 | 是 | 警告 | 仅当所有索引列的当前长度之和大于 900 字节。

*在执行 CREATE INDEX 语句时，表中的任何行都不能有总长度超过 900 字节的索引键值。

下表显示创建某类索引的结果，这类索引的键包含由固定列和可变长度列组成的混合类型。

索引列 |  |  |  |  |
可变长度列的最小大小 + 固定数据列的大小 | 可变长度列的最大大小 + 固定数据列的大小 | 索引键列长度总和的最大值* | 是否创建索引 | 消息 | 由于索引键值过大导致 INSERT 或 UPDATE 运行时错误
> 900 字节 | 不相关 | 不相关 | 否 | 错误 | 索引没有生成错误。
<=900 字节 | <=900 字节 | 不相关 | 是 | 无 | 否。
<=900 字节 | > 900 字节 | <=900 字节 | 是 | 警告 | 仅当所有索引列的当前长度之和大于 900 字节。
<=900 字节 | > 900 字节 | > 900 字节 | 否 | 错误 | 索引没有生成错误。

*在执行 CREATE INDEX 语句时，表中的任何行都不能有总长度超过 900 字节的索引键值。

请参见

CREATE INDEX


属性管理

Microsoft® SQL Server™ 2000 引入了扩展属性，用户可在各种数据库对象上定义这些属性。这些扩展属性可用于存储与数据库对象有关的应用程序或站点特有的信息。因为属性存储在数据库中，所有读取属性的应用程序都能以相同的方式评估对象。这有助于在系统中的所有程序对数据的处理方式上强制一致性。

每个扩展属性都有用户定义的名称和值。扩展属性的值是可包含最多 7500 字节数据的 sql_variant。个别数据库对象可以有多个扩展属性。

扩展属性由三个系统存储过程进行管理：sp_addextendedproperty、sp_updateextendedproperty 和 sp_dropextendedproperty。可使用系统函数 FN_LISTEXTENDEDPROPERTY 读取现有扩展属性的值。

在定义扩展属性方面没有规则和标准。当设计数据库时，数据库设计器设置用于指定属性名和内容的规则，此后必须对访问数据库的应用程序进行编码，使其遵守那些规则或规范。

请参见

在数据库对象上使用扩展属性

fn_listextendedproperty

sp_addextendedproperty

sp_dropextendedproperty

sp_updateextendedproperty


全文目录和索引

Microsoft® SQL Server™ 2000 全文索引为在字符串数据中进行复杂的词搜索提供有效支持。全文索引存储关于重要词和这些词在特定列中的位置的信息。全文查询利用这些信息，可快速搜索包含具体某个词或一组词的行。

全文索引包含在全文目录中。每个数据库可以包含一个或多个全文目录。一个目录不能属于多个数据库，而每个目录可以包含一个或多个表的全文索引。一个表只能有一个全文索引，因此每个有全文索引的表只属于一个全文目录。

全文目录和索引不存储在它们所属的数据库中。目录和索引由 Microsoft 搜索服务分开管理。

全文索引必须在基表上定义，而不能在视图、系统表或临时表上定义。 全文索引的定义包括：

  • 能唯一标识表中各行的列（主键或候选键），而且不允许 NULL 值。

  • 索引所覆盖的一个或多个字符串列。

全文索引由键值填充。每个键的项提供与该键相关联的重要词（干扰词或终止词除外）、它们所在的列和它们在列中的位置等有关信息。

格式化文本字符串（如 Microsoft® Word™ 文档文件或 HTML 文件）不能存储在字符串或 Unicode 列中，因为这些文件中的许多字节包含不构成有效字符的数据结构。数据库应用程序可能仍需要访问这些数据并对其应用全文检索。因为 image 列并不要求每一字节都构成一个有效字符，所以许多站点将这类数据存储在 image 列中。SQL Server 2000 引入了对存储在 image 列中的这些类型的数据执行全文检索的能力。SQL Server 2000 提供筛选，可从 Microsoft Office™ 文件（.doc、.xls 和 .ppt 文件）、文本文件（.txt 文件）及 HTML 文件（.htm 文件）中析取文本化数据。设计表时除包括保存数据的 image 列外，还需包括绑定列来保存存储在 image 列中的数据格式的文件扩展名。可以创建引用 image 列和绑定列的全文索引，以便在存储于 image 列中的文本化信息上启用全文检索。SQL Server 2000 全文检索引擎使用绑定列中的文件扩展名信息，选择从列中析取文本化数据的合适的筛选。

全文索引是用于执行两个 Transact-SQL 谓词的组件，以便根据全文检索条件对行进行测试：

  • CONTAINS

  • FREETEXT

Transact-SQL 还包含两个返回符合全文检索条件的行集的函数：

  • CONTAINSTABLE

  • FREETEXTTABLE

SQL Server 在内部将搜索条件发送给 Microsoft 搜索服务。Microsoft 搜索服务查找所有符合全文检索条件的键并将它们返回给 SQL Server。SQL Server 随后使用键的列表来确定表中要处理的行。

请参见

全文索引

全文查询构架

对 SQL Server 数据进行全文查询

Microsoft 搜索服务


登录、用户、角色和组

登录、用户、角色和组是 Microsoft® SQL Server™ 2000 安全机制的基础。连接到 SQL Server 的用户必须使用特定的登录标识符 (ID) 标识自己。因此，用户只能查看经授权可以查看的表和视图，并且只能执行经授权可以执行的存储过程和管理功能。这一安全系统基于用来标识用户的 ID。

请参见

安全管理


登录

用户在连接到 Microsoft® SQL Server® 2000 时与登录标识符 (ID) 相关联。登录 ID 是控制访问 SQL Server 系统的帐户。若不先指定有效登录 ID，用户就不能连接到 SQL Server。sysadmin 固定服务器角色成员定义登录 ID。

sp_grantlogin 使用 Windows 身份验证授予 Microsoft Windows® 网络帐户（组帐户或用户帐户）作为连接到 SQL Server 的 SQL Server 登录。sp_addlogin 则使用 SQL Server 身份验证为 SQL Server 连接定义登录帐户。

请参见

登录

sp_addlogin

sp_grantlogin


用户

用户标识符 (ID) 在数据库内标识用户。在数据库内，对象的全部权限和所有权由用户帐户控制。用户帐户与数据库相关。sales 数据库中的 xyz 用户帐户不同于 inventory 数据库中的 xyz 用户帐户，即使这两个帐户有相同的 ID。用户 ID 由 db_owner 固定数据库角色成员定义。

登录 ID 本身并不提供访问数据库对象的用户权限。一个登录 ID 必须与每个数据库中的一个用户 ID 相关联后，用这个登录 ID 连接的人才能访问数据库中的对象。如果登录 ID 没有与数据库中的任何用户 ID 显式关联，就与 guest 用户 ID 相关联。如果数据库没有 guest 用户帐户，则该登录就不能访问该数据库，除非它已与一个有效的用户帐户相关联。

用户 ID 在定义时便与一个登录 ID 相关联。例如，db_owner 角色成员可以使 Microsoft® Windows® 2000 登录 NETDOMAIN\Joe 与 sales 数据库中的用户 ID abc 和 employee 数据库中的用户 ID def 相关联。默认情况下，登录 ID 和用户 ID 相同。

下例说明给 Windows 2000 帐户授予对数据库的访问权限，并使该登录与数据库中的用户相关联：

USE master
GO
sp_grantlogin 'NETDOMAIN\Sue'
GO
sp_defaultdb @loginame = 'NETDOMAIN\Sue', defdb = 'sales'
GO
USE sales
GO
sp_grantdbaccess 'NETDOMAIN\Sue', 'Sue'
GO

在 sp_grantlogin 语句中，授予 Windows 2000 用户 NETDOMAIN\Sue 访问 Microsoft SQL Server™ 2000 的权限。sp_defaultdb 语句使 sales 数据库成为该用户的默认数据库。sp_grantdbaccess 语句给 NETDOMAIN\Sue 登录提供了访问 sales 数据库的权限，并将其在 sales 内的用户 ID 设置成 Sue。

下例说明定义 SQL Server 登录，指派默认数据库，并使该登录与数据库中的用户相关联：

USE master
GO
sp_addlogin @loginame = 'TempWorker', @password = 'fff', defdb = 'sales'
GO
USE sales
GO
sp_grantdbaccess 'TempWorker'
GO

sp_addlogin 语句定义了一个供各种临时工作人员使用的 SQL Server 登录。该语句还将 sales 数据库指定为此登录的默认数据库。sp_grantdbaccess 语句给 TempWorker 登录授予了对 sales 数据库的访问权限，由于没有指定用户名，默认为 TempWorker。

数据库中的用户由用户 ID 而非登录 ID 标识。例如，在每个数据库中，sa 是映射到特殊用户帐户 dbo（数据库所有者）的登录帐户。所有与安全有关的 Transact-SQL 语句都将该用户 ID 作为 security_name 参数使用。如果 sysadmin 固定服务器角色成员和 db_owner 固定数据库角色成员对系统进行设置，使每个用户的登录 ID 和用户 ID 都相同，就不容易混淆权限的管理和理解，但不必非这样做。

在 SQL Server 数据库中，guest 帐户是特殊的用户帐户。如果用户使用 USE database 语句访问的数据库中没有与此用户关联的帐户，此用户就与 guest 用户相关联。

请参见

guest 用户

sp_addlogin

sp_defaultdb

sp_grantdbaccess

sp_grantlogin


角色

角色是一个强大的工具，使您得以将用户集中到一个单元中，然后对该单元应用权限。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。可以建立一个角色来代表单位中一类工作人员所执行的工作，然后给这个角色授予适当的权限。当工作人员开始工作时，只须将他们添加为该角色成员，当他们离开工作时，将他们从该角色中删除。而不必在每个人接受或离开工作时，反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。

Microsoft® Windows NT® 和 Windows® 2000 组的使用方式与角色很相似。有关更多信息，请参见组。

如果根据工作职能定义了一系列角色，并给每个角色指派了适合这项工作的权限，则很容易在数据库中管理这些权限。之后，不用管理各个用户的权限，而只须在角色之间移动用户即可。如果工作职能发生改变，则只须更改一次角色的权限，并使更改自动应用于角色的所有成员，操作比较容易。

在 Microsoft® SQL Server™ 2000 和 SQL Server 7.0 版中，用户可属于多个角色。

以下脚本说明登录、用户和角色的添加，并为角色授予权限。

USE master
GO
sp_grantlogin 'NETDOMAIN\John'
GO
sp_defaultdb 'NETDOMAIN\John', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Sarah'
GO
sp_defaultdb 'NETDOMAIN\Sarah', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Betty'
GO
sp_defaultdb 'NETDOMAIN\Betty', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Ralph'
GO
sp_defaultdb 'NETDOMAIN\Ralph', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Diane'
GO
sp_defaultdb 'NETDOMAIN\Diane', 'courses'
GO
USE courses
GO
sp_grantdbaccess 'NETDOMAIN\John'
GO
sp_grantdbaccess 'NETDOMAIN\Sarah'
GO
sp_grantdbaccess 'NETDOMAIN\Betty'
GO
sp_grantdbaccess 'NETDOMAIN\Ralph'
GO
sp_grantdbaccess 'NETDOMAIN\Diane'
GO
sp_addrole 'Professor'
GO
sp_addrole 'Student'
GO
sp_addrolemember 'Professor', 'NETDOMAIN\John'
GO
sp_addrolemember 'Professor', 'NETDOMAIN\Sarah'
GO
sp_addrolemember 'Professor', 'NETDOMAIN\Diane'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Betty'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Ralph'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Diane'
GO
GRANT SELECT ON StudentGradeView TO Student
GO
GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor
GO

该脚本给 John 和 Sarah 教授提供了更新学生成绩的权限，而学生 Betty 和 Ralph 只能选择他们自己的成绩。Diane 因同时教两个班，所以添加到两个角色中。ProfessorGradeView 视图应将教授限制在自己班学生的行上，而 StudentGradeView 应限制学生只能选择自己的成绩。

SQL Server 2000 和 SQL Server 7.0 版在安装过程中定义几个固定角色。可以在这些角色中添加用户以获得相关的管理权限。下面是服务器范围内的角色。

固定服务器角色 | 描述
sysadmin | 可以在 SQL Server 中执行任何活动。
serveradmin | 可以设置服务器范围的配置选项，关闭服务器。
setupadmin | 可以管理链接服务器和启动过程。
securityadmin | 可以管理登录和 CREATE DATABASE 权限，还可以读取错误日志和更改密码。
processadmin | 可以管理在 SQL Server 中运行的进程。
dbcreator | 可以创建、更改和除去数据库。
diskadmin | 可以管理磁盘文件。
bulkadmin | 可以执行 BULK INSERT 语句。

可以从 sp_helpsrvrole 获得固定服务器角色的列表，可以从 sp_srvrolepermission 获得每个角色的特定权限。

每个数据库都有一系列固定数据库角色。虽然每个数据库中都存在名称相同的角色，但各个角色的作用域只是在特定的数据库内。例如，如果 Database1 和 Database2 中都有叫 UserX 的用户 ID，将 Database1 中的 UserX 添加到 Database1 的 db_owner 固定数据库角色中，对 Database2 中的 UserX 是否是 Database2 的 db_owner 角色成员没有任何影响。

固定数据库角色 | 描述
db_owner | 在数据库中有全部权限。
db_accessadmin | 可以添加或删除用户 ID。
db_securityadmin | 可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin | 可以发出 ALL DDL，但不能发出 GRANT、REVOKE 或 DENY 语句。
db_backupoperator | 可以发出 DBCC、CHECKPOINT 和 BACKUP 语句。
db_datareader | 可以选择数据库内任何用户表中的所有数据。
db_datawriter | 可以更改数据库内任何用户表中的所有数据。
db_denydatareader | 不能选择数据库内任何用户表中的任何数据。
db_denydatawriter | 不能更改数据库内任何用户表中的任何数据。

可以从 sp_helpdbfixedrole 获得固定数据库角色的列表，可以从 sp_dbfixedrolepermission 获得每个角色的特定权限。

数据库中的每个用户都属于 public 数据库角色。如果想让数据库中的每个用户都能有某个特定的权限，则将该权限指派给 public 角色。如果没有给用户专门授予对某个对象的权限，他们就使用指派给 public 角色的权限。

请参见

将成员添加到预定义角色中

sp_dbfixedrolepermission

sp_helpdbfixedrole

sp_helpsrvrole

sp_srvrolepermission


登录、用户、角色和组

SQL Server 安装帮助

组

Microsoft® SQL Server™ 2000 或 SQL Server 7.0 版中没有组。然而，可以在整个 Microsoft Windows NT® 或 Microsoft Windows® 2000 组的级别上管理 SQL Server 安全性。

如果使用 sp_grantlogin 并给 Windows NT 或 Windows 2000 组指定了名称，该组中的所有成员都可以使用 Windows 身份验证连接到 SQL Server。

在授予该组建立连接后，可以使用 sp_grantdbaccess 将该组中的成员与他们需要访问的每个数据库中的一个用户标识符 (ID) 相关联。可以使用两种方法：

  • 将该组与数据库中的一个用户 ID 相关联。

    在这种情况下，该组的所有成员都将在引用数据库时与那个用户 ID 相关联。

  • 将 Windows NT 或 Windows 2000 组中的个别用户帐户与数据库中的某个用户 ID 相关联。

    这个用户帐户在引用数据库时将与那个用户 ID 相关联。组中没有任何其它帐户会与那个用户 ID 相关联，它们将指派给与该组登录相关联的用户 ID。

假设有一个 Windows NT 或 Windows 2000 组 NETDOMAIN\Managers，它包含三个成员：NETDOMAIN\Sue、NETDOMAIN\Fred 和 NETDOMAIN\Mary。下列 Transact-SQL 语句将 Windows NT 或 Windows 2000 组同时作为登录和用户添加到 sales 数据库中，然后将 NETDOMAIN\Sue 与一个特定的用户 ID 相关联：

USE master
GO
-- Authorize all members of NETDOMAIN\Managers to connect
-- using Windows Authentication.
sp_grantlogin 'NETDOMAIN\Managers'
GO
-- Make sales the default database for all members.
sp_dbdefault 'NETDOMAIN\Managers', 'sales'
USE sales
GO
-- Grant all members of the group access to sales
-- No user ID is specified, so SQL Server creates
-- one named 'NETDOMAIN\Managers'
sp_grantdbaccess 'NETDOMAIN\Managers'
GO
-- Grant a specific member of the group access to
-- sales with a specific user.
sp_grantdbaccess 'NETDOMAIN\Sue', 'Sue'

现在可以给用户 NETDOMAIN\Managers 或用户 Sue 授予权限：

USE sales
GO
GRANT SELECT ON SalesTable TO NETDOMAIN\Managers
GO
GRANT UPDATE ON SalesTable to NETDOMAIN\Sue

适用于 NETDOMAIN\Sue 的权限是对用户 NETDOMAIN\Managers 或用户 Sue 授予、废除或拒绝的权限的并集。任何 DENY 权限替代任何相应的 GRANT 权限。

除非 Windows NT 或 Windows 2000 帐户已与特定的用户相关联，否则组成员受限于指派给该组所关联用户的权限。不过，如果组成员创建了对象，对象的所有者名称就是它们的 Windows NT 或 Windows 2000 帐户名，而不是组名。考察 NETDOMAIN\Manager 帐户。如果 NETDOMAIN\Fred 连接到 sales 数据库，他就能看见所有已给 NETDOMAIN\Managers 授予了 SELECT 权限的表。如果 NETDOMAIN\Fred 执行下列语句，表就创建成 sales.NETDOMAIN\Fred.TableX，而不是 sales.NETDOMAIN\Managers.TableX：

CREATE TableX (cola INT PRIMARY KEY, colb CHARACTER(200))

请参见

sp_grantdbaccess

sp_grantlogin


所有者和权限

Microsoft® SQL Server™ 2000 中的每个对象都由用户所有。所有者由数据库用户标识符 (ID) 标识。当第一次创建对象时，可以访问该对象的唯一用户 ID 是所有者或创建者的用户 ID。对于任何其他想访问该对象的用户，所有者必须给该用户授予权限。如果所有者只想让特定的用户访问该对象，可以只给这些特定的用户授予权限。

对于表和视图，所有者可以授予 INSERT、UPDATE、DELETE、SELECT 和 REFERENCES 权限，或授予 ALL 权限。用户必须对表有 INSERT、UPDATE、DELETE 或 SELECT 权限，才能在 INSERT、UPDATE、DELETE 或 SELECT 语句中指定该表。REFERENCES 权限使得另一个表的所有者可以对您表中的列应用他们表中的 REFERENCES FOREIGN KEY 约束。下例说明给一个名为 Teachers 的组授予 SELECT 权限以及给另一个开发用户授予 REFERENCES 权限：

GRANT SELECT ON MyTable TO Teachers
GRANT REFERENCES (PrimaryKeyCol) ON MyTable to DevUser1

存储过程的所有者可以授予该存储过程的 EXECUTE 权限。如果基表的所有者不想让用户直接访问基表，则可以对引用基表的视图或存储过程授予权限，而不对基表本身授予任何权限。这是 SQL Server 机制的基础，以确保用户看不到没有授权他们访问的数据。

还可以给用户授予语句权限。CREATE TABLE 和 CREATE VIEW 等语句只能由某些用户（此处为 dbo 用户）执行。如果 dbo 用户想让另一个用户能够创建表或视图，则必须给那个用户授予执行这些语句的权限。


会话上下文信息

Microsoft® SQL Server™ 2000 引入了编程能力，可将最多 128 字节的二进制信息与当前会话或连接关联起来。会话上下文信息使应用程序得以设置二进制值，以便在同一会话或连接上运行的多个批处理、存储过程、触发器或用户定义函数中加以引用。可使用新的 SET CONTEXT_INFO 语句设置会话上下文，然后从 master.dbo.sysprocesses 表的新 context_info 列中检索上下文字符串。

会话上下文信息不同于 Transact-SQL 变量，后者的作用域局限于当前的批处理、存储过程、触发器或函数。而会话上下文信息可用于存储每个用户或应用程序当前状态所特有的信息，这些信息随后可用于控制 Transact-SQL 语句中的逻辑。

SET CONTEXT_INFO 语句支持：

  • 最多 128 字节的常量，可以是二进制或是可隐性转换为二进制的数据类型。

  • varbinary(128) 或 binary(128) 变量的名称。

不能在用户定义函数中指定 SET CONTEXT_INFO。因为用来存储信息的 sysprocesses 表不允许空值，所以不能给 SET CONTEXT_INFO 提供空值。

若要获得当前连接的当前会话上下文，请从 SQL Server 进程 ID (SPID) 与连接 SPID 相等的 master.dbo.sysprocesses 行中选择 context_info 列。当前连接的 SPID 由 @@SPID 函数返回：

SELECT context_info
FROM master.dbo.sysprocesses
WHERE spid = @@SPID

如果还没有对当前连接执行 SET CONTEXT_INFO，则 context_info 列中的值将初始化为 128 字节的二进制零。如果已执行 SET CONTEXT_INFO，context_info 列将包含由当前连接最后执行的 SET CONTEXT_INFO 设置的值。context_info 列是 varbinary(128) 列。

以下是使用会话上下文信息的示例：

-- Set context information at start.
SET CONTEXT_INFO 0x1256698456
GO
-- Perform several non-related batches.
sp_who
GO
USE Northwind
GO
SELECT CustomerID
FROM Customers
WHERE City = 'London'
GO
-- Select context information set several batches earlier.
SELECT context_info
FROM master.dbo.sysprocesses
WHERE spid = @@spid
GO

SET CONTEXT_INFO 不支持引用常量或变量名以外的表达式，如函数。如果需要将上下文信息设置为函数调用结果，必须先在 binary 或 varbinary 变量中放置函数调用结果：

DECLARE @BinVar varbinary(128)
SET @BinVar = CAST( REPLICATE( 0x20, 128 ) AS varbinary(128) )
SET CONTEXT_INFO @BinVar

请参见

SET CONTEXT_INFO

sysprocesses


关系数据库组件

Microsoft® SQL Server™ 2000 数据库组件是基于结构化查询语言 (SQL) 的可伸缩的关系数据库，集成了对 Internet 应用程序的可扩展标记语言 (XML) 支持。下列术语描述了 SQL Server 2000 数据库组件构架的基本组成：

数据库

数据库与数据文件相似，同为存储数据的场所。与数据文件一样，数据库并不直接向用户显示信息；用户运行应用程序访问数据库中的数据，数据库将这些数据以用户能够理解的格式呈现给用户。

数据库系统比数据文件的功能强大，因为数据库中的数据组织程度更高。在设计良好的数据库中，没有用户或应用程序必须同时更新的重复数据块。相关的数据分在一个结构或一条记录中，同时，还可以定义这些结构和记录之间的关系。

处理数据文件时，必须根据每个数据文件的特定结构对应用程序进行编码。数据库则不同，它包含一个目录，应用程序可以利用该目录来确定数据的组织结构。通用数据库应用程序能够利用该目录动态地向用户提供来自不同数据库的数据，而不受特定数据格式约束。

数据库通常有两个主要部分：一个是保存物理数据库的文件，一个是应用程序用于访问数据的数据库管理系统 (DBMS) 软件。DBMS 负责维护数据库的结构，包括：

  • 维护数据库内数据间的关系。

  • 确保数据存储正确，定义数据间关系的规则未被违反。

  • 在系统崩溃的情况下，按照已知的一致性程度恢复所有数据。

关系数据库

组织数据库数据的方法有很多种，而关系数据库是最为高效的一种。关系数据库系统是数学集合理论在如何高效组织数据这一问题上的应用。在关系数据库中，数据被收集在表（在关系型理论中称为关系）中。

表描述了对企业具有重要意义的某类对象。比如，一个公司的数据库中可能会有有关员工的表、有关客户的表，以及有关库存的表。每个表都由列和行（关系型理论中称为属性和元组）组成。每一列描述表代表的对象的某个属性。比如，Employee 表通常包含名字、姓氏、员工 ID 号、部门、工资级别以及职位等属性列。每一行表示表所代表的对象的一个实例。比如，Employee 表中的某一行代表员工 ID 号为 12345 的员工。

在将数据组织成表的过程中，用户通常会发现有许多不同定义表的方法。关系数据库理论定义了一个称为规范化的进程，可确保定义的表集能够有效地组织数据。

可伸缩性

SQL Server 2000 支持许多用户的同时访问。一个 SQL Server 2000 实例通常包括组成一系列数据库的文件和一套 DBMS 软件。在不同计算机上运行的应用程序使用 SQL Server 2000 通讯组件，通过网络将命令传送到 SQL Server 2000 实例。当应用程序与 SQL Server 2000 实例连接后，就可以引用该实例中用户被授权访问的任何数据库。通讯组件还允许 SQL Server 2000 实例与在同一台计算机上运行的应用程序之间进行通讯。用户可以在一台计算机上同时运行多个 SQL Server 2000 实例。

SQL Server 2000 被设计为可支持最大的 Web 站点或企业数据处理系统上的数据流通。在大型多处理器服务器上运行的 SQL Server 2000 支持成千上万的用户同时连接。SQL Server 表中的数据可在多台服务器间分区，这样，多台多处理器计算机就可彼此协作，支持超大型系统的数据库处理需求。这些数据库服务器组称为联合体。

尽管 SQL Server 2000 被设计为用作通过网络连接的成千上万并发用户的数据存储引擎，它仍可作为一个独立的数据库，像应用程序一样直接在同一台计算机上运行。SQL Server 2000 卓越的可伸缩性和便于使用的诸多功能使其能够在单个计算机上高效运行，既不占用过多的系统资源，也不需要专门的用户来管理。这些功能还使 SQL Server 2000 得以动态地获取支持上千用户所需的资源，同时将数据库的管理和调节工作减到最少。SQL Server 2000 关系数据库引擎动态调节自身以获取或释放适当的计算机资源，以支持在任何特定时间访问 SQL Server 2000 实例时不断变化的用户负荷之需。SQL Server 2000 关系数据库引擎的强大功能可以避免因某个用户读取或修改其他用户当前使用的数据而引起的逻辑问题。

结构化查询语言

若要处理数据库中的数据，必须使用一套由 DBMS 软件定义的命令和语句（语言）。处理关系数据库的语言有很多种，其中最常用的是 SQL。美国国家标准化组织 (ANSI) 和国际标准化组织 (ISO) 定义软件标准，包括 SQL 语言的标准。SQL Server 2000 支持 SQL-92 入门级 (Entry Level)，即由 ANSI 和 ISO 在 1992 年公布的 SQL 标准。Microsoft SQL Server 支持的 SQL 方言称为 Transact-SQL (T-SQL)。T-SQL 是 Microsoft SQL Server 应用程序使用的主要语言。

可扩展标记语言

XML 是新出现的 Internet 数据标准。XML 是一套可用于定义超文本文档结构的标记。XML 文档可由显示 Web 页的最重要语言——超文本标记语言 (HTML) 轻松处理。

尽管大多数 SQL 语句以关系或表格格式结果集的形式返回结果，但是 SQL Server 2000 数据库组件仍支持以 XML 文档形式返回结果的 FOR XML 子句。SQL Server 2000 还支持来自 Internet 和 Intranet应用程序的 XPath 查询。可将 XML 文档添加到 SQL Server 数据库中，并可使用 OPENXML 子句以关系结果集的形式显示 XML 文档中的数据。


数据库应用程序和服务器

Microsoft® SQL Server™ 2000 被设计为可作为下列任一数据库有效地工作：

  • 服务器上的中央数据库，可由许多用户通过网络连接共享。共享用户数的范围可从一个工作组中的若干人，到大型企业的上千名员工，甚至到成百上千万的 Web 用户。

  • 只服务于同一桌面上运行的应用程序提供服务的桌面数据库。
服务器数据库系统

基于服务器而构造的系统，使得多个用户可共享一台中央计算机（称为服务器）上的数据库。用户通过应用程序访问服务器：

  • 在多层系统（如 Windows® DNA）中，客户端应用程序逻辑在两个或多个位置上运行：
    • 瘦客户端在用户的本地计算机上运行，其主要作用是向用户显示结果。

    • 业务逻辑位于服务器上运行的服务器应用程序中。瘦客户端请求此服务器应用程序提供功能，此服务器应用程序本身是一个多线程应用程序，可由多个并发用户一起使用。此服务器应用程序负责打开与数据库服务器的连接。此服务器应用程序可作为数据库在同一服务器上运行，也可跨网络连接到另一台作为数据库服务器的服务器上。在复杂系统中，可在几个互相连接的服务器应用程序中或服务器应用程序的多个层次中实现业务逻辑。

      下面是一个典型的 Internet 应用方案。例如，一个多线程服务器应用程序可以在一台 Microsoft® Internet Information 服务 (IIS) 服务器上运行，并为在 Internet 或 Intranet 上运行的成千上万台瘦客户端提供服务。此服务器应用程序使用连接池与一个或更多的 SQL Server 2000 实例进行通讯。SQL Server 2000 实例可与 IIS 位于同一台计算机上，也可分别位于网络中的不同服务器上。

  • 在双层客户端/服务器系统中，用户在其本地计算机上运行称为客户端应用程序的应用程序，而客户端应用程序通过网络连接到运行于服务器计算机上的 SQL Server 2000 实例。客户端应用程序既运行业务逻辑，也运行向用户显示输出的代码，所以有时也称为胖客户端。
服务器数据库系统的优点

在中央位置存储和管理数据有几个优点：

  • 每个数据项都存储在中央位置，所有用户都可以在这个位置使用它们。

    各个客户端上不单独存储数据项复本，从而消除了因用户不得不确保使用的信息相同所带来的麻烦。系统不需要确保使用当前值更新所有数据复本，因为中央位置仅有一个复本。

  • 可以在服务器上一次性定义业务和安全规则，并对所有的用户平等执行。

    可以在数据库内通过使用约束、存储过程和触发器来强制执行规则。还可在服务器应用程序中执行规则，因为这些应用程序也是许多瘦客户端访问的中央资源。

  • 关系数据库服务器只返回应用程序所需要的数据，从而优化了网络流量。

    例如，如果一个使用文件服务器的应用程序想得到一份美国俄勒冈州 (OR) 销售代表的名单，它必须检索整个雇员文件。如果该应用程序使用关系数据库服务器，将发出下面的命令：

    SELECT first_name, last_name
FROM employees
WHERE emp_title = 'Sales Representative'
  AND emp_state = 'OR'

    关系数据库只返回俄勒冈州销售代表的姓名，而不返回所有雇员的全部信息。

  • 最大程度地降低硬件成本。

    由于数据不是存储在每个客户端上，客户端不必耗费磁盘空间来存储数据。客户端无需在本地增加管理数据的功能，同时，服务器不需将处理能力耗费在显示数据上。

    可以配置服务器以优化检索数据所需的磁盘 I/O 容量，配置客户端以优化从服务器检索的数据的格式和显示。

    可以将服务器存储在一个相对安全的位置，并配备如不间断电源供应系统这样的设备，这比完全保护每个客户端更经济。

  • 维护任务（例如备份和恢复数据）得到简化，因为这些任务都可以集中在中央服务器上执行。
SQL Server 2000 作为数据库服务器的优点

Microsoft SQL Server 2000 能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到 SQL Server 2000 实例。SQL Server 2000 为这些环境提供了全面的保护，具有防止问题发生的安全措施，例如，可以防止多个用户试图同时更新相同的数据。SQL Server 2000 还在多个用户之间有效地分配可用资源，比如内存、网络带宽和磁盘 I/O。

超大型 Internet 站点可将其数据分开存放在多台服务器上，从而使处理负荷分散到多台计算机上，使站点能为成千上万的并发用户提供服务。

可以在一台计算机上运行多个 SQL Server 2000 实例。例如，一个为其它许多组织提供数据库服务的组织可为每个客户组织单独运行一个 SQL Server 2000 实例，而全部实例可集中在一台计算机上。这样，既隔开了每个客户组织的数据，同时又使服务组织只需管理一台服务器计算机从而减少了费用。

SQL Server 2000 应用程序可在装有 SQL Server 2000 的计算机上运行。该应用程序通过 Windows 进程间通讯 (IPC) 组件（例如共享内存）而非通过网络连接到 SQL Server 2000。这使 SQL Server 2000 得以应用于应用程序必须在本地存储数据的小型系统中。

下图显示了一个作为大型 Web 站点和传统客户端/服务器系统的数据库服务器的 SQL Server 2000 实例。

大型 Web 站点和企业级数据处理系统通常会生成大量的数据库处理，超出了一台计算机的支持能力。在这些大型系统中，数据库服务由组成数据库服务层的一组数据库服务器提供。SQL Server 2000 不支持采用平衡负荷的聚集形式建立数据库服务层，但支持跨自主服务器组分存数据的机制。尽管每个服务器需分开管理，但组内的各个服务器可共同分担数据库处理负荷。共享同一工作负荷的一组自主服务器称为服务器联合体。有关更多信息，请参见设计联合数据库服务器。

桌面数据库系统

SQL Server 2000 不仅能作为一个功能强大的数据库服务器有效地工作，同样的数据库引擎也用在需要在客户端本地存储独立数据库的应用程序中。SQL Server 2000 可以动态地将自身配置成能有效地使用客户端桌面或膝上型电脑中的可用资源，而不需要为每个客户端专设一个数据库管理员。应用程序供应商还可以将 SQL Server 2000 作为应用程序的数据存储组件嵌入应用程序中。

当客户端使用本地 SQL Server 2000 数据库时，应用程序连接到本地数据库引擎实例，其方式与跨网络连接到远端服务器上运行的数据库引擎非常相似。二者的主要差别在于：本地连接通过本地 IPC（如共享内存），而远端连接必须通过网络。

下图显示在桌面数据库系统中使用 SQL Server 2000。


登录

若要连接到 Microsoft® SQL Server™ 2000 实例，只需给应用程序提供下面中的两条信息：

  • 运行 SQL Server 实例的计算机所在的网络名称。

  • 实例名（可选，只有在连接到命名实例时才需要）。

  • 登录标识符 (ID)。

登录 ID 是帐户标识符，用来控制对任何 SQL Server 2000 系统的访问权限。SQL Server 2000 只有在首先验证了指定的登录 ID 有效后，才完成连接。这种登录验证称为身份验证。

在登录属性中，有一个是默认数据库。当一个登录连接到 SQL Server 时，这个默认数据库就变成该连接的当前数据库，除非该连接请求指定另一个数据库作为当前数据库。

登录 ID 仅能使您连接到 SQL Server 实例。特定数据库内的权限由用户帐户控制。数据库管理员将您的登录帐户映射到您有权访问的任何数据库中的用户帐户。有关更多信息，请参见登录、用户、角色和组。

验证登录

SQL Server 实例必须验证每个连接请求所提供的登录 ID 是否具有访问该实例的权限。这一过程称为身份验证。SQL Server 2000 使用两类身份验证：Windows 身份验证和 SQL Server 身份验证。每一种身份验证都有不同类别的登录 ID。

Windows 身份验证

SQL Server 2000 sysadmin 固定服务器角色成员必须首先向 SQL Server 2000 指定所有允许连接到 SQL Server 2000 的 Microsoft Windows NT® 或 Microsoft Windows® 2000 帐户或组。当使用 Windows 身份验证时，在连接到 SQL Server 2000 时不必指定登录 ID 或密码。用户对 SQL Server 2000 的访问权限由 Windows NT 或 Windows 2000 帐户或组控制，当登录到客户端上的 Windows 操作系统时需接受身份验证。

当连接到 SQL Server 2000 时，SQL Server 2000 客户端软件向 SQL Server 2000 请求 Windows 信任连接。直到客户端使用有效的 Windows 帐户成功登录后，Windows 才打开信任连接。信任连接的属性包括打开连接的客户端的 Windows NT 和 Windows 2000 组及用户帐户。SQL Server 2000 从信任连接属性中得到用户的帐户信息，并将它们与定义为有效 SQL Server 2000 登录的 Windows 帐户相匹配。如果 SQL Server 2000 找到匹配的项，则接受这个连接。当使用 Windows 2000 身份验证连接到 SQL Server 2000 时，用户标识即是 Windows NT 或 Windows 2000 组或用户帐户。

Microsoft Windows 98 操作系统不支持服务器端的信任连接 API。SQL Server 在 Windows 98 上运行时不支持 Windows 身份验证。用户在连接时必须提供 SQL Server 登录帐户。当 SQL Server 在 Windows NT 或 Windows 2000 上运行时，Windows 95 和 Windows98 客户端可以使用 Windows 2000 身份验证与其连接。

SQL Server 身份验证

sysadmin 固定服务器角色成员首先向 SQL Server 2000 指定所有有效的 SQL Server 2000 登录帐户和密码。这些登录帐户和密码与用户的 Microsoft Windows 帐户或网络帐户无关。当连接到 SQL Server 2000 时，用户必须提供 SQL Server 2000 登录帐户和密码。系统将通过用户的 SQL Server 2000 登录帐户在 SQL Server 2000 中标识用户。

SQL Server 身份验证模式

当 SQL Server 2000 在 Windows NT 或 Windows 2000 上运行时，sysadmin 固定服务器角色成员可以指定下面两种身份验证模式之一：

  • Windows 身份验证模式

    只进行 Windows 身份验证。用户不能指定 SQL Server 2000 登录 ID。这是 SQL Server 2000 的默认身份验证模式。不能为在 Windows 98 上运行的 SQL Server 实例指定 Windows 身份验证模式，因为此操作系统不支持 Windows 身份验证。

  • 混合模式

    如果用户在登录时提供了 SQL Server 2000 登录 ID，则系统将使用 SQL Server 身份验证对其进行验证。如果没有提供 SQL Server 2000 登录 ID 或请求 Windows 身份验证，则使用 Windows 身份验证对其进行身份验证。

这些模式在安装过程中指定或使用 SQL Server 企业管理器指定。

登录委托

如果使用 Windows 身份验证登录到运行在 Windows 2000 上的 SQL Server 2000 实例，并且计算机启用了 Kerberos 支持，则 SQL Server 2000 可将 Windows 登录凭据传递给其它 SQL Server 实例。两个实例间的凭据委托有时称为模拟，尤其是在两个 SQL Server 实例运行在同一台计算机上时。

例如，如果实例 A 和实例 B 运行在两台使用 Windows 2000 的计算机上，那么您可以连接到实例 A 并执行一个分布式查询来引用实例 B 中的表。当实例 A 连接到实例 B 检索所需数据时，实例 A 可以使用您的 Windows 帐户凭据进行连接。实例 B 对您的特定帐户是可视的，并可验证您访问所请求数据的个别权限。

没有委托时，管理员必须指定实例 A 用于连接到实例 B（或任何其它实例）的登录。使用该登录时不考虑哪个用户在实例 A 上执行分布式查询，并阻止实例 B 了解执行查询的实际用户。实例 B 的管理员不能针对来自实例 A 的个别用户定义权限，他们必须为实例 A 使用的登录帐户定义一个全局权限集。管理员也不能审核哪些特定用户在实例 B 中执行了操作。在 Windows 2000 上，在 Windows 身份验证中使用委托可使管理员对用户权限有更多的控制，并使个别用户的操作对审核员更透明。

请参见

安全管理

安全帐户委托


客户端组件

客户端不直接访问 Microsoft® SQL Server™ 2000，而是使用为访问 SQL Server 中的数据而编写的应用程序。这些应用程序可包括 SQL Server 2000 附带的实用工具、可访问 SQL Server 2000 的第三方应用程序、由编程人员在 SQL Server 2000 站点或 Web 页上开发的内部应用程序。也可通过 COM、Microsoft ActiveX® 或 Windows® DNA 组件访问 SQL Server 2000。

SQL Server 2000 支持两类主要的应用程序：

  • 关系数据库应用程序，这类应用程序将 Transact-SQL 语句发送给数据库引擎，并以关系结果集的形式返回结果。

  • Internet 应用程序，这类应用程序将 Transact-SQL 语句或 XPath 查询发送给数据库引擎，并以 XML 文档的形式返回结果。
关系数据库 API

通过数据库应用程序接口 (API) 编写用于访问 SQL Server 2000 的关系数据库应用程序。数据库 API 包括以下两部分：

  • 传递给数据库的语言语句。

    关系 SQL Server 2000 应用程序使用的语言是 Transact-SQL。Transact-SQL 支持所有的 SQL-92 入门级 (Entry Level) SQL 语句和很多附加的 SQL-92 功能。它还支持对 SQL-92 的ODBC 扩展和对 Transact-SQL 的其它专用扩展。

  • 一组用于向数据库发送语言语句并处理由数据库返回的结果的函数或面向对象的接口与方法。
本机 API 支持

本机 API 支持是指将 API 函数调用直接映射到送往服务器的网络协议。没有到另一个 API 的中间转换。SQL Server 2000 为两类主要的数据库 API 提供本机支持：

  • OLE DB

    SQL Server 2000 包含一个本机 OLE DB 提供程序。该提供程序支持用 OLE DB 编写的应用程序或其它使用 OLE DB 的 API（例如 ActiveX 数据对象 (ADO)）。通过本机提供程序，SQL Server 2000 还支持使用 OLE DB 的对象或组件，例如 ActiveX、ADO 或 Windows DNA 应用程序。

  • ODBC

    SQL Server 2000 包含一个本机 ODBC 驱动程序。该驱动程序支持用 ODBC 编写的应用程序或组件，或其它使用 ODBC 的 API（例如：DAO、RDO 和 Microsoft 基础类 (MFC) 数据库类）。

一个支持非本机 API 的示例是：一个数据库没有 OLE DB 提供程序，但有 ODBC 驱动程序。一个 OLE DB 应用程序可以此 OLE DB 提供程序，通过 ODBC 驱动程序使 ODBC 连接数据库。该提供程序将来自此应用程序的 OLE DB API 函数调用映射到发往 ODBC 驱动程序的 ODBC 函数调用。

其它 SQL Server API 支持

SQL Server 2000 还支持：

  • DB-Library

    DB-Library 是 SQL Server 2000 和 Microsoft SQL Server 专用的 API。SQL Server 2000 支持用 C 语言编写的 DB-Library 应用程序。DB-Library 的功能没有超出它在 Microsoft SQL Server 6.5 版中的功能。在早期版本的 Microsoft SQL Server 基础上开发的现有 DB-Library 应用程序可以在 SQL Server 2000 上运行，但 DB-Library 应用程序不能使用 SQL Server 2000 和 SQL Server 7.0 版中引入的很多功能。

  • 嵌入式 SQL

    SQL Server 2000 包含一个用于嵌入式 SQL API 的 C 语言预编译器。嵌入式 SQL 应用程序使用 DB-Library DLL 访问 SQL Server 2000。

XML 访问

Internet 应用程序检索 XML 文档而非关系结果集形式的结果。这些应用程序执行 XPath 查询，或执行使用 FOR XML 子句指定返回 XML 文档形式的结果的 Transact-SQL 语句。如果在指向 SQL Server 2000 实例的 Microsoft Internet Information 服务器 (IIS) 上定义了一个虚拟根，IIS 应用程序可通过三种机制执行 XPath 查询或 Transact-SQL 语句：

  • 执行引用虚拟根并包含 XPath 查询或带有 FOR XML 子句的 Transact-SQL 语句的统一资源定位器 (URL)。

  • 使用 ADO API 对含有 FOR XML 子句的 Transact-SQL 语句执行 XPath 查询。

  • 使用 OLE DB API 对含有 FOR XML 子句的 Transact-SQL 语句执行 XPath 查询。
客户端通讯

用于 SQL Server 2000 的 Microsoft OLE DB 提供程序、SQL Server 2000 ODBC 驱动程序和 DB-Library 每一个都作为一个 DLL 实现，并通过一个称为客户端 Net-Library 的组件与 SQL Server 2000 通讯。

请参见

应用程序开发构架

生成 SQL Server 应用程序概述


通讯组件

Microsoft® SQL Server™ 2000 支持几种在客户端应用程序和服务器之间通讯的方法。如果应用程序与 SQL Server 2000 实例在同一台计算机上，则使用 Windows 进程间通讯 (IPC) 组件，例如本地命名管道或共享内存进行通讯。如果应用程序在另外一台客户机上，则使用网络 IPC 与 SQL Server 进行通讯。

IPC 有两个组件：

  • 应用程序编程接口 (API)

    API 定义一组软件用以向 IPC 发送请求并从 IPC 检索结果的函数。

  • 协议

    协议定义任意两个通过 IPC 通讯的组件之间传输信息的格式。如果是网络 IPC，协议定义两台使用 IPC 的计算机之间以数据包格式传输信息。

有些网络 API 可以用于多个协议。例如，命名管道 API 和 Microsoft Win32® RPC API 都可以用于多个协议。还有一些网络 API（如 Banyan VINES API）则只能用于一个协议。

当 SQL Server 2000 客户端通讯组件连接到 SQL Server 2000 时，不需要或只需要很少的管理。尽管实际的通讯组件实施比 SQL Server 早期版本复杂得多，但 SQL Server 2000 用户连接到 SQL Server 2000 实例时可避免这一复杂过程。SQL Server 2000 客户端软件能够动态地确定与 SQL Server 2000 实例通讯所需的网络地址。客户端软件所需要的全部信息就是：运行 SQL Server 2000 实例的计算机的网络名，若连接到命名实例则还需实例名。SQL Server 2000 用户几乎不需要使用客户端网络实用工具管理客户端通讯组件。

系统区域网络

SQL Server 2000 企业版引入了对使用虚拟接口构架 (VIA) 生成的系统区域网络 (SAN) 协议的支持。SAN 是一种用于互连服务器或服务器群集的高速、高度可靠的网络。一个多层的分布式系统在服务器之间产生的网络流量可达到非常高的水平。在这样的系统中，只有当消息传输足够快，可以使服务器花费在处理消息和等待答复的时间减到最小时，才有可能获得性能收益。与局域网 (LAN) 或广域网 (WAN) 相比，SAN 通过降低 CPU 负荷和消息滞后时间，使消息传递流量达到很高的水平。另外，SAN 比 LAN 或 WAN 更可靠，并以服务器组或服务器群集的方式实现，因此各服务器彼此离得很近（如位于同一计算机房内）。

Compaq®、Intel®、Microsoft 和其它公司已将虚拟接口构架 (VIA) 定义为一个普通的 SAN 定义，使得可以实现许多可能的硬件版本。虚拟接口构架允许 VIA 提供商使用标准组件，以低成本实现灵活的、可伸缩的和可靠的消息传递组件。VIA SAN 可以支持对大型 Web 服务器的大量消息传递要求。

虚拟接口构架定义了一个 API 和一个协议。此 API 称为 VIA API，而此协议称为 VIA 协议。

SAN 很适合与 SQL Server 2000 一起用于下列用途：

  • 构成业务服务层的应用程序服务器可以使用 SAN 实现与数据服务层的高速通讯。这在应用程序服务器和数据库服务器位于同一物理位置时实现。

  • SQL Server 2000 服务器可以使用 SAN 提高分布式查询和分布式事务的性能，以及在位于同一位置的服务器之间进行数据复制的性能。对于用于实现运行 SQL Server 的计算机联合体的分布式视图，SAN 可以提高支持这类视图所需的分布式查询的性能。

SQL Server 2000 支持 ServerNet II 和 Giganet VIA SAN 版本。因为 SAN 用于支持服务器之间的高通讯带宽，SQL Server 2000 只支持 Windows NT® Server、Windows 2000 Data Center、Windows 2000 Advanced Server 和 Windows 2000 操作系统上的 VIA Net-Library。


客户端和服务器 Net-Library

Microsoft® SQL Server™ 2000 通过称为客户端 Net-Library 的组件将用于 SQL Server 2000 的 OLE DB 提供程序、SQL Server 2000 ODBC 驱动程序和 DB-Library DLL 同使用不同进程间通讯 (IPC) 组件进行通讯的详细信息隔离开。服务器 Net-Library 也为数据库引擎执行同样的功能。

下列组件按下面的顺序管理 SQL Server 2000 与其客户端之间的通讯：

  1. 客户端应用程序调用 OLE DB、ODBC、DB-Library 或嵌入式 SQL API。这将使 OLE DB 提供程序、ODBC 驱动程序或 DB-Library DLL用于 SQL Server 通讯。

  2. OLE DB 提供程序、ODBC 驱动程序或 DB-Library DLL 调用客户端 Net-Library。客户端 Net-Library 调用 IPC API。

  3. 通过基础 IPC 将客户端对 IPC API 的调用传输给服务器 Net-Library。如果是本地 IPC，将使用 Windows 操作 IPC（例如共享内存或本地命名管道）传输调用。如果是网络 IPC，客户端的网络协议栈将通过网络与服务器上的网络协议栈通讯。

  4. 服务器 Net-Library 将来自客户端的请求传递给 SQL Server 2000 实例。

SQL Server 2000 按相反的顺序答复客户端。

下图显示当 SQL Server 应用程序在装有 SQL Server 实例的同一台计算机上运行时的通讯路径。

这是在 SQL Server 应用程序通过 LAN 或 WAN 连接到另一台计算机上的 SQL Server 2000 实例时的简化通讯路径图示。虽然图中显示了使用特定 Net-Library 的用于 SQL Server 2000 的 OLE DB 提供程序、SQL Server ODBC 驱动程序和DB-Library DLL，但对这些组件连接这些 Net-Library 没有任何限制。这些提供程序、驱动程序和 DB-Library 每个都可以使用任何的 SQL Server Net-Library。

SQL Server 2000 将 Net-Library 分为主 Net-Library 和次 Net-Library。用于 SQL Server 2000 的 OLE DB 提供程序、SQL Server 2000 ODBC 驱动程序、DB-Library DLL 和数据库引擎只能直接与以下两个主 Net-Library 通信：

  • 默认情况下，应用程序与同一计算机上的 SQL Server 2000 实例之间的本地连接使用共享内存主 Net-Library。该路径见上面的图示。

  • 计算机间连接通过超级套接字主 Net-Library 通讯。超级套接字 Net-Library 有两条通讯路径：
    • 若选择 TCP/IP 套接字连接或 NWLINK IPX/SPX 连接，超级套接字 Net-Library 直接为应用程序和 SQL Server 2000 实例间的通讯调用 Windows 套接字 2 API。

    • 如果选择命名管道、虚拟接口构架 (VIA) SAN、多协议、AppleTalk 或 Banyan VINES 连接，则超级套接字 Net-Library 的子组件（称为 Net-Library 路由器）将为选择的协议装载次 Net-Library，并将所有的 Net-Library 调用路由到该 Net-Library。

下图更详细地显示了运行 SQL Server 2000 客户端组件的计算机和运行 SQL Server 2000 实例的计算机之间的网络连接，通过客户端和服务器 Net-Library 通讯的路径。

服务器超级套接字 Net-Library 作为 Ssnetlib.dll 实现，而客户端超级套接字 Net-Library 作为 Dbnetlib.dll 实现。

下表显示 Net-Library 如何与 IPC API 及用于连接的协议相关。

网络实用工具中指定的协议 | 使用的客户端 Net-Library | 使用的服务器 Net-Library | Net-Library 调用的 IPC API | 支持 IPC API 的协议
TCP/IP 套接字 | Dbnetlib.dll | Ssnetlib.dll | Windows 套接字 2 | TCP/IP
命名管道 | Dbnetlib.dll 路由至 Dbnmpntw.dll | Ssnetlib.dll 路由至 Ssnmpn70.dll（仅限于 Microsoft Windows NT® 和 Windows® 2000） | Windows 命名管道 | 文件系统（本地） TCP/IP NetBEUI NWLink
NWLink IPX/SPX | Dbnetlib.dll | Ssnetlib.dll | Windows 套接字 2 | NWLink
VIA ServerNet II SAN | Dbnetlib.dll 路由至 Dbmssnet.dll（仅限于 Microsoft Windows NT 和 Windows 2000） | Ssnetlib.dll 路由至 Dbmssnet.dll（仅限于 Microsoft Windows NT 和 Windows 2000） | 虚拟接口构架 (VIA) | 虚拟接口构架 (VIA)
VIA GigaNet SAN | Dbnetlib.dll 路由至 Dbmsgnet.dll（仅限于 Microsoft Windows NT 和 Windows 2000） | Ssnetlib.dll 路由至 Dbmsgnet.dll（仅限于 Microsoft Windows NT 和 Windows 2000） | 虚拟接口构架 (VIA) | 虚拟接口构架 (VIA)
多协议 | Dbnetlib.dll 路由至 Dbmsrpcn.dll | Ssnetlib.dll 路由至 Ssmsrpc.dll（仅限于默认实例） | Windows RPC | 文件系统（本地） TCP/IP NetBEUI NWLink
AppleTalk | Dbnetlib.dll 路由至 Dbmsadsn.dll | Ssnetlib.dll 路由至 Ssmsad70.dll（仅限于默认实例） | AppleTalk ADSP | AppleTalk
Banyan Vines | Dbnetlib.dll 路由至 Dbmsvinn.dll | Ssnetlib.dll 路由至 Ssmsvi70.dll（仅限于默认实例） | Banyan VINES SPP | Banyan VINES

在 Microsoft Windows® 98 上运行的 SQL Server 2000 实例不支持服务器命名管道和 Banyan VINES Net-Library，因为 Windows 98 操作系统不支持这些 API 的服务器部分。SQL Server 2000 在 Windows 98 上支持这些 Net-Library 的客户端部分；因此，在 Windows 98 上运行的应用程序可使用 Net-Library 连接到 Microsoft Windows NT 或 Microsoft Windows 2000 上的 SQL Server 实例。在 Microsoft Windows 98 上运行的应用程序也可使用这些 Net-Library 建立连接。

AppleTalk Net-Library 不在运行 Windows 95 或 Windows 98 的计算机上运行。

VIA 网络旨在使位于同一数据中心的服务器之间实现高水平的消息传递流量，比如在一个作为一台或多台 Internet Information 服务应用程序服务器实现的 Web 站点内，其中的每台服务器连接到一台或多台运行 SQL Server 的数据库服务器。VIA 网络并不用于连接个别的工作站。客户端和服务器 SQL Server VIA Net-Library 都只受 Windows NT Server、Windows NT Advanced Server、Windows 2000 Server、Windows 2000 Advanced Server 和 Windows 2000 Data Center 的支持。

SQL Server 2000 的命名实例仅支持命名管道、TCP/IP 套接字、NWLink IPX/SPX 和共享内存 Net-Library。命名实例不支持多协议、AppleTalk 或 Banyan VINES Net-Library。为了保持与 SQL Server 早期版本的兼容性，默认实例支持所有的服务器 Net-Library。

一些 Net-Library 只支持一种类型的协议栈。例如，AppleTalk Net-Library 需要 AppleTalk 协议栈。其它的 Net-Library，如命名管道和多协议 Net-Library 可支持多个协议栈。

Microsoft SQL Server Net-Library 已针对 Microsoft 协议栈做了大量的测试，并得到这些协议栈的支持。如果其它供应商的协议栈完全支持 Microsoft SQL Server Net-Library 所使用的 API，这些协议栈也应该有效。

使用命名管道或多协议 Net-Library 将应用程序连接到同一台计算机上的 SQL Server 实例时，如果这台计算机没有协议栈，IPC API 将由文件系统实现。


控制 Net-Library 和通讯地址

安装 Microsoft® SQL Server™ 2000 之后，即可使用客户端网络实用工具定义客户端 Net-Library 的行为，使用服务器网络实用工具定义服务器 Net-Library 的行为。

每个 SQL Server 2000 实例都可以同时监听服务器 Net-Library 的任何组合。每个数据库引擎可执行文件集都有一套服务器 Net-Library。这些服务器 Net-Library 安装在：C:\Program Files\Microsoft SQL Server\MSSQL$n，其中 n 是与此数据库引擎可执行文件集相关联的数字。

所有的服务器 Net-Library 都在 SQL Server 安装的服务器部分安装，但有些 Net-Library 可能是非活动的。运行安装程序的人员可选择哪些 Net-Library 组合对正在安装的实例是活动的。下表显示在 Microsoft Windows NT®、Microsoft Windows® 2000 和 Microsoft Windows 98 操作系统中，由 SQL Server 安装程序激活的默认服务器 Net-Library。

Windows NT 和 Windows 2000 | Windows 98
TCP/IP 套接字 | TCP/IP 套接字
共享内存 | 共享内存
命名管道 |

禁用和启用 Net-Library

安装后，用户可为使用服务器网络实用工具的数据库计算机上的每个 SQL Server 实例分别启用和禁用服务器 Net-Library。当禁止特定实例使用某个服务器 Net-Library 时，该实例的数据库引擎将不装载此服务器 Net-Library，也不接受使用此 Net-Library 的连接。但此服务器 Net-Library 仍装在机器上，可为其它共享同一可执行文件集的实例启用。有关更多信息，请参见 SQL Server 网络实用工具。

在运行 SQL Server 2000 客户端组件的任何一台计算机上总是装有一个客户端 Net-Library DLL 集。此客户端 Net-Library DLL 安装在 C:\Windows\System32 或 C:\Windows\System 目录中。安装 SQL Server 2000 客户端实用工具时，将安装所有这些客户端 Net-Library。可使用客户端网络实用工具启用和禁用各种客户端 Net-Library。当一个客户端 Net-Library 被禁用时，尽管它仍装在机器上，但不用于任何连接。可以：

  • 指定对于所有连接（使用服务器别名的连接除外），按照怎样的顺序使用客户端 Net-Library。

  • 启用或禁用特定的客户端 Net-Library。

  • 作为兼容性选项，定义服务器的别名，以确定在连接到 SQL Server 7.0 版或更早的版本时使用的特定 Net-Library 和连接参数。

有关更多信息，请参见配置客户端 Net-Library。

连接 SQL Server 2000

为使客户端能够连接运行 SQL Server 2000 的服务器，客户端必须使用一个与服务器当前正在监听的其中一个服务器 Net-Library 相匹配的客户端 Net-Library。而且，客户端和服务器都必须运行一个协议栈，以支持用于连接的 Net-Library 所调用的网络 API。例如，如果客户端试图使用客户端多协议 Net-Library，且服务器正在监听服务器多协议 Net-Library，但是服务器使用 TCP/IP 协议运行，而客户端计算机只使用 IPX/SPX 协议栈运行，那么客户端将无法连接到服务器。客户端和服务器必须使用相同的 Net-Library 并运行相同的协议栈。

计算机上的每个 SQL Server 实例必须监听不同的网络地址以便应用程序能连接到特定的实例。SQL Server 2000 的默认实例监听与 SQL Server 早期版本相同的默认网络地址，以使现有的客户端计算机能继续连接到默认实例。下表显示 SQL Server 2000 实例监听的默认网络地址。

Net-Library | 默认实例网络地址 | 命名实例网络地址
TCP/IP 套接字 | TCP 端口 1433 | MSSQL$instancename 服务第一次启动时将动态选择 TCP 端口。
命名管道 | \\computername\pipe\sql\query | \\computername\pipe\MSSQL$instancename\sql\query
NWLink IPX/SPX | 端口 33854 | 33854 后每个实例的第一个可用端口。
VIA ServerNetII SAN | VIA Port 0:1433 | VIA Port 0:1433
VIA Giganet SAN | VIA Port 0:1433 | VIA Port 0:1433

VIA 服务器 Net-Library 指派给默认实例和命名实例同一默认地址。系统管理员必须使用服务器网络实用工具给计算机上的每一实例分配唯一的端口地址。

可使用 SQL Server 2000 服务器网络实用工具为客户端连接查找每个 SQL Server 实例正在监听的特定网络地址集。

当 SQL Server 2000 客户端 Net-Library 连接到 SQL Server 2000 实例时，仅需要运行该实例的计算机所在的网络名和该实例名。当应用程序请求连接远端计算机时，Dbnetlib.dll 将打开到连接中所指定的计算机网络名上的 UDP 端口 1434 的连接。所有运行 SQL Server 2000 实例的计算机都监听此端口。当一个客户端 Dbnetlib.dll 连接到该端口时，服务器将返回一个监听服务器上运行的所有实例的数据包。对于每个实例，该数据包报告该实例正在监听的服务器 Net-Library 和网络地址。应用程序计算机上的 Dbnetlib.dll 收到该数据包后，选择在应用程序计算机和 SQL Server 实例上都启用的 Net-Library，然后连接为此数据包中的 Net-Library 列出的地址。只有在以下情况下该连接尝试才会失败：

  • 请求的 SQL Server 2000 实例未运行。

  • 在应用程序计算机上，SQL Server 2000 实例正在监听的 Net-Library 没有一个是活动的。

当 Dbnetlib.dll 将应用程序计算机上启用的网络协议与 SQL Server 2000 实例上启用的网络协议进行比较时，使用应用程序计算机上的客户端网络实用工具指定比较序列。例如，假设应用程序计算机启用了三个客户端 Net-Library 并指定比较序列依次为 TCP/IP 套接字、NWLink IPX/SPX 和命名管道。如果应用程序计算机尝试连接仅启用了 NWLink IPX/SPX、命名管道和多协议服务器 Net-Library 的 SQL Server 2000 实例，则使用 NWLink IPX/SPX 进行连接。有关配置比较序列的更多信息，请参见配置客户端 Net-Library。

在运行 SQL Server 2000 实例的计算机上，不能将 UDP 端口 1434 指派给 SQL Server 以外的应用程序。管理网络筛选的网络管理员必须允许在 UDP 端口 1434 上进行通讯，以使 SQL Server 2000 连接能够通过筛选。

当在装有 SQL Server 默认实例的同一台计算机上运行应用程序时，可使用以下名称引用默认实例。

Windows NT 和 Windows 2000 | Windows 95 和 Windows 98
计算机名 | 计算机名
(local)* | (local)*
.* |

*这里的"(local)"是带括号的单词 local，"."是一个句点或圆点。"."仅在 SQL Server 实用工具中有效，例如在 SQL 查询分析器和 osql 中；不能在 API 连接请求中指定。

不要使用 (local) 或 . 连接使用故障转移群集实现的虚拟服务器。

建议使用计算机名。这些连接将通过共享内存 Net-Library 建立。DB-Library 不支持使用 (local)。

连接早期 SQL Server 实例

当使用 SQL Server 2000 客户端组件的应用程序连接 SQL Server 7.0 版或更早版本的实例时，实例与应用程序之间的通讯与 SQL Server 的早期版本相同。使用 SQL Server 7.0 版或其早期版本客户端组件的应用程序连接 SQL Server 2000 默认实例时，这些实例与应用程序之间的通讯也与 SQL Server 早期版本相同。在这两种情况中，用户必须用管理 SQL Server 早期版本网络地址的方法来管理网络地址。有关在 SQL Server 早期版本中配置客户端的更多信息，请参见管理客户端。

SQL Server 6.5 版和更早版本仅在命名管道和多协议 Net-Library 上支持 Windows 身份验证（在这些版本中称为集成安全性）。SQL Server 2000 和 SQL Server 7.0 版在所有 Net-Library 上都支持 Windows 身份验证。现有的使用默认命名管道 Net-Library 的 SQL Server 6.5 版或 7.0 版应用程序可用于打开 Windows 身份验证与 SQL Server 6.5 版实例的连接。然而，如果将应用程序计算机上的 SQL Server 客户端实用工具升级到 SQL Server 2000，则默认 Net-Library 将改为 TCP/IP，任何尝试打开 Windows 身份验证与 SQL Server 6.5 版实例的连接操作都将失败。要想解决这一问题，可使用客户端网络实用工具将命名管道 Net-Library 放在 Net-Library 列表的最顶端，使其作为默认 Net-Library。

请参见

管理客户端

管理服务器


表格格式数据流协议

Microsoft® SQL Server™ 2000 使用一个称为表格格式数据流 (TDS) 的应用程序级协议进行客户端应用程序与 SQL Server 之间的通讯。TDS 数据包封装在 Net-Library 所使用的协议栈生成的数据包中。例如，如果使用的是 TCP/IP 套接字 Net-Library，TDS 数据包就封装在基础协议的 TCP/IP 数据包中。

将结果集发送回应用程序的数据包的内容取决于是否在传递给数据库引擎的 Transact-SQL 语句中指定了 FOR XML：

  • 如果没有指定 FOR XML，数据库引擎将关系结果集发送回应用程序。TDS 数据包中包含结果行集，每行包括一列或多列，就像在 SELECT 语句的选择列表中指定的那样。

  • 如果指定了 FOR XML，数据库引擎将 XML 文档以流的形式返回给应用程序。在 TDS 数据包中，XML 文档被格式化为单个的、长 Unicode 值，每个数据包的大小约为 4 KB。

可以配置 SQL Server 数据包大小，即 TDS 数据包大小。大多数客户端上的 TDS 数据包大小默认为 4 KB（DB-Library 应用程序默认为 512 字节），经过测试证明，在几乎所有的方案中，这是最佳的 TDS 数据包大小。TDS 数据包大小可以比基础协议中的数据包大。如果是这种情况，发送数据包的计算机上的协议栈自动将 TDS 数据包分解成适合协议数据包大小的单元，客户端计算机上的协议栈则在接收计算机上将 TDS 数据包重新组合在一起。


Net-Library 加密

Microsoft® SQL Server™ 2000 可使用安全套接字层 (SSL) 加密在应用程序计算机和数据库计算机上的 SQL Server 实例之间传输的所有数据。SSL 加密在超级套接字 Net-Library（Dbnetlib.dll 和 Ssnetlib.dll）内执行，并应用于 SQL Server 2000 支持的所有计算机间协议。当激活 SSL 加密时，超级套接字 Net-Library 在执行以下操作前执行 SSL 加密：

  • 调用 Windows 套接字 2 API 传输 TCP/IP 套接字或 NWLink IPX/SPX 套接字。

  • 调用 Net-Library 路由器将数据包发送到命名管道、多协议、AppleTalk 或 Banyan VINES Net-Library。

SSL 加密仅适用于运行于获得公共证书颁发机构证书的计算机上的 SQL Server 2000 实例。应用程序正在其上运行的计算机还必须有一个从同一证书颁发机构取得的根 CA 证书。

Net-Library 加密通过安全套接字层 API 实现。采用 40 位还是 128 位加密级别取决于在应用程序计算机和数据库计算机上运行的 Microsoft Windows® 操作系统的版本。

启用加密会降低 Net-Library 的性能。除所有未加密连接的工作外，加密还强制执行以下操作：

  • 连接时需要额外的网络往返次数。

  • 所有从应用程序发送到 SQL Server 实例的数据包必须由客户端 Net-Library 加密并由服务器 Net-Library 解密。

  • 所有从 SQL Server 实例发送到应用程序的数据包必须由服务器 Net-Library 加密并由客户端 Net-Library 解密。

共享内存 Net-Library 通讯本身具有安全性，无需加密。共享内存 Net-Library 不参与计算机间的通讯。不能从任何其它 Windows 进程访问应用程序进程与数据库引擎进程之间的共享内存区。

为了与 SQL Server 的早期版本兼容，多协议 Net-Library 将继续支持自己的加密。这种加密与 SSL 加密分开指定，并通过调用 Windows RPC 加密 API 实现。不要求使用证书。采用 40 位还是 128 位的 RPC 加密级别取决于在应用程序计算机和数据库计算机上运行的 Windows 操作系统的版本。命名实例不支持多协议 Net-Library。


服务器组件

除了服务器 Net-Library 外，Microsoft® SQL Server™ 2000 还包含以下主要的服务器组件：

  • SQL Server 数据库引擎（MSSQLServer 服务）

  • SQL Server 代理程序（SQLServerAgent 服务）

  • Microsoft 搜索服务

  • Microsoft 分布式事务处理协调器（MS DTC 服务）

运行 Microsoft Windows NT®、Windows® 2000 和 Windows 98 操作系统的计算机支持这四种服务器组件。运行 Microsoft Windows 95 的计算机不支持服务器组件。当 SQL Server 在 Windows NT 或 Windows 2000 上运行时，SQL Server 数据库引擎、SQL Server 代理程序和 MS DTC 均作为 Windows NT 或 Windows 2000 服务来实现。在 Windows 98 上，服务器组件不作为服务来实现，因为该操作系统不支持服务。Microsoft 搜索服务在 Windows 95 或 Windows 98 上不可用。

停止和启动服务器组件的方法有：

  • Windows NT 和 Windows 2000 在操作系统启动时自动启动每个服务。

  • 使用 SQL Server 服务管理器启动或停止服务。

  • 使用 SQL Server 企业管理器启动或停止服务。

  • 在 Windows NT 或 Windows 2000 中，使用 net start 和 net stop 命令提示命令停止或开始每个服务（故障转移群集中的虚拟服务器除外）。

SQL Server 2000 支持运行 Windows NT 或 Windows 2000 计算机上的多个 SQL Server 实例。每个实例都有自己的 SQL Server 服务和 SQL Server 代理服务复本。Microsoft 搜索服务或 MS DTC 服务只有单个复本，这些服务可由计算机上运行的多个 SQL Server 实例共享。


SQL Server 服务

Microsoft® SQL Server™ 2000 数据库引擎在 Microsoft Windows NT® 或 Microsoft Windows® 2000 操作系统上作为服务运行。它在 Microsoft Windows 98 上不作为服务运行，因为该操作系统不支持服务。SQL Server 在 Windows NT 和 Windows 2000 上也可以作为可执行文件运行，但它通常都作为服务运行。

当多个 SQL Server 实例在同一台计算机上运行时，每个实例都有自己的 SQL Server 服务。默认实例的服务名称为 MSSQLServer，命名实例的服务名称为 MSSQL$InstanceName。有关更多信息，请参见多个 SQL Server 实例。

SQL Server 服务管理组成由 SQL Server 实例拥有的数据库的所有文件。它是用来处理所有发自 SQL Server 客户端应用程序的 Transact-SQL 语句的组件。SQL Server 还支持分布式查询检索来自不同数据源的数据，而不只是 SQL Server 中的数据。

SQL Server 服务可在多个并发用户之间有效地分配计算机资源，并强制实施在存储过程和触发器中定义的业务规则，确保数据的一致性，防止发生逻辑问题（例如防止两个人试图同时更新同一数据）。


SQL Server 代理服务

SQL Server 代理程序支持的功能包括：允许在 Microsoft® SQL Server™ 2000 上调度定期执行的活动，以及通知系统管理员服务器所发生的问题。实现这些功能的 SQL Server 代理程序组件有：

  • 作业

    由一个或多个要执行的步骤组成的已定义对象。这些步骤为可执行的 Transact-SQL 语句。作业可以调度，例如，调度作业在特定时间或按特定重复间隔执行。

  • 警报

    发生特定事件，例如发生特定的错误或某种严重级别的错误，或者数据库达到定义的可用空间限制时所采取的措施。可以定义警报采取一定的措施，例如发电子邮件、寻呼操作员或运行一个作业来处理问题。

  • 操作员

    由网络帐户或电子邮件标识符 (ID) 标识的人员，这些人员可以处理服务器发生的问题。他们可以是通过电子邮件、寻呼机或 net send 网络命令发出警报的目标。

SQLServerAgent 的服务名称只适用于与默认实例相关联的代理服务。与命名实例相关联的 SQL Server 代理服务称为 SQLAgent$InstanceName。

管理调度操作

下图显示用于定义和运行作业、警报和操作员的主要组件。

  • 使用下列组件指定作业、警报和操作员：
    • SQL Server 企业管理器。

    • 使用 SQL 分布式管理对象 (SQL-DMO) 的应用程序。

    • 使用 Transact-SQL 和标准数据库 API 的应用程序。
  • SQL Server 将这些定义存储在 msdb 系统数据库中。

  • SQLServerAgent 服务启动时，它将查询 msdb 数据库中的系统表以确定启用哪些作业和警报。

  • SQL Server 代理程序按调度的时间执行作业。

  • SQL Server 将所有发生的事件传递给 SQL Server 代理程序。

  • SQL Server 代理程序执行所有警报，或向 SQL Server 发送 SQL 邮件请求，或向 Windows 发送 net send 命令。

与 SQL Server 6.5 版及更早的版本相比，SQL Server 2000 的自动化程度更高，并能更高效地优化自身以满足不同的处理需要。这些特点降低了发生触发警报的异常情况的可能性。调度作业对于处理要反复执行的任务（例如备份过程）仍是一个很好的办法。

请参见

自动化管理任务


Microsoft 搜索服务

Microsoft 搜索服务是一个全文索引和搜索引擎。

SQL-92 标准只定义了基本的字符搜索功能：

  • 检索等于、小于或大于一个字符常量的字符值。

  • 检索包含一个字符串模式的字符值。

通过 Microsoft 搜索服务，Microsoft® SQL Server™ 2000 和 SQL Server 7.0 版能够支持在字符串列上进行的更为复杂的搜索。

Microsoft 搜索服务包括两个角色：

  • 索引支持

    实现为数据库定义的全文目录和索引。接受全文目录以及各目录中组成索引的表和列的定义。执行填充全文索引的请求。

  • 查询支持

    处理全文检索查询。确定索引中满足全文选择条件的项。每一个符合选择条件的项都会向 SQL Server 服务返回行标识及等级值，这些信息将用于构造查询结果集。所支持的查询类型包括：

    • 检索词或短语。

    • 检索意思相近的词。

    • 检索动词和名词的屈折变化形式。

全文引擎以名为 Microsoft 搜索的服务在 Microsoft Windows NT® 或 Microsoft Windows® 2000 上运行。全文引擎在自定义安装过程中选择全文检索功能时安装。Microsoft 搜索服务本身并不安装在 Microsoft Windows 95 或 Microsoft Windows 98 上，但是 Windows 95 和 Windows 98 客户端在连接到运行 Windows NT 或 Windows 2000 的 SQL Server 安装时可以使用该服务。

Microsoft 搜索服务在本地系统帐户的环境中运行。在安装过程中，SQL Server 将自我添加为一个 Microsoft 搜索服务管理员。若要确保正确维护此关系，在更改 SQL Server 服务帐户信息时，都必须通过 SQL Server 企业管理器中"SQL Server 属性"对话框的"属性"选项卡来完成。

全文目录和索引不存储在 SQL Server 数据库内，而是存储在由 Microsoft 搜索服务单独管理的文件中。只有 Microsoft 搜索服务和 Windows NT 或 Windows 2000 系统管理员可以访问全文目录文件。

请参见

全文目录和索引

全文查询构架


MS DTC 服务

Microsoft 分布式事务处理协调器 (MS DTC) 是一个事务管理器，它允许客户端应用程序在一个事务中包含多个不同的数据源。MS DTC 协调在所有已在事务中登记的服务器间提交分布式事务。

Microsoft® SQL Server™ 安装可通过下列方法参与分布式事务：

  • 调用运行 SQL Server 的远程服务器上的存储过程。

  • 自动或显式地将本地事务提升为一个分布式事务并在该事务中登记远程服务器。

  • 执行分布式更新以更新多个 OLE DB 数据源上的数据。

    如果这些 OLE DB 数据源支持 OLE DB 分布式事务接口，SQL Server 还可以将它们登记在分布式事务中。

MS DTC 服务协调正确完成分布式事务，以确保所有服务器上的全部更新为永久性的，或在发生错误时删除所有更新。

SQL Server 应用程序也可以直接调用 MS DTC 以显式启动分布式事务。然后，可以指示一台或多台运行 SQL Server 的服务器在此分布式事务中登记，并在 MS DTC 的协调下正确完成此事务。

请参见

分布式事务


多个 SQL Server 实例

Microsoft® SQL Server™ 2000 支持在同一台计算机上同时运行多个 SQL Server 数据库引擎实例。每个 SQL Server 数据库引擎实例各有一套不为其它实例共享的系统及用户数据库。应用程序连接同一台计算机上的 SQL Server 数据库引擎实例的方式与连接其它计算机上运行的 SQL Server 数据库引擎的方式基本相同。

有两种类型的 SQL Server 实例：

默认实例

SQL Server 2000 数据库引擎默认实例的运行方式与 SQL Server 早期版本的数据库引擎相同。默认实例仅由运行该实例的计算机的名称唯一标识，它没有单独的实例名。如果应用程序在请求连接 SQL Server 时只指定了计算机名，则 SQL Server 客户端组件将尝试连接这台计算机上的数据库引擎默认实例。这保留了与现有 SQL Server 应用程序的兼容性。

一台计算机上只能有一个默认实例，而默认实例可以是 SQL Server 的任何版本。

命名实例

除默认实例外，所有数据库引擎实例都由安装该实例的过程中指定的实例名标识。应用程序必须提供准备连接的计算机的名称和命名实例的实例名。计算机名和实例名以格式 computer_name\instance_name 指定。

一台计算机上可以运行多个命名实例，但只有 SQL Server 2000 数据库引擎才可作为命名实例运行。SQL Server 早期版本中的数据库引擎不能作为命名实例运行。

实例主要应用于数据库引擎及其支持组件，而不应用于客户端工具。如果安装了多个实例，则每个实例都将获得各自唯一的一套：

  • 系统和用户数据库。

  • SQL Server 和 SQL Server 代理服务。对于默认实例，服务名仍为 MSSQLServer 和 SQLServerAgent。对于命名实例，服务名改为 MSSQL$instancename 和 SQLAgent$instancename，使得这些服务与服务器上的其它实例分开启动和停止。可使用相关联的 SQL Server 服务启动和停止不同实例的数据库引擎。SQL Server 代理服务管理相关联的数据库引擎实例的调度事件。

  • 与数据库引擎、SQL Server 和 SQL Server 代理服务相关联的注册表键。

  • 使应用程序能连接特定实例的网络连接地址。
共享组件

以下组件可由运行于同一台计算机上的所有实例共享：

  • 此计算机上只有一个 SQL Server 2000 程序组 (Microsoft SQL Server)，以及由该程序组中的每个图标表示的唯一一个实用工具的复本。唯一一个 SQL Server 联机丛书的复本。

    程序组中的实用工具版本来自计算机上最先安装的 SQL Server 2000 版本。例如，如果将 SQL Server 2000 简体中文版作为默认实例安装，然后将 SQL Server 2000 美国英语版作为命名实例安装，则只有一个 SQL Server 2000 程序组。该程序组中的所有实用工具图标和 SQL Server 联机丛书图标都将启动简体中文版的工具。

    所有 SQL Server 2000 实用工具都能处理多个实例。可以从一个 SQL Server 2000 服务管理器的复本启动和停止每个实例。可使用一个 SQL Server 2000 SQL Server 企业管理器复本控制计算机上所有实例中的对象，使用一个 SQL Server 2000 服务器网络管理器复本管理计算机上所有实例的网络通讯地址。

  • 仅有一个 MSSearchService 复本管理针对计算机上所有 SQL Server 实例的全文检索。

  • English Query 和 Microsoft SQL Server 2000 Analysis Services 服务器都只有一个复本。

  • 与客户端软件相关联的注册表键在实例间不重复。

  • 只有一个 SQL Server 开发库（包括 *.lib 文件）和示例应用程序的复本。
默认实例

可作为默认实例操作的配置包括：

  • SQL Server 2000 的默认实例。

  • 作为默认实例运行的 SQL Server 7.0 版安装。

  • 作为默认实例运行的 SQL Server 6.5 版安装。

  • 可使用 SQL Server 2000 vswitch 实用工具，与 SQL Server 6.5 版安装进行版本切换的 SQL Server 2000 默认实例。

  • 可使用 SQL Server 7.0 版 vswitch 实用工具，与 SQL Server 6.5 版安装进行版本切换的 SQL Server 7.0 版安装。

    说明 在同一台计算机上安装 SQL Server 2000 实例前，必须将 SQL Server 6.5 Service Pack 5 应用于所有 SQL Server 6.5 实例。

在 SQL Server 版本间切换

不能在 SQL Server 7.0 版安装和 SQL Server 2000 默认实例之间进行版本切换。

除了默认实例外，还可以拥有任意数量的 SQL Server 2000 命名实例。在运行命名实例前，无须在计算机上运行默认实例。在没有默认实例的计算机上可运行命名实例。SQL Server 6.5 版和 SQL Server 7.0 只能作为默认实例运行，不能作为命名实例运行。

在单台计算机或单个故障转移群集中，Microsoft 不支持超过 16 个实例。

如果在一台计算机上运行作为默认实例的 SQL Server 6.5 版和一个或多个 SQL Server 2000 命名实例，则该计算机将有两个 SQL Server 程序组，而非一个 SQL Server 程序组：

  • SQL Server 2000 程序组执行 SQL Server 2000 工具。

  • SQL Server 6.5 版程序组运行 SQL Server 6.5 工具。

如果同时运行 SQL Server 7.0 版和 SQL Server 2000，则 SQL Server 7.0 程序组中的图标将执行 SQL Server 2000 工具。

说明 在同一台计算机上安装 SQL Server 2000 实例前，必须将 SQL Server 6.5 Service Pack 5 应用于所有 SQL Server 6.5 实例。

故障转移群集上的多个 SQL Server 实例

在一个 SQL Server 故障转移群集中，每台虚拟服务器上只能运行一个 SQL Server 实例，但在一个故障转移群集中则可以安装最多 16 台虚拟服务器。该实例可以是默认实例也可以是命名实例。在连接此 SQL Server 实例的应用程序看来，虚拟服务器就像是单台计算机。当应用程序连接到虚拟服务器时，它们使用连接 SQL Server 的任何实例时所使用的同一规则；它们指定群集的虚拟服务器名和可选实例名（只有命名实例才需要）：virtualservername\instancename。有关群集的更多信息，请参见故障转移群集构架。


与多个实例进行通讯

每个 Microsoft® SQL Server™ 2000 实例都监听一组不同的网络地址，以便应用程序能连接不同的实例。无须将 SQL Server 2000 客户端特意配置为连接 SQL Server 2000 实例。SQL Server 2000 客户端组件查询运行 SQL Server 2000 实例的计算机，以确定每个实例的 Net-Library 和网络地址。然后，客户端组件透明地为连接选择一个支持的 Net-Library 和地址，而不必在客户端上进行配置。应用程序必须提供的唯一信息是计算机名和实例名。有关更多信息，请参见控制 Net-Library 和通讯地址。

SQL Server 2000 默认实例与 SQL Server 早期版本监听相同的网络地址。因此，使用 SQL Server 7.0 版或更早版本的客户端连接组件可以不做任何改变地继续连接默认实例。命名实例监听备用网络地址，同时，必须将使用 SQL Server 7.0 版或更早版本客户端连接组件的客户端计算机设置为连接备用地址。


使用多个实例

尽管在单台计算机上运行多个 Microsoft® SQL Server™ 2000 实例扩充了 SQL Server 的功能，但对于大多数生产数据库服务器，建议采用单个 SQL Server 实例带多个数据库的配置方法。

在一台生产服务器上配置一个 SQL Server 实例有以下优点：

  • 只需管理一个实例。

  • 没有重复的组件或处理开销，例如必须在同一台计算机上运行多个数据库引擎。这意味着只运行一个实例的服务器的总体性能可能比运行多个实例的服务器的总体性能高。

  • 单个的 SQL Server 2000 实例能够处理最大的 Web 站点和企业数据处理系统的处理增长需求，特别是在作为数据库服务器联合体的一部分时。有关更多信息，请参见联合 SQL Server 2000 数据库服务器。

在下列情况下最好在单台计算机上运行多个 SQL Server 实例：

  • 当必须支持需要彼此安全隔离的不同系统时，例如，某服务部门拥有一台大型服务器，且必须为每个客户创建独立的 SQL Server 实例。

  • 当需要支持多个测试和开发数据库时，最经济的配置方式是在一台大型服务器上让这些数据库作为不同的 SQL Server 实例运行。

  • 当需要在一台桌面上运行多个应用程序时，每个应用程序安装不同的 SQL Server 2000 Desktop Engine 实例。


处理多个实例

尽管多个 Microsoft® SQL Server™ 2000 实例可在单台计算机上运行，但实例间没有直接连接。每个实例以多种方式运行，就像位于单独的服务器上。连接某一实例的应用程序除了通过分布式查询外，不能访问其它实例中创建的数据库中的对象。实例之间不能共享数据库和数据库文件。

SQL Server 2000 数据库引擎的命名实例与默认实例的行为几乎相同。两者的主要差别是命名实例要求用户必须提供标识命名实例的计算机名和实例名。如果仅指定 computername，则使用默认实例。如果指定 computername\instancename，则使用命名实例。

  • 服务管理器。

    如果在服务管理器中仅指定 computername，则可停止和启动默认实例。如果指定 computername\instancename，则可停止和启动命名实例。当启动特定的实例时，对于任何使用具有访问数据库权限的授权 ID 连接实例的应用程序，都可使用在该实例中创建的所有数据库。

  • SQL Server 企业管理器。

    通过 SQL Server 企业管理器，用户可以注册自己拥有权限的任何一个实例。在注册实例后，可根据授予的权限，创建、编辑和除去数据库中与实例相关联的对象。还可为该实例创建、编辑和除去数据转换服务、复制和 SQL Server 代理对象。

  • 应用程序。

    在一个应用程序中，如果在连接请求中指定 computername 作为服务器名参数，则连接计算机上的默认实例。用户可访问自己拥有访问权限的默认实例中的任何数据库。如果指定 computername\instancename 作为服务器名称参数，则连接命名实例。用户可访问自己拥有访问权限的命名实例中的任何数据库。当连接特定的实例时，只能通过分布式查询访问其它实例中的数据库对象，正如只能通过分布式查询访问其它服务器中的数据库对象一样。应用程序指定实例名的方式各不相同：

    • ADO 应用程序在提供程序字符串中指定 "Server=computername\instancename"。有关更多信息，请参见连接多个 SQL Server 实例。

    • OLE DB 应用程序在提供程序字符串中指定 "Server=computername\instancename"。也可将 DBPROP_INIT_DATASOURCE 设置为 computername\\instancename（反斜杠必须通过另一个反斜杠转义）。有关更多信息，请参见建立与数据源的连接。

    • ODBC 应用程序在 SQLDriverConnect 上指定的连接字符串中指定 "Server=computername\instancename"。也可为 SQLConnect 上的参数 ServerName 指定 computername\\instancename，或通过已为服务器名称指定 computername\instancename 的数据源进行连接。有关更多信息，请参见 SQLDriverConnect 和 SQLConfigDataSource 支持。

    • SQL DMO 应用程序可使用 SQLServer2 对象管理 SQL Server 2000 实例。有关更多信息，请参见 SQLServer2 对象。

    • DB-Library 和用于 C 语言的嵌入式 SQL 不支持多个实例。
  • 分布式查询和链接服务器。

    分布式查询和链接服务器定义使用 computername\instancename 和 computername 分别标识命名实例和默认实例。有关更多信息，请参见多个 SQL Server 实例上的分布式查询。

  • 命令提示实用工具。

    使用命令提示实用工具时，可通过 computername\instancename 使用服务器开关指定实例，例如：

    osql -E -Scomputer1\instance1
sqlservr /Sinstance1

    isql 实用工具不支持命名实例。

  • SQL Server 2000 客户端组件。

    使用 SQL Server 2000 客户端组件的应用程序可枚举用于连接的实例：

    • 用于 SQL Server 2000 的 OLE DB 提供程序使用 ISourcesRowset::GetSourcesRowset 返回实例名。命名实例名作为格式为 computername\instancename 的数据源名返回，其中的 computername 可以是单台计算机的名称，也可以是故障转移群集的虚拟服务器名称。默认实例名作为格式为 computername 的数据源名返回，不带实例名。

    • SQL Server 2000 ODBC 驱动程序支持 SQLBrowseConnect 和 SQLSetConnectAttr 的扩展，这使应用程序得以枚举服务器上的实例。ODBC 应用程序还可确定 computername 是单个计算机名还是故障转移群集的虚拟服务器名。有关更多信息，请参见 SQLBrowseConnect。

    • SQL-DMO 应用程序可使用 SQLServer2 对象枚举实例。SQLServer2 对象还提供诸如 SQL Server 名和实例的 SQL Server 代理服务名，以及实例是在单个计算机上运行还是在故障转移群集上运行等方面的信息。有关更多信息，请参见 SQLServer2 对象。

    • DB-Library 和用于 C 语言的嵌入式 SQL 不支持命名实例。
标识实例

性能监视器计数器、事件探查器事件和事件查看器应用程序日志中的 Windows 事件都标识与它们相关联的 SQL Server 实例。

如果连接命名实例，则 @@SERVERNAME 函数返回的字符串以 servername\instancename 的格式标识实例名。如果连接默认实例，则 @@SERVERNAME 仅返回 servername。有关更多信息，请参见 @@SERVERNAME。

SERVERPROPERTY 函数的 INSTANCENAME 属性报告所连接实例的实例名。如果连接默认实例，则 INSTANCENAME 返回 NULL。另外，SERVERNAME 属性将返回与 @@SERVERNAME 返回的格式相同的字符串，并在连接命名实例时具有格式 servername\instancename。有关更多信息，请参见 SERVERPROPERTY。

尽管 @@SERVERNAME 和 SERVERNAME 报告的字符串采用相同的格式，但它们报告的信息可以不同，例如：

  • @@SERVERNAME 返回的字符串受 sp_addserver 和 sp_dropserver 操作的影响，而 SERVERNAME 报告的字符串则不受影响。

  • SERVERNAME 可自动报告计算机网络名中的更改，而 @@SERVERNAME 不报告这些更改，除非使用 sp_dropserver 和 sp_addserver 更改它报告的名称。


联合 SQL Server 2000 服务器

Microsoft® SQL Server™ 2000 数据库可分散在一组自主数据库服务器中，这组服务器能够支持通过 Microsoft Windows® DNA 建立的最大型 Web 站点和企业数据处理系统的处理增长需求。

Windows DNA 将数据处理系统的处理单元分为若干个逻辑层：

  • 用户服务层

    提供用户看得到的界面，通常调用第二层处理业务逻辑。

  • 业务服务层

    包含可控制 Web 站点运行的业务逻辑，使用第三层提供的持久数据存储。

  • 数据服务层

    存储运行 Web 站点所需的持久数据。

按比例缩放是指将资源添加到某一层，以使该层能够处理增大的工作负荷的过程。按比例缩放可以有两种实现方式：

  • 提高个体功能

    通过使用功能更强大的计算机提高服务器的处理能力。

  • 提高群体功能

    提高以模块化方式设计的系统的处理能力，例如在系统中添加一台或多台计算机（也称为节点），使之变为一个计算机群集。

大型 Web 站点的增长需求所产生的处理负荷远远超出了单独的大型服务器的能力。在这种情况下，提高群体功能可能是提高系统处理能力的最佳选择。

Microsoft Windows 2000 COM+ 组件被设计为可用于 Windows 2000 应用程序服务器群集，以形成群集的业务服务层。每一台服务器上都装有相同的 COM+ 组件集，Windows 2000 通过向处理负荷最小的服务器发送新的请求来平衡群集内的处理负荷。这样便形成了一个容易管理的群集，只需增加新的服务器即可快速提高群体功能。

SQL Server 2000 不支持这种类型的群集。然而，SQL Server 2000 确实支持可更新的分布式分区视图，而这些视图用于在一组服务器间透明地对数据进行水平分区。尽管这些服务器可合作管理分区数据，但它们通常自主运行。每一台服务器分开管理，有单独的操作规则并可支持独立的进程和数据。一组协作处理工作负荷的自主服务器称为联合体。尽管当服务器上的处理器增加到 8 个或更多时，SQL Server 2000 提供的性能已相当好了，但它仍支持在联合体间分散巨大的处理负荷。运行 SQL Server 2000 的服务器联合体能够支持任何 Web 站点或超大型企业系统的增长需求。


对数据分区

建立一个联合数据库服务器组的第一步是在多台服务器间水平分区表数据。水平分区表是指将表分成多个较小的表（称为成员表）。每一个成员表与原始表有相同的格式，但仅包含原始表中的部分行。将每一个表放在不同的资源（文件或服务器）上，以使处理负荷分散到多个资源上。例如，某公司从 1 至 9999999 分配客户标识符 (ID)。可将 Customers 表分为 3 个成员表，每个成员表的客户 ID 范围都相同。

如果在使用水平分区时不使用视图，则水平分区将要求应用程序具有确定哪些成员表包含用户请求数据的逻辑，并动态地生成引用这些表的 SQL 语句。应用程序需要使用复杂的查询联接这些成员表。更改成员表还涉及重新编写应用程序代码。为解决这一问题，视图使成员表看起来像一个表。SQL UNION 运算符将具有相同格式的结果集合并为一个。因为所有成员表都具有相同的格式，所以对每个表执行 SELECT * 语句所得到的结果也具有相同的格式，并且可使用 UNION 子句合并这些结果，以形成与原始表的操作相类似的单个结果集。例如，将 Customers 表分散在三台服务器（Server1、Server2 和 Server3）上。在 Server1 上定义的分布式分区视图为：

CREATE VIEW Customers
AS
SELECT * FROM Customers_33
   UNION ALL
SELECT * FROM Server2.CustomerDB.dbo.Customers_66
   UNION ALL
SELECT * FROM Server3.CustomerDB.dbo.Customers_99

此视图使数据的实际位置对应用程序是透明的。当在引用 Customers 分区视图的 Server1 上执行 SQL 语句时，应用程序看不到数据的位置。如果需要一些行来完成驻留在 Server2 或 Server3 上的 SQL 语句，Server1 上的 SQL Server 实例将自动生成一个分布式查询，从其它服务器中取得所需的行。这种透明性使数据库管理员得以重新分区表，而无须对应用程序重新编码。如果 Customers 视图可更新，则视图的行为与名为 Customers 的表的行为相同。

本地分区视图引用一台服务器上的成员表。分布式分区视图则引用多台服务器上的成员表。包含成员表的服务器称为成员服务器，而包含成员表的数据库称为成员数据库。每一个成员服务器包含一个成员表和一个分布式分区视图。引用任一服务器上的分区视图的应用程序得到的结果相同，就好象每台服务器上存在原始表的完整复本。

Microsoft SQL Server 2000 和 Microsoft SQL Server 7.0 版都支持分区视图。不过，SQL Server 2000 引入了关键的功能，使视图得以提高群体功能以形成数据库服务器联合体：

  • SQL Server 2000 分区视图可以更新。这对于分发数据十分关键，因为这使数据的位置对应用程序是透明的。可更新的视图支持原始表的全部行为，而不可更新的视图类似于只读复本。

  • SQL Server 2000 查询优化器支持新的优化功能，可使必须传输的分布式数据量减到最少。对于更大的查询集，SQL Server 2000 生成的分布式执行计划比 SQL Server 7.0 版生成的同类计划产生更好的性能。

SQL Server 2000 分区视图最适合 Web 站点和联机事务处理 (OLTP) 系统生成的 SQL 语句类型。

分区数据库

若要建立一个有效的数据库服务器联合体，必须：

  • 创建多个数据库，每一个数据库分别位于运行 SQL Server 2000 实例的不同的成员服务器上。

  • 在原始数据库中对个别表进行分区，使大部分相关数据位于一台成员服务器上。这可能需要不同的方法在各成员数据库上的各种表中分发数据，对一些表进行分区，制作每个成员数据库中其它表的完整复本，并保留一些表在原始服务器上的完整性。

  • 设计可纳入业务服务层的数据路由规则，以便应用程序将每条 SQL 语句发送到存储该语句所需的大部分数据的成员服务器。

在此类系统中，最重要的目标是最大程度地减少分布式处理。用户必须能够在同一台成员服务器上配置相关的数据，然后将每个 SQL 语句路由到包含处理语句所需的大部分数据（若不是全部）的成员服务器。例如，用户可能发现数据库中的所有销售额、客户、销售人员和库存清单都可以按照销售区域进行分区，并且大多数 SQL 语句仅引用单个区域中的数据。用户于是可创建多台成员服务器，其中每台服务器都包含一个或多个区域的水平分区数据。如果应用程序能够识别当前正由用户输入引用的区域，则应用程序可将生成的任何 SQL 语句提交到包含该区域数据的成员服务器。唯一生成分布式查询的 SQL 语句是那些引用多个区域数据的语句。


故障转移群集构架

Microsoft® SQL Server™ 2000 故障转移群集允许系统自动故障服务器中的 SQL Server 实例处理转换到工作服务器，从而提高了服务器的可用性。例如，SQL Server 实例可以快速地将数据库服务还原到 Web 站点或企业网络，即使运行该实例的服务器发生故障。SQL Server 2000 基于 Windows NT® 4.0 和 Windows® 2000 中的 Microsoft 群集服务 (MSCS) 的故障转移群集功能实现故障转移群集。

SQL Server 2000 使用的 MSCS 故障转移群集类型由多台服务器计算机组成（在 Windows NT 4.0 上为两个，在 Windows 2000 Datacenter Server 上最多可以为四个），它们共享一套公用群集资源，如磁盘驱动器。群集中的每台服务器都称为一个节点。每台服务器（或节点）与网络连接，并且各节点间可以相互通讯。每一节点都运行同一版本的 MSCS。

在故障转移群集中，共享资源被收集到群集组内。例如，如果故障转移群集有四个共享磁盘驱动器，其中的两个驱动器可以收集到一个群集组内，而另两个驱动器可以收集到另一个群集组内。每一群集组都由故障转移群集中的某个节点拥有，不过这种所有权可以在节点间转让。

应用程序可以安装在故障转移群集中的节点上。这些应用程序通常是服务器应用程序或用户通过网络连接访问的分布式 COM 对象。应用程序的可执行文件和其它资源通常存储在节点所拥有的一个或多个群集组内。每一节点都可以在其上安装多个应用程序。

故障转移群集节点定期相互发送称为心跳信号消息的网络消息。如果 MSCS 软件检测到群集中某个节点丢失了心跳信号，则将该服务器视为故障服务器。MSCS 然后自动将该节点的群集组和应用程序资源转移给网络中的其它节点。当任何特定的节点发生故障时，群集管理员指定将群集组转移到的替换节点。于是，其它节点继续处理对故障服务器转移来的应用程序的用户网络请求。

有关 MSCS 的更多信息，请参见 Windows NT Server、Windows 2000 Server、Windows 2000 Advanced Server 或Windows 2000 Datacenter 文档。


SQL Server 2000 故障转移群集

在一个 Microsoft 群集服务 (MSCS) 故障转移群集中，可以安装最多 16个 Microsoft® SQL Server™ 2000 实例。

通过运行群集中某个节点上的 SQL Server 安装程序安装 SQL Server 2000 实例。安装程序将实例安装在安装过程中指定的故障转移群集中的节点上。SQL Server 2000 可执行文件安装在故障转移群集中每一节点的本地磁盘驱动器上。这意味着每一节点都必须有本地硬盘，分配给该硬盘的驱动器号应与所有其它节点上的相同，而且该驱动器号必须在安装过程中为 SQL Server 可执行文件指定的位置路径中。例如，如果指定 C:\Program Files\Microsoft SQL Server 作为安装 SQL Server 可执行文件的位置，则群集中每一节点都必须使驱动器号 C 映射到本地驱动器。实例的注册表信息也存储在故障转移群集中每一节点的注册表中。

MSCS 群集组是共享资源（如某个故障转移群集节点所拥有的共享磁盘驱动器）的集合。该组的所有权可以在节点间转让，但每个组一次只能由一个节点拥有。SQL Server 2000 实例的数据库文件放置在单个 MSCS 群集组中，该群集组由安装此实例的节点拥有。如果运行某个 SQL Server 实例的节点发生故障，则 MSCS 将包含该实例数据文件的群集组切换至另一个节点。因为新节点的本地磁盘驱动器上已经有该 SQL Server 实例的可执行文件和注册表信息，所以它可以启动该 SQL Server 实例并开始接受连接该实例的请求。

因为 SQL Server 2000 实例的可执行文件和注册表信息存储在每一节点中，所以 SQL Server 2000 对每台计算机只能有 16 个实例的限制也适用于每个故障转移群集。故障转移群集中的每一实例要么必须有唯一的实例名，要么必须是默认实例。在每个故障转移群集中只能有一个默认实例。

保存实例数据库文件的 MSCS 群集组在 SQL Server 安装过程中与一个 SQL Server 虚拟服务器名称相关联。每台虚拟服务器只能有一个实例，这也意味着只能有一个实例与任一群集组相关联。

当应用程序尝试连接一个运行在故障转移群集上的 SQL Server 实例时，应用程序必须指定虚拟服务器名称和实例名。只有当与虚拟服务器关联的实例是没有名称的默认实例时，应用程序才不必指定实例名。

例如：

  • Windows 群集管理员创建了一个故障转移群集，该群集有两个节点：NodeA 和 NodeB。每一节点都将驱动器号 C 映射到本地硬盘上。

  • 在该群集中有一个共享磁盘。群集管理员创建 ClusterGroupA 来控制该驱动器，并把它指派给 NodeA。

  • SQL Server 系统管理员运行安装程序在 NodeA 上安装 SQL Server 默认实例。在安装过程中，管理员指定 SQL Server 虚拟服务器名称为 VirtualServerX，并指定将数据库文件放置在 ClusterGroupA 中的驱动器上。安装程序在本地驱动器 NodeA 和 NodeB 上安装 SQL Server 可执行文件，并将数据库文件放置在 ClusterGroupA 中。

  • 尝试连接默认实例的应用程序只需指定虚拟服务器名称 VirtualServerA。默认实例通常运行在 NodeA 上。然而，如果 NodeA 发生故障，则 MSCS 群集将 ClusterGroupA 的所有权转让给 NodeB，并重新启动 NodeB 上的默认实例。应用程序仍将通过指定虚拟服务器名称 VirtualServerX 连接默认实例。

请参见

故障转移群集

安装虚拟服务器配置


SQL Server 和 XML 支持

可扩展标记语言 (XML) 是用于描述数据集内容以及应如何将数据输出到设备上或如何在 Web 页上显示数据的语言。标记语言的创建来源于出版商指示印刷商如何组织报纸、杂志或书籍内容的方法。电子数据的标记语言对所有可显示在不同类型的电子装置上的电子文档执行相同的功能。

XML 和超文本标记语言 (HTML) 都来源于标准通用标记语言 (SGML)。SGML 是一种复杂的大型语言，难以完全用于在 Web 上发布数据。HTML 是比 SGML 简单的专用标记语言，但在处理 Web 上的数据时有许多限制。XML 比 SGML 小且比 HTML 可靠，所以，在通过 Web 或公司内部网络交换电子数据的活动中，正日益成为一种重要的语言。

在如 Microsoft® SQL Server™ 2000 的关系数据库中，对数据库表的所有操作都会产生表形式的结果。SELECT 语句的结果集为表形式。传统的客户端/服务器应用程序通过从表格格式的结果集中一次提取一行或一个行块，并将列值映射到程序变量中来执行 SELECT 语句处理结果。另一方面，Web 应用程序程序员更熟悉使用 XML 或 HTML 中的数据层次化表示。

SQL Server 2000 引入了对 XML 的支持。这些新特性包括：

  • 能够通过 URL 访问 SQL Server。

  • 支持 XML-Data 架构并能在这些架构上指定 XPath 查询。

  • 能够检索并写入 XML 数据：
    • 使用 SELECT 语句和 FOR XML 子句检索 XML 数据。

    • 使用 OpenXML 行集提供程序写入 XML 数据。
  • 增强了 Microsoft SQL Server 2000 OLE DB 提供程序 (SQLOLEDB)，使得可以将 XML 文档设置为命令文本并以流的形式返回结果集。

请参见

XML 和 Internet 支持概述

使用 URL 访问 SQL Server

使用带批注的 XDR 架构创建 XML 视图

使用 XPath 查询

检索和编写 XML 数据


管理客户端

客户程序是前端应用程序，它使用服务器提供的服务。该应用程序的宿主计算机称为客户计算机。客户端软件使计算机可以连接到网络中的 Microsoft® SQL Server™ 实例。

SQL Server 客户程序可以包括各种应用程序，如：

  • OLE DB 使用者。

    这些应用程序使用用于 SQL Server 的 Microsoft OLE DB 提供程序或用于 ODBC 的 Microsoft OLE DB 提供程序与 SQL Server 实例连接和会话。OLE DB 提供程序充当 SQL Server 实例与客户应用程序之间的中介，这些客户应用程序使用 SQL Server 数据作为 OLE DB 行集。

  • ODBC 应用程序。

    这些程序包括与 SQL Server 一起安装的客户端实用工具（如 SQL Server 企业管理器和 SQL 查询分析器），以及其它使用 SQL Server ODBC 驱动程序与 SQL Server 实例连接和会话的应用程序。

  • DB-Library 客户程序，包括 SQL Server isql 命令提示实用工具和写到 DB-Library 中的客户程序。

无论应用程序是何类型，管理客户端主要包括配置它与 SQL Server 服务器组件的连接。根据您的站点要求，客户端管理的范围可以从小到输入服务器计算机名称，大到生成自定义配置项目库以满足各种多服务器环境。


如何启动客户端网络实用工具 (Windows)

启动客户端网络实用工具

  • 在"开始"菜单上，指向"程序"，进而指向"Microsoft SQL Server"子菜单，然后单击"客户端网络实用工具"命令。


如何显示网络库的版本号（客户端网络实用工具）

显示库的版本号

  • 单击"网络库"选项卡。

    显示网络库、库文件名、版本、文件日期和大小。


如何设置 DB-Library 转换首选项（客户端网络实用工具）

说明 此过程适用于 Microsoft® Windows® 32 位操作系统客户端。

设置 DB-Library 转换首选项

  1. 单击"DB-Library 选项"选项卡。

  2. 选择或清除"ANSI 到 OEM 的自动转换"复选框。

  3. 选择或清除"使用国际设置"复选框。


如何添加网络库配置（客户端网络实用工具）

添加网络库配置

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中的"网络库"下，选择其中一个网络库。

  3. 输入服务器别名，以及选定网络库需要的任何参数信息。


如何编辑网络库配置（客户端网络实用工具）

编辑网络库配置

  1. 单击"别名"选项卡，然后单击要编辑的网络协议配置。

  2. 单击"编辑"按钮。

  3. 在"编辑网络库配置"对话框中，编辑要更改的信息。


如何删除网络库配置（客户端网络实用工具）

删除网络库配置

  1. 单击"别名"选项卡，然后单击要删除的网络库配置。

  2. 单击"删除"按钮。


如何将客户的别名设置为一个备用管道（客户端网络实用工具）

将客户的别名设置为一个备用管道

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中，单击"命名的管道"按钮。

  3. 在"服务器别名"框中，输入该服务器的别名。

  4. 在"连接"参数下的"管道名称"框中，键入备用管道名的名称（例如 \\myserver\pipe\altpipe）。


如何将客户端配置为使用多协议 Net-Library（客户端网络实用工具）

说明 在创建多协议客户端配置之前，确保您的计算机至少有一 IPC 协议加载在服务器的多协议下（命名的管道、NWLink IPX/SPX、TCP/IP 或 Windows 套接字）。

配置使用多协议 Net-Library 的客户端

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中单击"多协议"复选框。

  3. 在"服务器别名"框中，输入监听多协议 Net-Library 的 Microsoft® SQL Server™ 实例的名称。

  4. 除非服务器要求特定参数，否则应保留"其它参数"框为空。在输入参数之前向网络管理员核实。


如何将客户端配置为使用 TCP/IP（客户端网络实用工具）

将客户端配置为使用 TCP/IP

  1. 单击"常规"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中单击"TCP/IP"。

  3. 在"服务器别名"框中，输入监听 Windows 套接字 Net-Library 的 Microsoft® SQL Server™ 实例的别名。

    使用 TCP/IP，您还可以用服务器的 IP 地址代替它的名称来指定服务器。

  4. 执行下列操作中的一种：
    • 选择"动态确定端口"复选框自动确定端口。

    • 清除"动态确定端口"复选框以手工设置端口，然后在"端口号"框中键入端口号。

有关其它支持 Windows 套接字的 TCP/IP 协议的更多信息，请参见 TCP/IP 文档。


如何将客户端配置为使用 NWLink IPX/SPX 网络库（客户端网络实用工具）

将客户端配置为使用 NWLink IPX/SPX 网络库

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中单击"NWLink IPX/SPX"。

  3. 在"服务器别名"框中，输入监听 NWLink IPX/SPX Net-Library 的 Microsoft® SQL Server™ 实例的别名。

  4. 在"连接"参数下，单击"服务名"或"网络地址"，然后执行下列操作之一：
    • 如果单击了"服务名"，则输入该服务名称。

      "服务名"是正运行 SQL Server 实例的 Microsoft Windows NT® 4.0 或 Windows® 2000 计算机名。该名称存储在服务器计算机的平构数据库中。

    • 如果单击了"网络地址"，则输入地址（MAC 地址）、端口（套接字号），以及网络（NetWare 网络号）。


如何将客户端配置为使用 AppleTalk 网络库（客户端网络实用工具）

将客户端配置为使用 AppleTalk 网络库

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中，单击"AppleTalk"。

  3. 在"服务器别名"框中，输入监听 AppleTalk Net-Library 的 Microsoft® SQL Server™ 实例的名称。

  4. 在"连接"参数下，键入 AppleTalk 对象名和可选区域标识符。


如何将客户端配置为使用 Banyan VINES 网络库（客户端网络实用工具）

将客户端配置为使用 Banyan VINES 网络库

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中单击"Banyan VINES"。

  3. 在"服务器别名"框中，输入监听 Banyan VINES Net-Library 的 Microsoft® SQL Server™ 实例的别名。

  4. 在"连接"参数下键入服务和 VINES 组织。对于组可以使用 MSSQL 的默认值。


如何将客户端配置为使用 VIA 网络库（客户端网络实用工具）

将客户端配置为使用 Banyan VINES 网络库

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中单击"VIA"。

  3. 在"服务器别名"框中，输入监听 Banyan VINES Net-Library 的 Microsoft® SQL Server™ 实例的别名。

  4. 在"连接"参数下键入服务器名和服务器端口号。


如何将客户端配置为使用非标准的网络库（客户端网络实用工具）

将客户端配置为使用非标准的网络库

  1. 单击"别名"选项卡，然后单击"添加"按钮。

  2. 在"添加网络库配置"对话框中单击"其它"。

  3. 在"服务器别名"框中，输入监听您计划安装的 Net-Library 的 Microsoft® SQL Server™ 实例的别名。

  4. 在"连接"参数下键入安装的 Net-Library 的文件名（文件必须是一个 DLL）。不要输入 DLL 扩展名。

  5. 如有必要，在"参数"框中输入任意附加信息（如用户名和密码）。参数之间使用逗号分隔。


如何验证 SQL Server 正在监听 AppleTalk 而且能够接受客户端连接（客户端网络实用工具）

验证 SQL Server 正在监听 AppleTalk 而且能够接受客户端连接

  1. 从服务器的 \WINNT\system32 目录，将客户端 AppleTalk Net-Library (Dbmsadsn.dll) 复制到运行 Microsoft® Windows NT® 或 Microsoft Windows® 2000 Macintosh 服务的远程计算机的同一目录下。

  2. 在远程工作站上启动"SQL Server 客户端配置"。

  3. 如果"被禁用的协议"列表中列出了"AppleTalk"，则单击它，然后单击"启用"。

  4. 在"按顺序启用协议"列表中单击"AppleTalk"，然后单击"上移"按钮直到"AppleTalk"位于列表的顶端。

  5. 单击"确定"按钮。

  6. 试着使用 AppleTalk 服务对象名建立一个 ISQL 连接。

    例如，在命令行键入：

    isql -Usa -P -Sservicename

    如果能够与 ISQL 连接并执行查询，则服务器配置正确并正在接受连接。

说明 Microsoft Win32® AppleTalk (ADSP) 客户端 Net-Library (Dbmsadsn.dll) 也包含在内，用于测试 ADSP 连接，以及诊断 Macintosh 客户机和 Microsoft SQL Server™ 之间的 AppleTalk 连接故障。这个 Net-Library 只是在测试从远程客户到 SQL Server 的实例的连接时才使用。如果试图通过 ADSP Net-Library 本地连接到监听 AppleTalk 的 SQL Server 的实例，就会收到如下网络错误：Net-Library 错误 11：getsockopt()。


如何检查 ODBC SQL Server 驱动程序的版本 (Windows)

说明 只有在运行 Microsoft® Windows NT® 4.0 操作系统时才可按下面步骤操作：

检查 ODBC SQL Server 驱动程序的版本（32 位 ODBC）

  1. 在控制面板中双击"ODBC 数据源"项。

  2. 单击"驱动程序"选项卡。

    有关 Microsoft SQL Server™ 条目的信息显示在"版本"列中。


使用复制数据库向导

复制数据库向导使您得以在服务器之间复制或移动数据库。可以在 Microsoft® SQL Server™ 2000 的不同实例之间移动和复制数据库，还可将数据库从 SQL Server 7.0 版升级到 SQL Server 2000。有关更多信息，请参见升级 SQL Server 7.0 数据库（复制数据库向导）。

使用复制数据库向导联机升级数据库

向导

向导

还可以通过将 SQL Server 7.0 版或 SQL Server 2000 的多个实例集成为单个 SQL Server 2000 实例，或者集为一台计算机上的多个命名实例，简化数据库的管理和维护工作。

除复制实际的数据库外，还可以复制相关联的元数据（例如，所复制的数据库所需的、来自 master 数据库的登录和对象）。

说明 不能用复制数据库向导复制或移动 model、msdb 或 master 数据库。

复制和移动过程

若要使用复制数据库向导，必须是系统管理员或者是 sysadmin 角色成员。如果您正在运行 Microsoft Windows NT® 4.0 或 Microsoft Windows® 2000，则您的用户帐户必须有管理员权限。

若要使用复制数据库向导，必须指定：

  • 要复制的数据库所驻留的源服务器。

  • 目的服务器，即数据库要复制或移动到的服务器。

    数据库在目的服务器上的名称与在源服务器上的名称保持一致。因而，只有源名称在目的服务器上不存在的数据库才能复制或移动。在移动或复制操作过程中，不能重命名数据库。必须在移动或复制数据库之前手工解决名称冲突。

  • 要移动或复制的数据库。

    为避免数据丢失或不一致，必须确保正在移动或复制的数据库上没有活动会话。如果存在活动会话，复制数据库向导将不会运行。

  • 要复制或移动的其它对象（例如来自 master 数据库的登录和共享对象、作业和维护计划以及用户定义的错误信息）。

  • 复制或移动操作的调度（如果希望以后运行该操作）。

当在不同的服务器或磁盘驱动器之间移动数据库时，复制数据库向导将把数据库复制到目的服务器，并验证其是否联机。该向导不会从源服务器中删除数据库。验证了复本完全可操作后，必须从源服务器中手工删除相关文件。当在同一台服务器上的两个实例之间移动数据库时，会执行文件系统移动操作。


安全管理

数据库必须具有坚固的安全系统，才能控制可以执行的活动以及可以查看和修改的信息。无论用户如何获得对数据库的访问权限，坚固的安全系统都可确保对数据进行保护。

本节描述 Microsoft® SQL Server™ 2000 内置的安全工具，并包含下列信息：

  • 安全构架

  • 计划安全性

  • 创建安全帐户

  • 管理安全帐户

  • 管理权限

  • 高级安全主题

  • 审核 SQL Server 活动


安全构架

安全系统的构架建立在用户和用户组的基础上。下图说明 Microsoft® Windows NT® 4.0 和 Windows® 2000 中的用户和本地组及全局组可以如何映射到 Microsoft SQL Server™ 中的安全帐户，以及 SQL Server 可以如何独立于 Windows NT 4.0 和 Windows 2000 中的帐户来处理安全帐户。

CORPUSERS 本地组中含有两个用户和一个全局组 Mktg，这个全局组中又含有两个用户。SQL Server 允许直接使用 Windows NT 4.0 和 Windows 2000 本地组和全局组来组织 SQL Server 的用户帐户。此外，Windows NT 4.0 用户 Fred 和 Jerry 虽不属于 Windows NT 4.0 组，但可以作为 Windows NT 4.0 用户（如 Fred）或作为 SQL Server 用户 (Jerry) 直接添加到 SQL Server 实例中。

通过使用角色，SQL Server 进一步扩展了上面的模型。角色是为了进行管理而组织的用户组，与 Windows NT 4.0 或 Windows 2000 组相同，但是当等价的 Windows NT 4.0 或 Windows 2000 组不存在时，将在 SQL Server 中创建这些角色。例如，Managers 角色中包含 Windows NT 4.0 Mktg 全局组，以及 Windows NT 4.0 用户 Frank 和 Fred。

此外，SQL Server 还通过使用单个数据库应用程序角色在应用程序级别提供安全。

有关更多信息，请参见 Windows NT 4.0 或 Windows 2000 文档。

请参见

创建安全帐户


计划安全性

安全计划标识哪些用户可以在数据库中查看哪些数据以及执行哪些活动。对于制定安全计划：

  1. 列出数据库中所有必须通过安全控制的项目和活动。

  2. 标识公司中的个人和组。

  3. 交叉引用两个列表以标识哪些用户可以在数据库中查看哪些数据集以及执行哪些活动。

请参见

单个人员安全性示例

小型公司安全性示例

公司环境安全性示例


单个人员安全性示例

在可能的最简单的安全系统中，单个人员负责数据库各方面的事务并且是数据库的唯一用户。这个假想的用户（伦敦的 Tom Brown）必须能够：

  • 创建数据库及其表。

  • 编写数据接口程序。

  • 装载和维护数据。

  • 生成报表。

本示例的用户活动映射列出了单个用户及其需要执行的活动。

用户帐户 | 活动
LONDON\tombrown | 访问全部数据库

创建安全系统的第一步是添加 Microsoft® SQL Server™ 登录 LONDON\tombrown，以使该用户可以访问 SQL Server。预定义的 sysadmin 角色含有该用户所需的全部权限，因此，LONDON\tombrown SQL Server 登录应添加为 sysadmin 角色成员。当 LONDON\tombrown 连接到 SQL Server 实例时，SQL Server 回叫 Microsoft Windows NT® 4.0 或 Windows® 2000 以验证连接。如果此连接经验证后被接受，则允许该用户基于与 sysadmin 角色相关联的权限执行活动。

如果 Tom Brown 没有 Windows NT 4.0 或 Windows 2000 登录，那么他可能有 SQL Server 登录。在这种情况下，需要在"混合模式"下运行 SQL Server 实例，以使用户得以在 Windows NT 4.0、Windows 2000 或 SQL Server 登录下登录。可以将名为 tombro 的登录添加到 SQL Server，该登录独立于 Windows NT 4.0 或 Windows 2000 登录，然后可以将 tombro 添加到 sysadmin 角色。当该用户登录到 Windows NT 4.0 或 Windows 2000 并尝试与 SQL Server 实例连接时，必须指定 SQL Server 知道的 tombro 登录名和密码。


小型公司安全性示例

在复杂程度适中的安全系统中，多个人员在数据库中执行各种任务。例如，数据库管理员负责管理数据库环境，包括：创建数据库、表和安全帐户，进行备份，以及优化数据库。两个开发人员负责编写提供数据接口的客户端应用程序。经理根据数据库准备信息报表，因此需要具有对所有可用数据的访问权限。管理人员输入客户和销售数据，因此必须能够查看所有数据。

本示例的用户到活动映射要比单个用户数据库的略微复杂一些。

用户帐户 | 活动
LONDON\joetuck | 访问全部数据库。
LONDON\marysmith、LONDON\billb | 完全访问数据并且能够创建过程。
LONDON\managers | 完全访问全部数据。
LONDON\admins | 完全访问客户数据和销售信息。对所有其它数据进行只读访问。

安装本示例安全性的第一步是添加 LONDON\joetuck 的登录权限。于是，因为 LONDON\joetuck 登录要求完全的访问权限，所以下一步是将该用户添加到 sysadmin 角色中。

也应为开发人员添加登录权限。这样做的一种方法是授予个别开发人员（LONDON\marysmith 和 LONDON\billb）访问数据的权限。但是，如果另一个开发人员（或另外 10 个开发人员）加入到这个项目中，则必须分别为每个新人员添加权限，这是十分耗时的任务。更好的解决方案是添加名为 Developers 的 SQL Server 数据库角色，并给该角色授予访问数据和创建过程的权限。当 LONDON\marysmith、LONDON\billb 或其他新开发人员的帐户添加到 Developers 角色中时，他们的用户帐户将获得授予该角色的权限。

角色只适用于数据库级别。也就是说，角色解决控制数据库用户访问的问题。不必给 10 个开发人员分别授予数据库访问权限，而是可以创建一个角色，将 10 个开发人员添加到该角色，然后给该角色授予数据库访问权限。

最后，必须向 SQL Server 中添加 LONDON\managers 和 LONDON\admins 的登录权限。经理在连接时被识别为现有 Microsoft Windows NT® 4.0 和 Windows® 2000 组的成员，可以基于授予该组的权限来执行活动。对于 LONDON\admins 也如此。


公司环境安全性示例

在大型公司安全系统中，由执行特定的排它任务的用户构成了复杂的网络。

每个人负责数据库应用程序的各个方面。少数几个人负责数据库和表的创建，但禁止他们看到其合作者的相关敏感人事信息（有时甚至包括他们自己）。有一个夜间值班小组对数据进行备份，但这些工作人员并不需要看到数据，也不需要创建表和数据库。人事部门必须有访问一般职员信息的权限，并且人事部门中少数几个挑选出的个人是公司中唯一对保密和敏感职员信息有访问权限的人。另外还有客户服务职员，他们需要应客户的请求查看产品说明，但不做更改。

本示例的用户到活动映射相当复杂。

用户帐户 | 活动
LONDON\annej | 访问全部数据库
LONDON\dbadmins | 创建数据库
LONDON\dboperations | 进行夜间备份
LONDON\personnel | 对一般职员数据有完全访问权
LONDON\mikebo、LONDON\marym、LONDON\billsm | 对保密数据有完全访问权限
LONDON\custservice | 对产品信息有只读访问权限

必须授予 LONDON\annej 用户帐户登录到 Microsoft® SQL Server™ 的权限并将该用户添加到 sysadmin 角色，因为 sysadmin 角色具有对整个服务器的完整权限。必须将 LONDON\dbadmins Microsoft Windows NT® 4.0 和 Windows® 2000 组用户帐户添加到 SQL Server 中，并授予其创建数据库的权限。另外还应添加 LONDON\operations Windows NT 4.0 组，并只授予其 BACKUP DATABASE 权限以允许他们执行备份。

应添加 LONDON\personnel Windows NT 4.0 和 Windows 2000 组，并授予其只能查看 employees 表中非敏感列的权限，以及查看其它表的权限。

用户 LONDON\mikebo、LONDON\marym 和 LONDON\billsm 都是 LONDON\personnel Windows NT 4.0 组的成员，所以他们已有做大部分工作所需的权限。但是，他们还需要对敏感职员信息列的特殊访问权限。若要满足这种需求，可以在 SQL Server 中创建称为 PersonnelSecure 的数据库角色，并授予其查看敏感职员信息所需的权限。单个用户在添加到该角色后就获得在 SQL Server 中的特殊权限。或者，直接向其用户帐户添加特殊权限。

最后一步是在 SQL Server 中添加 LONDON\custservice Windows NT 4.0 组的帐户，并授予其查看产品信息的权限。


安全级别

在 Microsoft® SQL Server™ 中工作时，用户要经过两个安全性阶段：身份验证和授权（权限验证）。授权阶段使用登录帐户标识用户并只验证用户连接 SQL Server 实例的能力。如果身份验证成功，用户即可连接到 SQL Server 实例。然后用户需要访问服务器上数据库的权限，为此需授予每个数据库中映射到用户登录的帐户访问权限。权限验证阶段控制用户在 SQL Server 数据库中所允许进行的活动。


身份验证模式

Microsoft® SQL Server™ 可以在两种安全（身份验证）模式之一下工作：

  • Windows 身份验证模式（Windows 身份验证）

    Windows 身份验证模式使用户得以通过 Microsoft Windows NT® 4.0 或 Windows® 2000 用户帐户进行连接。

  • 混合模式（Windows 身份验证和 SQL Server 身份验证）

    混合模式使用户得以使用 Windows 身份验证或 SQL Server 身份验证与 SQL Server 实例连接。在 Windows 身份验证模式或混合模式下，通过 Windows NT 4.0 或 Windows 2000 用户帐户连接的用户可以使用信任连接。

    提供 SQL Server 身份验证是为了向后兼容。例如，如果创建单个 Windows 2000 组并向该组添加所需的所有用户，则需要授予 Windows 2000 组登录到 SQL Server 的权限以及对任何必需数据库的访问权限。

Windows 身份验证

当用户通过 Windows NT 4.0 或 Windows 2000 用户帐户进行连接时，SQL Server 通过回叫 Windows NT 4.0 或 Windows 2000 以获得信息，重新验证帐户名和密码。

SQL Server 通过使用网络用户的安全特性控制登录访问，以实现与 Windows NT 4.0 或 Windows 2000 的登录安全集成。用户的网络安全特性在网络登录时建立，并通过 Windows 域控制器进行验证。当网络用户尝试连接时，SQL Server 使用基于 Windows 的功能确定经过验证的网络用户名。SQL Server 于是验证此人是否是如其所说的那个人，然后只基于网络用户名允许或拒绝登录访问，而不要求单独的登录名和密码。

登录安全集成在 SQL Server 中任何受支持的网络协议上运行。

说明 如果用户试图通过提供空白登录名称连接到 SQL Server 的实例，SQL Server 将使用 Windows 身份验证。此外，如果用户试图使用特定的登录连接到配置为 Windows 身份验证模式的 SQL Server 实例，则将忽略该登录并使用 Windows 身份验证。

与 SQL Server 身份验证相比，Windows 身份验证有某些优点，主要是由于它与 Windows NT 4.0 和 Windows 2000 安全系统的集成。Windows NT 4.0 和 Windows 2000 安全系统提供更多的功能，如安全验证和密码加密、审核、密码过期、最短密码长度，以及在多次登录请求无效后锁定帐户。

由于 Windows NT 4.0 和 Windows 2000 用户和组只由 Windows NT 4.0 或 Windows 2000 维护，因此当用户进行连接时，SQL Server 将读取有关该用户在组中的成员资格信息。如果对已连接用户的可访问权限进行更改，则当用户下次连接到 SQL Server 实例或登录到 Windows NT 4.0 或 Windows 2000 时（取决于更改的类型），这些更改会生效。

说明 当 SQL Server 实例在 Windows 98 或 Microsoft Windows Millennium 版上运行时，Windows 身份验证模式不可用。

SQL Server 身份验证

当用户用指定的登录名称和密码从非信任连接进行连接时，SQL Server 通过检查是否已设置 SQL Server 登录帐户，以及指定的密码是否与以前记录的密码匹配，自己进行身份验证。如果 SQL Server 未设置登录帐户，则身份验证将失败，而且用户收到错误信息。

提供 SQL Server 身份验证是为了向后兼容性，因为为 SQL Server 7.0 版或更早的版本编写的应用程序可能要求使用 SQL Server 登录和密码。另外，当 SQL Server 实例在 Windows 98 上运行时，必须使用 SQL Server 身份验证，因为在 Windows 98 上不支持 Windows 身份验证模式。因此，SQL Server 在 Windows 98 上运行时使用混合模式（但只支持 SQL Server 身份验证）。

应用程序开发人员和数据库用户也许更喜欢 SQL Server 身份验证，因为他们熟悉登录和密码功能。对于连接到 Windows NT 4.0 和 Windows 2000 客户端以外的其它客户端，可能也必须使用 SQL Server 身份验证。

说明 当使用命名管道连接到在 Windows NT 4.0 或 Windows 2000 上运行的 SQL Server 实例时，用户必须有连接到 Windows NT 命名管道 IPC \\<computername>\IPC$ 的权限。如果用户没有连接权限，则不能使用命名管道连接到 SQL Server 实例，除非计算机上的 Windows NT 4.0 或 Windows 2000 guest 帐户已启用（默认情况下禁用），或者给用户帐户授予"从网络访问该计算机"的权限。

设置 Windows 身份验证模式安全性

企业管理器

企业管理器

SQL-DMO

设置混合模式安全性

企业管理器

企业管理器

SQL-DMO

请参见

向后兼容性


安全帐户委托

安全帐户委托是指连接到多个服务器的能力，以及随着每个服务器更改，保留原始客户端的身份验证凭据的能力。例如，如果用户 (LONDON\joetuck) 连接到 ServerA，而 ServerA 又连接到 ServerB，则 ServerB 知道连接安全标识是 LONDON\joetuck。

若要使用委托，将要连接的所有服务器都必须运行 Microsoft® Windows® 2000，启用 Kerberos 支持，并且必须使用 Microsoft Active Directory™（Windows 2000 的目录服务）。必须如下指定 Active Directory 中的下列选项，委托才能正常工作：

  • 一定不要为请求委托的用户选择"帐户是敏感帐户，不能被委托"复选框。

  • 必须为 SQL Server 的服务帐户选择"帐户可以信任，可用来委托"复选框。

  • 必须为运行 Microsoft SQL Server™ 实例的服务器选择"计算机可以信任，可用来委托"复选框。

若要使用安全帐户委托，SQL Server 必须有：

  • Windows 2000 帐户域管理员指派的服务准则名 (SPN)。

    必须在特定的计算机上将 SPN 指派给 SQL Server 服务的服务帐户。委托强制相互间的身份验证。SPN 证实 Windows 2000 帐户域管理员以特定的套接字地址在特定的服务器上验证了 SQL Server。可以使域管理员通过 Windows 2000 资源工具包使用 setspn 实用工具为 SQL Server 建立 SPN。

    若要为 SQL Server 创建 SPN，请在命令提示符下输入下列代码：

    setspn -A MSSQLSvc/Host:port serviceaccount

    例如：

    setspn -A MSSQLSvc/server1.redmond.microsoft.com sqlaccount

    有关 setspn 实用工具的更多信息，请参见 Windows 2000 文档。

在启用委托之前，请考虑下列事项：

  • 必须使用 TCP/IP。不能使用命名管道，因为 SPN 将特定的 TCP/IP 套接字作为目标。如果使用多个端口，必须在每个端口上都有一个 SPN。

  • 还可以通过在 LocalSystem 帐户下运行来启用委托。SQL Server 将在服务启动时自行注册并自动注册 SPN。该选项比使用域用户帐户启用委托容易。但是，当 SQL Server 关闭时，将取消为 LocalSystem 帐户注册的 SPN。

    说明 如果更改 SQL Server 的服务帐户，则需要删除任何以前的 SPN 并创建新的 SPN。

将 SPN 添加到 SQL Server

若要使用服务帐户 MYDOMAIN\sqlsvc 在名为"myserver.microsoft.com"的 SQL Server 实例上，为监听端口 1433 的实例添加 SPN，请在命令提示符下运行下列代码：

setspn -A MSSQLSvc/myserver.microsoft.com:1433 sqlsvc

不能使用 Netbios 名称。必须使用完全合法的 DSN 名称。不能指定服务帐户的域限定符。必须只使用帐户名。

若要更改和使用 LocalSystem 帐户，请在命令提示符下输入下列代码以删除先前注册的 SPN：

setspn -D MSSQLSvc/myserver.microsoft.com:1433 sqlsvc

有关安全帐户委托的更多信息，请参见 Windows 2000 文档。


权限验证

当验证了用户的身份并允许其登录到 Microsoft® SQL Server™ 实例之后，在用户必须访问的每个数据库中都要求单独的用户帐户。在每个数据库中都要求用户帐户可防止用户连接到 SQL Server 实例并访问服务器上的所有数据库。例如，如果一个服务器上含有 personnel 数据库和 recruiting 数据库，可以访问 recruiting 数据库但不能访问 personnel 数据库的用户将只有在 recruiting 数据库中创建的用户帐户。

每个数据库中的用户帐户都用于为该数据库中的对象（表、视图和存储过程等）应用安全权限。可从 Microsoft Windows NT® 4.0 和 Windows® 2000 用户帐户、用户所属的 Windows NT 4.0 和 Windows 2000 组或者 SQL Server 登录帐户映射该用户帐户。如果没有直接映射的帐户，就可以允许用户以 guest 帐户在数据库中工作，前提是该帐户存在。用户所准予的活动由获得数据库访问权限时所使用用户帐户的权限控制。

用户获得对数据库的访问权限后，SQL Server 即接受命令。用户在数据库中所进行的所有活动都通过 Transact-SQL 语句传到 SQL Server 中。当 SQL Server 实例接收到 Transact-SQL 语句时，将确定用户是否有在数据库中执行该语句的权限。如果用户没有执行语句的权限，或者没有访问该语句所使用对象的权限，则 SQL Server 将返回权限错误。


层次安全性

Microsoft SQL Server™ 中的安全环境通过用户的层次结构系统进行存储、管理和强制执行。为简化对很多用户的管理，SQL Server 使用组和角色：

  • 组是 Microsoft Windows NT® 4.0 和 Windows® 2000 内的管理单元，其中包含 Windows NT 4.0 和 Windows 2000 用户或其它组。

  • 角色是 SQL Server 内的管理单元，其中包含 SQL Server 登录、Windows NT 4.0 和 Windows 2000 登录、组或其它角色。

将用户分成组或角色可以更方便地同时对许多用户授予或拒绝权限。对组定义的安全设置适用于该组中的所有成员。当某个组是更高级别组中的成员时，除为该组自身或用户帐户定义的安全设置外，该组中的所有成员还将继承更高级别组的安全设置。

安全系统的结构化图表通常与公司的结构化图表一致。

这两个结构化图表在很大程度上是一致的，但是对于公司结构化层次结构，有一个不适用于该安全模型的共同规则：只向一个经理报告个别图表。这条规则意味着一个职员只能在层次结构模型的一个分支中，如关系图中所示。

数据库安全系统要求超过了这种一个管理人员的限制；职员属于安全组，该组不在公司的严格组织计划范围内。例如，管理人员在公司的每个分支中，并且无论组织分支如何，都要求安全性权限。为支持这种更广泛的模型，Windows NT 4.0、Windows 2000 和 SQL Server 中的安全系统允许在整个层次结构内定义组。所创建的 Administrative 组可以含有从 Corporate 组到 Payroll 组、公司每个分支的管理人员。

这种安全性组的层次结构系统简化了安全设置的管理。它允许安全设置集体应用到所有组成员，而不必对每个人重复定义。另外，层次结构模型还包含只应用到单个用户的安全设置。


创建安全帐户

每个用户必须通过登录帐户建立自己的连接能力（身份验证），以获得对 Microsoft® SQL Server™ 实例的访问权限。然后，该登录必须映射到用于控制在数据库中所执行的活动（权限验证）的 SQL Server 用户帐户。因此，单个登录映射到在该登录正在访问的每个数据库中创建的一个用户帐户。如果数据库中没有用户帐户，则即使用户能够连接到 SQL Server 实例，也无法访问该数据库。

登录创建在 Microsoft Windows NT® 4.0 或 Windows® 2000 中，而非 SQL Server 中。该登录随后被授予连接到 SQL Server 实例的权限。该登录在 SQL Server 内被授予访问权限。


安全规则

Microsoft® SQL Server™ 登录、用户、角色和密码可以包含 1 到 128 个字符，包括字母、符号和数字（例如，Andrew-Fuller、Margaret Peacock 或 13&#57abc）。因此，Microsoft Windows NT® 4.0、Windows 2000® 或 Microsoft Windows 98 用户名可以用作 SQL Server 登录。

但是，因为在 Transact-SQL 语句中经常使用登录、用户名、角色和密码，所以必须用双引号 (") 或方括号 ([ ]) 分隔某些符号。当 SQL Server 登录、用户、角色或密码为以下情况时，请在 Transact-SQL 语句中使用分隔符：

  • 含有空白字符或以空白字符开头。

  • 以字符 $ 或 @ 开头。

    说明 在将登录、用户、角色或密码输入 SQL Server 图形客户端工具（如 SQL Server 企业管理器）的文本框时，不必指定分隔符。

此外，SQL Server 登录、用户或角色不能：

  • 包含反斜线 (\) 字符，除非是引用现有的 Windows NT 4.0 或 Windows 2000 用户或组。反斜线将 Windows NT 4.0 或 Windows 2000 计算机名或域名与用户名分开。

  • 已存在于当前数据库中（或者仅就登录而言，不能存在于 master 中）。

  • 为 NULL 或空字符串 ("")。

请参见

分隔标识符


添加 Windows 用户或组

在 Microsoft® Windows NT® 4.0 和 Windows 2000 帐户（用户或组）可以访问数据库之前，必须给其授予连接到 Microsoft SQL Server™ 实例的权限。如果 Windows NT 4.0 或 Windows 2000 组的所有成员都将与 SQL Server 实例连接，则可以将组作为一个整体来授予权限。管理组的权限比管理个别用户的权限容易得多。如果不能给该组集体授予权限，则可以分别给每个 Windows NT 4.0 或 Windows 2000 用户授予连接到 SQL Server 实例的权限。

用户

当授予 Windows NT 4.0 或 Windows 2000 用户连接到 SQL Server 实例的权限时，请指定用户所属的 Windows NT 4.0 或 Windows 2000 域名或计算机名，然后依次输入反斜线和用户名。例如，若要给 Windows NT 4.0 或 Windows 2000 用户 Andrew 授予访问权限，请在 Windows NT 4.0 或 Windows 2000 域 LONDON 中，将 LONDON\Andrew 指定为用户名。

本地组和全局组

有多种类型的 Windows NT 4.0 和 Windows 2000 组，包括全局组和本地组：

  • 全局组包含来自 Windows NT 4.0 或 Windows 2000 域中的用户帐户，全局组就创建在该域中。全局组不能包含来自其它域的其它组或用户，并且不能在运行 Microsoft Windows NT 4.0 Workstation 或 Windows 2000 Professional 的计算机上创建。

  • 本地组中可以含有来自域的用户帐户和全局组，该域必须是创建本地组的域或任何信任域。本地组中不能含有其它本地组。

另外，Windows NT 4.0 和 Windows 2000 包含预定义的内置本地组，如 Administrators、Users 和 Guests。

当授予 Windows NT 4.0 或 Windows 2000 本地组或全局组连接到 SQL Server 实例的权限时，请指定在其上定义该组的域名或计算机名，然后依次输入反斜线和组名。例如，若要给 SQL_Users 全局组授予访问权限，请在 LONDON 域中指定 LONDON\SQL_Users 作为组名。

若要授予访问 Windows NT 4.0 或 Windows 2000 内置本地组的权限，请指定 BUILTIN 代替域名或计算机名。但是，若要给内置 Windows NT 4.0 和 Windows 2000 本地组 Administrators 授予访问权限，请指定 BUILTIN\Administrators 作为组名。

有关这些帐户的更多信息，请参见 Windows NT 4.0 和 Windows 2000 文档。

授予 Windows 用户或组登录访问 SQL Server 的权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO


授权 Windows NT 的用户或组访问数据库

SQL Server 安装帮助

授予 Windows 用户或组访问数据库的权限

若要获得对 Microsoft® SQL Server™ 数据库的访问权限，Microsoft Windows NT® 4.0 和 Windows® 2000 用户或组在需要访问的每个数据库中，必须有相应的用户帐户。此外，必须对该用户帐户应用权限。

虽有可能，但是如果 Windows NT 4.0 和 Windows 2000 组中的所有成员都执行相同的活动，则不必在数据库中分别为组中的每个 Windows NT 4.0 和 Windows 2000 用户添加用户帐户。可以为组而不是为每个成员添加帐户。当组成员需要在数据库中工作时，是通过他们在 Windows NT 4.0 和 Windows 2000 组中的成员资格对其授权的；组中没有用于个别用户的特定帐户。例如，Windows NT 4.0 和 Windows 2000 组 London\Managers 包含 Windows NT 4.0 和 Windows 2000 用户 London\JoeB。SQL Server 系统管理员只向 London\Managers 授予登录访问权限。数据库 Accounts 的所有者只对 London\Managers 授予访问 Accounts 的权限。虽然没有对 London\JoeB 显式授予连接到 SQL Server 实例或访问 Accounts 的权限，但由于其在 London\Managers 中的成员资格，他可以连接到 SQL Server 实例并访问 Accounts。

只有当个别 Windows NT 4.0 和 Windows 2000 用户执行与任何 Windows NT 4.0 或 Windows 2000 组中其他成员不同的活动时（例如特殊的数据库管理任务），才需要将该用户添加到数据库中。

说明 那些通过自身在 Windows NT 4.0 或 Windows 2000 组中的成员资格获准访问 SQL Server 实例的用户，在系统表中没有针对他们个人 Windows NT 4.0 或 Windows 2000 用户帐户的项。但是，如果他们在 SQL Server 数据库中创建对象（如表或存储过程），则会针对他们的个人NT 用户帐户而创建一项。

授予 Windows 用户或组访问数据库的权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO


添加 SQL Server 登录

在下列情况下，通过指定的登录名和密码而不是 Microsoft Windows NT® 4.0 或 Windows® 2000 用户或组帐户来添加允许连接的 Microsoft® SQL Server™ 登录帐户：

  • 将 SQL Server 配置为在混合模式下运行。

  • SQL Server 实例正在 Microsoft Windows 98 上运行。

对于下列情况必须添加 SQL Server 登录：

  • 为与包含从其它数据库供应商导入的数据的应用程序兼容。

  • 为没有 Windows NT 4.0 或 Windows 2000 帐户的一般用户而设计的应用程序。

  • 连接到在 Windows 98 上运行的 SQL Server 实例，因为 Windows 身份验证在 Windows 98 上不可用。

添加 SQL Server 登录

Transact-SQL

企业管理器

企业管理器

SQL-DMO


系统管理员 (sa) 登录

系统管理员 (sa) 是为向后兼容而提供的特殊登录。默认情况下，它指派给固定服务器角色 sysadmin，并不能进行更改。虽然 sa 是内置的管理员登录，但不应例行公事地使用它。相反，应使系统管理员成为 sysadmin 固定服务器角色的成员，并让他们使用自己的登录来登录。只有当没有其它方法登录到 Microsoft® SQL Server™ 实例（例如，当其它系统管理员不可用或忘记了密码）时才使用 sa。

说明 在安装 SQL Server 时，如果请求混合模式身份验证，则 SQL Server 安装程序将提示更改 sa 登录密码。建议立即指派密码以防未经授权地使用 sa 登录访问 SQL Server 实例。

请参见

指派 sa 密码


授权 SQL Server 登录访问数据库

对于每个要求访问数据库的 SQL Server 登录，将其 Microsoft® SQL Server™ 用户帐户添加到每个数据库。如果用户未在数据库中创建，则 SQL Server 登录就无法访问数据库。

若要授权某个 SQL Server 登录访问数据库的权限，则该 SQL Server 登录必须已经存在。而且，必须逐个授权 SQL Server 登录访问数据库。

授权 SQL Server 登录访问数据库

Transact-SQL

企业管理器

企业管理器

SQL-DMO


数据库所有者 (dbo)

dbo 是具有在数据库中执行所有活动的暗示性权限的用户。将固定服务器角色 sysadmin 的任何成员都映射到每个数据库内称为 dbo 的一个特殊用户上。另外，由固定服务器角色 sysadmin 的任何成员创建的任何对象都自动属于 dbo。

例如，如果用户 Andrew 是固定服务器角色 sysadmin 的成员，并创建表 T1，则表 T1 属于 dbo，并以 dbo.T1 而不是 Andrew.T1 进行限定。相反，如果 Andrew 不是固定服务器角色 sysadmin 的成员，而只是固定数据库角色 db_owner 的成员，并创建表 T1，则 T1 属于 Andrew，并限定为 Andrew.T1。该表属于 Andrew，因为该成员没有将表限定为 dbo.T1。

无法删除 dbo 用户，且此用户始终出现在每个数据库中。

只有由 sysadmin 固定服务器角色成员（或 dbo 用户）创建的对象才属于 dbo。由任何其他也不是 syadmin 固定服务器角色成员的用户（包括 db_owner 固定数据库角色成员）创建的对象：

  • 属于创建该对象的用户，而不是 dbo。

  • 用创建该对象的用户名限定。

请参见

分隔标识符

sp_changedbowner


数据库对象所有者

创建数据库对象（表、索引、视图、触发器、函数或存储过程）的用户称为数据库对象所有者。创建数据库对象的权限必须由数据库所有者或系统管理员授予。但是，在授予数据库对象这些权限后，数据库对象所有者就可以创建对象并授予其他用户使用该对象的权限。

数据库对象所有者没有特殊的登录 ID 或密码。对象创建者被隐性授予数据库的所有权限，但其他用户必须被显式授予权限后才能访问该对象。

引用数据库对象

当用户访问另一个用户所创建的对象时，应使用对象所有者的名称对该对象进行限定；否则，Microsoft® SQL Server™ 可能不知道使用哪个对象，因为不同的用户可能拥有许多同名的对象。如果引用对象时不是用对象所有者进行限定，例如使用 my_table 而不是 owner.my_table，则 SQL Server 将按下列顺序在数据库中查找对象：

  1. 为当前用户所拥有。

  2. 为 dbo 所拥有。

如果找不到对象，就会返回错误信息。

例如，用户 John 是固定数据库角色 db_owner 的成员，但不是固定服务器角色 sysadmin 的成员，他创建表 T1。除 John 外的所有想访问 T1 的用户必须用用户名 John 限定 T1。如果未用用户名 John 限定 T1，则 SQL Server 将首先查找由当前用户所拥有的、名为 T1 的表，然后查找由 dbo 所拥有的同名表。如果当前用户和 dbo 不拥有名为 T1 的表，就会返回错误信息。如果当前用户或 dbo 拥有另一个名为 T1的表，则使用该 T1 表而不是 John.T1。

如果必须从数据库中删除数据库对象所有者，则必须首先除去其所拥有的对象，或者必须将其所有权转让给另一个用户。

说明 SQL Server 允许将角色或 Microsoft Windows NT® 4.0 或 Windows® 2000 组指定为对象所有者。例如，若要创建由 Windows NT 4.0 或 Windows 2000 组 LONDON\Users 所拥有的表 group_table，请将 [LONDON\Users].group_table 指定为合法表名。LONDON\Users 组中的所有成员都有 group_table 上的数据库对象所有者权限。

请参见

分隔标识符

sp_changeobjectowner


guest 用户

guest 用户帐户允许没有用户帐户的登录访问数据库。当满足下列所有条件时，登录采用 guest 用户的标识：

  • 登录有访问 Microsoft® SQL Server™ 实例的权限，但没有通过自己的用户帐户访问数据库的权限。

  • 数据库中含有 guest 用户帐户。

可以将权限应用到 guest 用户，就如同它是任何其它用户帐户一样。可以在除 master 和 tempdb 外（在这两个数据库中它必须始终存在）的所有数据库中添加或删除 guest 用户。默认情况下，新建的数据库中没有 guest 用户帐户。

例如，若要将 guest 用户帐户添加到名为 Accounts 的数据库中，请在 SQL 查询分析器中运行下列代码：

USE Accounts
GO
EXECUTE sp_grantdbaccess guest

授权 SQL Server 登录访问数据库

Transact-SQL

企业管理器

企业管理器

SQL-DMO


创建用户定义的 SQL Server 数据库角色

当一组用户需要在 SQL Server 中执行一组指定的活动且满足下列条件之一时，创建 Microsoft® SQL Server™ 数据库角色：

  • 没有适用的 Microsoft Windows NT® 4.0 或 Windows® 2000 组。

  • 没有管理 Windows NT 4.0 或 Windows 2000 用户帐户的权限。

说明 请避免角色的深层嵌套以免影响性能。

例如，一个公司可能成立慈善活动委员会，其中包括来自不同部门，来自组织中各种不同级别的职员。这些职员需要访问数据库中特殊的项目表。没有只包括这些职员的现有 Windows NT 4.0 或 Windows 2000 组，而且没有其它理由在 Windows NT 4.0 或 Windows 2000 中创建这样一个组。可以为此项目创建一个自定义 SQL Server 数据库角色 CharityEvent，并将个别的 Windows NT 和 Windows 2000 用户添加到此数据库角色。当应用权限后，数据库角色中的用户便获得对表的访问权限。其它数据库活动的权限不受影响，只有 CharityEvent 用户可以使用该项目表。

SQL Server 角色存在于一个数据库中，不能跨多个数据库。

使用数据库角色的好处包括：

  • 对于任何用户，都可以随时让多个数据库角色处于活动状态。

  • 如果所有用户、组和角色都在当前数据库中，则 SQL Server 角色可以包含 Windows NT 4.0 或 Windows 2000 组和用户，以及 SQL Server 用户和其它角色。

  • 在同一数据库中，一个用户可属于多个角色。

  • 提供了可伸缩模型以便在数据库中设置正确的安全级别。

说明 数据库角色要么在创建角色时由明确指定为所有者的用户所拥有，要么在未指定所有者时为创建角色的用户所拥有。角色的所有者决定可以在角色中添加或删除谁。但是，因为角色不是数据库对象，不能在同一数据库中创建由不同用户所拥有的多个同名角色。

创建 SQL Server 数据库角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO

请参见

SQL Server 向后兼容性详细信息


将成员添加到 SQL Server 数据库角色

当在 Microsoft® SQL Server™ 中添加新用户帐户，或者更改现有用户的权限时，可以向 SQL Server 数据库角色添加此用户，而不要直接将权限应用到帐户上。对于用户数目众多或安全系统复杂的数据库，角色可以简化其安全管理。

SQL Server 用户、Microsoft Windows NT® 4.0 或 Windows® 2000 用户和组以及其它 SQL Server 数据库角色都可以添加为角色成员。因为角色仅限于在单个数据库中使用，而且不能从一个数据库添加到另一个，所以可以添加只能被那个数据库识别的用户、组和角色。

说明 当将在数据库内没有用户帐户的 Windows NT 4.0 或 Windows 2000 登录添加到 SQL Server 数据库角色时，SQL Server 自动在数据库内创建用户帐户，即使 Windows NT 4.0 或 Windows 2000 登录原本无法访问该数据库。

用户帐户可以是同一数据库中任意多个角色的成员，并且可以持有每个角色的适当权限。例如，一个 SQL Server 用户在同一数据库中可以既是 admin 角色的成员，又是 users 角色的成员，并且每个角色有不同的权限。授予多个角色成员的对象权限是这些角色的累计权限。但是，一个角色中的拒绝权限优先于在另一个角色中授予的同一权限。例如，admin 角色可能授权访问某个表，但是 users 角色拒绝对该表的访问。属于两个角色的成员将被拒绝访问该表，因为被拒绝的访问权限更具限制性并具有优先权。

要添加到用户定义数据库角色中的用户，必须已经具有访问含有用户定义角色的数据库的权限。

将成员添加到 SQL Server 数据库角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO


将成员添加到预定义角色中

Microsoft® SQL Server™ 中的安全机制包括几个具有暗示性权限的预定义角色，这些暗示性权限不能授予其它用户帐户。如果有用户需要这些权限，则必须将其帐户添加到这些预定义角色。两类预定义角色为固定服务器角色和固定数据库角色。

固定服务器角色

无法创建的固定服务器角色在服务器级别上定义，并存在于各数据库的外部。若要将用户添加到固定服务器角色，用户必须具有 SQL Server 或 Microsoft Windows NT® 4.0 或 Windows® 2000 登录帐户。固定服务器角色的任何成员都可以添加其它登录。

重要 身为 BUILTIN\Administrators 组成员的 Windows NT 4.0 或 Windows 2000 用户自动成为 sysadmin 固定服务器角色成员。

下表描述固定服务器角色。

固定服务器角色 | 描述
sysadmin | 在 SQL Server 中进行任何活动。该角色的权限跨越所有其它固定服务器角色。
serveradmin | 配置服务器范围的设置。
setupadmin | 添加和删除链接服务器，并执行某些系统存储过程（如 sp_serveroption）。
securityadmin | 管理服务器登录。
processadmin | 管理在 SQL Server 实例中运行的进程。
dbcreator | 创建和改变数据库。
diskadmin | 管理磁盘文件。
bulkadmin | 执行 BULK INSERT 语句。

对 sysadmin 角色成员以外的所有用户，securityadmin 具有执行 sp_password 存储过程的权限。

bulkadmin 固定服务器角色具有执行 BULK INSERT 语句的权限。与所有指定固定服务器角色成员一样，bulkadmin 角色成员也可以将其它登录添加到角色。但是，由于与执行 BULK INSERT 语句相关联的安全含义（BULK INSERT 语句要求对运行服务器的网络和计算机上的任何数据具有读权限），bulkadmin 角色成员授予其它角色成员权限可能并不理想。bulkadmin 角色为 sysadmin 固定服务器角色成员提供了一种方法，可以委托要求执行 BULK INSERT 语句的任务，而不用授予用户 sysadmin 权限。允许 bulkadmin 角色成员执行 BULK INSERT 语句，但是这些成员对要插入数据的表仍必须具有 INSERT 权限。

向固定服务器角色添加成员

Transact-SQL

企业管理器

企业管理器

SQL-DMO

固定数据库角色

可以创建的固定数据库角色在数据库级别上定义，并存在于每个数据库中。可将任何有效的用户帐户（Windows NT 4.0 或 Windows 2000 用户或组，或 SQL Server 用户或角色）添加为固定数据库角色成员。每个成员都获得应用于固定数据库角色的权限。固定数据库角色的任何成员都可将其他用户添加到角色中。

下表描述固定数据库角色。

固定数据库角色 | 描述
db_owner | 进行所有数据库角色的活动，以及数据库中的其它维护和配置活动。该角色的权限跨越所有其它固定数据库角色。
db_accessadmin | 在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。
db_datareader | 查看来自数据库中所有用户表的全部数据。
db_datawriter | 添加、更改或删除来自数据库中所有用户表的数据。
db_ddladmin | 添加、修改或除去数据库中的对象（运行所有 DDL）。
db_securityadmin | 管理 SQL Server 2000 数据库角色的角色和成员，并管理数据库中的语句和对象权限。
db_backupoperator | 有备份数据库的权限。
db_denydatareader | 拒绝选择数据库数据的权限。
db_denydatawriter | 拒绝更改数据库数据的权限。

向 SQL Server（固定）数据库角色添加成员

Transact-SQL

企业管理器

企业管理器

SQL-DMO


public 角色

public 角色是一个特殊的数据库角色，每个数据库用户都属于它。public 角色：

  • 捕获数据库中用户的所有默认权限。

  • 无法将用户、组或角色指派给它，因为默认情况下它们即属于该角色。

  • 含在每个数据库中，包括 master、msdb、tempdb、model 和所有用户数据库。

  • 无法除去。


使用创建登录向导

虽然授权登录访问 Microsoft® SQL Server™ 和数据库所需的步骤可以分开执行，但创建登录向导可简化该过程。创建登录向导使您得以：

  • 选择用于连接 SQL Server 实例的身份验证模式（Windows 身份验证模式或混合模式）。

  • 添加 Microsoft Windows NT® 4.0、Windows® 2000 或 SQL Server 登录。

  • 将 Windows NT 4.0、Windows 2000 或 SQL Server 用户添加到固定服务器角色。

  • 将 Windows NT 4.0、Windows 2000 或 SQL Server 用户添加到一个或多个数据库，从而授权用户访问这些数据库。

通过创建登录向导向用户授予 SQL Server 登录访问权限

企业管理器


管理安全帐户

将安全帐户添加到 Microsoft® SQL Server™ 之后，可以随着业务需要的变化进行修改。通常包括查看、修改和删除数据库中的安全帐户以满足业务需要。


查看登录

查看 Microsoft® SQL Server™ 登录可以帮助确定用户或 Microsoft Windows NT® 4.0 或 Windows® 2000 组是否具有连接到 SQL Server 实例的权限，以及识别登录可以访问哪些数据库。另外，在删除登录之前先查看该登录，了解必须删除哪些数据库用户；必须先删除相关的用户，然后才能删除登录。

可以查看：

  • 每个数据库中与该登录相关的用户。

  • 当用户初次连接到 SQL Server 实例时该登录所使用的默认数据库和语言。

  • Windows NT 4.0 或 Windows 2000 安全标识符 (SID)。

说明 除非密码为 NULL，否则不可能查看任何登录的密码。在密码存储到 SQL Server 时会对其进行加密。

查看 SQL Server 登录或 Windows 用户或组

Transact-SQL

企业管理器

企业管理器

SQL-DMO


修改登录

在创建登录后，有时需要更改密码、默认数据库或默认语言。例如，用户可能忘了自己的密码，出于安全考虑而想更改密码，需要定期使用另一个数据库，或者需要查看以另一种语言显示的消息。

说明 如果用户忘记了密码，sysadmin 或 securityadmin 固定服务器角色成员可以在不知道原密码的情况下更改密码。如果用户忘记了密码，则无法更改它。securityadmin 角色成员无法更改 sysadmin 角色成员的密码。

更改 SQL Server 登录的密码

Transact-SQL

企业管理器

企业管理器

SQL-DMO

更改登录的默认数据库

Transact-SQL

企业管理器

企业管理器

SQL-DMO

更改登录的默认语言

Transact-SQL

企业管理器

企业管理器

SQL-DMO


删除登录和用户

停用安全帐户（例如当某个职员离开了公司时）的过程与添加新用户的过程相似。首先删除用户的 Windows NT 4.0 或 Windows 2000 用户帐户，即可更新 Microsoft® Windows NT® 4.0 或 Windows® 2000 中的安全机制。如果该用户有 Microsoft SQL Server™ 用户帐户，则应将该帐户连同任何为该用户专门定义的 SQL Server 数据库角色一起从 SQL Server 中删除。最后，删除任何 SQL Server 登录。

从 SQL Server 数据库中删除 SQL Server 用户、Windows NT 4.0 或 Windows 2000 用户或组时，将自动删除为该用户或组定义的权限，并防止该用户通过原安全帐户使用数据库。权限的删除不必逐个进行。但是，如果某个用户当前拥有数据库中的对象（表、过程或视图），就不可能从 SQL Server 中删除该用户。如果该用户拥有对象，则或者在删除该用户前先除去这些对象，或者通过使用 sp_changeobjectowner 系统存储过程将所有权转让给另一个已有用户。

删除用户并不会自动删除登录，因此不会防止用户连接到 SQL Server 实例。在被删除后，用户只可以通过 guest 帐户登录到数据库并在其相应权限下进行活动。若要防止用户连接到 SQL Server 实例，请删除该用户的登录。

如果已设置了链接服务器登录但以后不再需要它了，则删除它以防止未经授权而对链接服务器进行访问，并使安全系统尽量简单。

从数据库中删除用户或组

Transact-SQL

企业管理器

企业管理器

SQL-DMO

删除 SQL Server 登录

Transact-SQL

企业管理器

企业管理器

SQL-DMO

从 SQL Server 中废除 Windows 用户或组登录访问

Transact-SQL

企业管理器

企业管理器

SQL-DMO

删除链接服务器登录

Transact-SQL

企业管理器

企业管理器

SQL-DMO

请参见

sp_changeobjectowner


拒绝 Windows NT 帐户的登录访问

如果 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户所属的 Windows NT 4.0 或 Windows 2000 组在 Microsoft SQL Server™ 中有登录帐户，则允许用户通过组登录连接。但是，有些时候可能需要防止这些用户或组连接到 SQL Server 实例。可以拒绝任何 Windows NT 4.0 或 Windows 2000 用户或组的登录访问。如果用户帐户或用户所属组的登录访问被拒绝，这些用户就无法连接到 SQL Server 实例。

拒绝 Windows NT 用户或组的登录访问

Transact-SQL

企业管理器

企业管理器

SQL-DMO


查看角色

创建和使用数据库时，可能需要查找有关 Microsoft® SQL Server™ 数据库角色或固定服务器角色的信息。例如，可能需要查看在当前数据库中有哪些角色，或者列出固定服务器角色。

查看当前数据库中定义的角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO

查看当前数据库中定义的固定数据库角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO

查看固定服务器角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO


查看和修改角色成员资格

在使用数据库时，可能需要列出数据库角色或固定服务器角色的成员。或者，当 Microsoft® SQL Server™ 用户不再需要自己所属的角色（包括用户定义角色、固定数据库角色或固定服务器角色）所具有的权限时，可能希望从角色中删除该用户，以使安全系统尽可能保持简单。

查看数据库角色的成员

Transact-SQL

企业管理器

企业管理器

SQL-DMO

从数据库角色中删除用户帐户

Transact-SQL

企业管理器

企业管理器

SQL-DMO

查看固定服务器角色的成员

Transact-SQL

企业管理器

企业管理器

SQL-DMO

从固定服务器角色中删除登录

Transact-SQL

企业管理器

企业管理器

SQL-DMO


删除 SQL Server 数据库角色

不断变化的数据库安全要求可能导致 Microsoft® SQL Server™ 数据库角色过时。当已删除所有用户并肯定将来不再需要某些角色及其权限时，应删除这些角色。如果新用户可能需要此权限，则可以保存空角色。但是，从管理角度讲，处理没有多余的安全角色引起混乱的安全系统容易得多。安全系统越简单，SQL Server 运行速度就越快，但是在角色的数目不是极大时这不是问题。

说明 固定服务器角色或固定数据库角色不能删除。

删除 SQL Server 角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO


查看数据库用户

查看数据库中的 Microsoft® SQL Server™ 用户帐户可以显示：

  • 用户是哪个角色的成员。

  • 与该用户关联的 SQL Server 登录。

  • 默认数据库。

使用此信息有助于理解用户如何与数据库的安全系统相适应。

查看数据库用户

Transact-SQL

企业管理器

企业管理器

SQL-DMO

查看对当前数据库有访问权限的 Windows 组

Transact-SQL

SQL-DMO


管理权限

当用户连接到 Microsoft® SQL Server™ 实例后，他们可以执行的活动由授予以下帐户的权限确定：

  • 用户的安全帐户。

  • 用户的安全帐户所属的 Microsoft Windows NT® 4.0 或 Windows® 2000 组或角色层次结构。

用户若要进行任何涉及更改数据库定义或访问数据的活动，则必须有相应的权限。

管理权限包括授予或废除执行以下活动的用户权限：

  • 处理数据和执行过程（对象权限）。

  • 创建数据库或数据库中的项目（语句权限）。

  • 利用授予预定义角色的权限（暗示性权限）。
对象权限

处理数据或执行过程时需要称为对象权限的权限类别：

  • SELECT、INSERT、UPDATE 和 DELETE 语句权限，它们可以应用到整个表或视图中。

  • SELECT 和 UPDATE 语句权限，它们可以有选择性地应用到表或视图中的单个列上。

  • SELECT 权限，它们可以应用到用户定义函数。

  • INSERT 和 DELETE 语句权限，它们会影响整行，因此只可以应用到表或视图中，而不能应用到单个列上。

  • EXECUTE 语句权限，它们可以影响存储过程和函数。
语句权限

创建数据库或数据库中的项（如表或存储过程）所涉及的活动要求另一类称为语句权限的权限。例如，如果用户必须能够在数据库中创建表，则应该向该用户授予 CREATE TABLE 语句权限。语句权限（如 CREATE DATABASE）适用于语句自身，而不适用于数据库中定义的特定对象。

语句权限有：

  • BACKUP DATABASE

  • BACKUP LOG

  • CREATE DATABASE

  • CREATE DEFAULT

  • CREATE FUNCTION

  • CREATE PROCEDURE

  • CREATE RULE

  • CREATE TABLE

  • CREATE VIEW
暗示性权限

暗示性权限控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。例如，sysadmin 固定服务器角色成员自动继承在 SQL Server 安装中进行操作或查看的全部权限。

数据库对象所有者还有暗示性权限，可以对所拥有的对象执行一切活动。例如，拥有表的用户可以查看、添加或删除数据，更改表定义，或控制允许其他用户对表进行操作的权限。

请参见

BACKUP DATABASE

BACKUP LOG

CREATE DATABASE

CREATE DEFAULT

CREATE FUNCTION

CREATE PROCEDURE

CREATE RULE

CREATE TABLE

CREATE VIEW


授予权限

授予允许用户帐户执行下列活动的语句权限和对象权限：

  • 在当前数据库中执行活动或处理数据。

  • 限制它们执行某些活动或获取某些信息，这些活动或信息都不是其预期功能的一部分。

    例如，您可能想对 personnel 角色的所有成员授予 payroll 表上的 SELECT 对象权限，以允许 personnel 的所有成员查看 payroll。数月过后，您也许无意中听到 personnel 的成员在谈论管理人员的薪水，这一消息本不想让所有 personnel 成员都看到。这种情况下，可向 personnel 授予 payroll 中除 salary 列外的所有列的 SELECT 访问权限。

说明 可以只向当前数据库中的用户帐户授予当前数据库中的对象的权限。如果用户需要另一个数据库中的对象的权限，请在该数据库中创建用户帐户，或者授权用户帐户访问该数据库以及当前数据库。系统存储过程例外，因为 EXECUTE 权限已授予 public 角色，允许每个人执行。但是，在发出 EXECUTE 后，系统存储过程会检查用户的角色成员资格。如果该用户不是运行存储过程所需的固定服务器角色或固定数据库角色的成员，则存储过程不会继续。

通过授权允许访问（对象上）

Transact-SQL

企业管理器

企业管理器

SQL-DMO

向用户授予数据库中的语句权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO

向用户、组或角色授予多个对象的权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO

授予、拒绝或废除用户定义角色在多个对象上的权限

企业管理器


拒绝权限

Microsoft® SQL Server™ 允许 Microsoft Windows NT® 4.0 或 Windows® 2000 用户和组、SQL Server 用户和 SQL Server 数据库角色成为其它角色的成员。这就形成层次安全系统，允许权限通过多个级别的角色和成员而得以应用。但有时可能想限制某些用户或角色的权限。拒绝用户帐户上的权限：

  • 删除以前授予用户、组或角色的权限。

  • 停用从其它角色继承的权限。

  • 确保用户、组或角色将来不继承更高级别的组或角色的权限。

例如，可能需要向公司中的所有终身职员提供访问数据库中若干个表的权限，但分布于整个组织内的几个新职员例外，希望防止他们看到 CorporateSecrets 表。

可以为公司内的每个部门创建一个角色，并将所有职员都添加到相应的部门角色中。然后可以创建一个公司范围的 Corporate 角色，将每个单独的部门角色添加到其中，并授予查看表的权限。此时，公司中的每个职员都可以看到所有表，因为他们通过自己的部门角色从 Corporate 角色继承了权限。

若要有选择性地防止职员查看 CorporateSecrets，则请创建 Nonsecure 角色，将不应该看到该表的每个职员都添加到此角色中。当对 Nonsecure 拒绝查看 CorporateSecrets 的权限时，将从 Nonsecure 的所有成员中删除该访问权限，而公司中的其他职员不受影响。

另外，也可对单个用户拒绝权限。在上一个示例中，非本公司职员在参与数据库中的短期项目时可能有 Windows NT 4.0 或 Windows 2000 帐户。为此，可以拒绝这些人的个人用户帐户查看 CorporateSecrets 的权限，而无须创建 SQL Server 数据库角色。

说明 对于当前数据库中的对象，只可以在当前数据库中对用户帐户拒绝权限。

通过拒绝权限防止访问（在对象上）

Transact-SQL

企业管理器

企业管理器

SQL-DMO

拒绝用户在数据库中的语句权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO

拒绝用户、组或角色在多个对象上的权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO


废除权限

可以废除以前授予或拒绝的权限。废除类似于拒绝，因为二者都是在同一级别上删除已授予的权限。但是，废除权限是删除已授予的权限，并不妨碍用户、组或角色从更高级别继承已授予的权限。因此，如果废除用户查看表的权限，不一定能防止用户查看该表，因为已将查看该表的权限授予了用户所属的角色。

例如，从 HumanResources 角色中删除 Employees 表上的 SELECT 访问权限将废除该权限，从而使 HumanResources 不能再使用该表。如果 HumanResources 是 Administration 角色的成员。如果以后将 Employees 上的 SELECT 权限授予了 Administration，则 HumanResources 的成员可以通过 Administration 中的成员资格看到该表。但是，如果对 HumanResources 拒绝权限，则即使以后向 Administration 授予权限，HumanResources 也不会继承该权限，因为拒绝权限不能由另一级别上的权限撤消。

类似地，通过废除对权限的拒绝也可以删除已拒绝的权限。但是，如果用户在组或角色级别有其它已拒绝权限，则其访问权限仍被拒绝。

说明 对于当前数据库中的对象，只可以对当前数据库中的用户帐户废除权限。

废除对象上的权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO

废除用户在数据库中的语句权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO

废除用户、组或角色在多个对象上的权限

Transact-SQL

企业管理器

企业管理器

SQL-DMO


解决权限冲突

授予组或角色的权限由该组或角色的成员继承。虽然用户可能在一个级别上授予或废除权限，但如果这些权限与更高级别上的权限发生冲突（例如因角色成员资格引起冲突），则可能会禁止或允许用户访问对象。

拒绝

拒绝权限始终优先。在任何级别（用户、组或角色）的拒绝权限都拒绝该对象上的权限，无论该用户现有的权限是已授予权限还是已废除权限。例如，如果用户 John 为 sales 角色成员，而该角色被授予 customer 表上的 SELECT 权限，但 John 被显式拒绝 customer 表上的 SELECT 权限，则他不能再访问该表。类似地，如果 sales 角色被拒绝了对 customer 的访问权限，但 John 被授予访问权限，则其访问将被拒绝。

说明 Microsoft® SQL Server™ 总是首先处理被拒绝的权限。如果对 public 拒绝权限，则将禁止任何用户访问对象，包括发出 DENY 语句的用户。

废除

废除权限只删除所废除级别（用户、组或角色）上的已授予权限或已拒绝权限。而在另一级别（如包含该用户、组或角色的组或角色）上所授予或拒绝的同一权限仍然适用。例如，如果 sales 角色被授予 customer 表上的 SELECT 权限，而 John（sales 角色成员）被显式废除 customer 表上的 SELECT 权限，则 John 仍可以访问该表，因为他有 sales 角色的成员资格。若要防止 John 访问 customer 表，请执行下列操作之一：

  • 废除权限（假定没有在别处授予其它权限）。

  • 拒绝 sales 角色的权限（防止所有 sales 成员访问该表）。

  • 显式拒绝 John 在 customer 上的 SELECT 权限。
授权

授予权限删除所授予级别（用户、组或角色）上的已拒绝权限或已废除权限。而在另一级别（如包含该用户的组或角色）上所拒绝的同一权限仍然适用。但是，虽然在另一级别上所废除的同一权限仍然适用，但它并不阻止用户访问该对象。例如，如果 John 已被显式拒绝 customer 表的访问权限，sales 表被废除访问权限，然后向 John 显式授予 customer 上的访问权限，则他现在可以访问 customer，因为拒绝已被删除。对 sales 的废除权限和对 John 的授予权限相结合使得最后对 John 授予权限。

因此，用户得到的是对象上所授予、拒绝或废除的全部权限的并集，其中拒绝权限比另一级别上授予或撤消的同一权限优先。

下面的关系图显示三种权限管理活动如何影响用户帐户的权限状态。

数据库访问与对象访问

作为权限冲突的示例，假设 Microsoft Windows NT® 4.0 用户 LONDON\joe 属于 LONDON\clerks 和 LONDON\secretaries Windows 4.0 组。因为已授予 LONDON\clerks 组连接到 SQL Server 实例的权限，所以 LONDON\joe 可以登录到 SQL Server 实例。此外，LONDON\joe 可以访问 secrets 数据库，因为 LONDON\secretaries 组已被授予访问该数据库的权限。

说明 此时，LONDON\joe 在 SQL Server 系统表 sysusers 和 syslogins 中没有特定的条目。这些系统表中只含有 LONDON\clerks 和 LONDON\secretaries 组的条目。

LONDON\joe 在 secrets 数据库中创建表 joetable。此时，在 sysusers 表中为 LONDON\joe 创建新条目，指定其为对象所有者，但不授予其数据库访问权限。如果将 LONDON\joe 从 LONDON\secretaries 组中除去，他就不再能访问 secrets 数据库了，但仍拥有数据库中的对象 joetable。

请参见

添加 Windows NT 用户或组


用户定义函数的权限

函数是由一个或多个 Transact-SQL 语句组成的子程序，可用于封装代码以便重新使用。Microsoft® SQL Server™ 2000 使用户得以创建自己的用户定义函数。

通过下列语句管理用户定义函数：

  • CREATE FUNCTION，可以创建用户定义函数。

  • ALTER FUNCTION，可以修改用户定义函数。

  • DROP FUNCTION，可以除去用户定义函数。

每个完全合法的用户定义函数名 (database_name.owner_name.function_name) 必须唯一。

必须被授予 CREATE FUNCTION 权限才能创建、修改或除去用户定义函数。函数所有者以外的用户可以在 Transact-SQL 语句中使用此函数前，必须先被授予此函数上的 EXECUTE 权限（如果此函数是标量值函数）。如果函数是表值函数，则用户在引用函数前必须对函数具有 SELECT 权限。如果 CREATE TABLE 或 ALTER TABLE 语句在 CHECK 约束、DEFAULT 子句或计算列中引用用户定义函数，则表所有者也必须拥有此函数。如果要对函数进行架构绑定，则必须在此函数所引用的表、视图和函数上有 REFERENCE 权限。

可以通过 GRANT 语句将 REFERENCE 权限授予视图、用户定义函数以及表。

请参见

用户定义函数


使用所有权链

视图或存储过程为赋予用户访问数据与执行操作的能力提供了第二种方法。它们使用户可以访问数据库中的基础项，并回避为特定对象和语句直接定义的权限。

视图可以基于其它视图或表。过程可以基于其它过程、视图或表。可以将这些相关性视为所有权链。所有权链只适用于 SELECT、INSERT、UPDATE 和 DELETE 语句。

通常，视图的所有者还拥有基础对象（其它视图或表），而存储过程的所有者经常拥有引用的所有过程、表和视图。另外，视图或基础对象通常都在同一数据库中，存储过程和所有引用的对象也如此。当在存储过程内创建临时临时对象时，它们由过程所有者拥有而不是由当前执行过程的用户拥有。

当用户访问某个视图时，如果该视图的基础对象和此视图都为同一用户所有，或者如果该视图及其所有基础对象都在同一数据库中，则 Microsoft® SQL Server™ 不检查该视图基础对象上的权限。如果同一用户拥有存储过程及其所引用的所有视图和表，或者如果存储过程及其对象都在同一数据库中，SQL Server 就只检查过程上的权限。

如果过程或视图的所有权链破坏了（链中的所有对象并不为同一用户所有），SQL Server 就会检查在链中每个下一个更低链接为另一用户所有的对象上的权限。通过这种方式，SQL Server 使得原始数据的所有者可以保留对原始数据可用性的控制。

通常情况下，创建视图的用户只能授予该视图上的权限。例如，Mary 在其所拥有的 authors 表上创建了名为 auview1 的视图。如果 Mary 授予 Sue 使用 auview1 的权限，SQL Server 就允许 Sue 访问它而不检查在 authors 上的权限。

如果用户创建的视图或存储过程取决于另一用户所拥有的对象，则创建者必须意识到：他（她）所授予的任何权限都取决于另一个所有者所允许的权限。

例如，Joe 创建名为 procedure1 的过程，该过程取决于 procedure2（也为 Joe 所拥有）和 procedure3（为 Sue 所拥有）。这些过程依次取决于 Joe 和 Sue 所拥有的其它表和视图。

Joe 授予 Mary 使用 procedure1 的权限。SQL Server 检查 procedure1、procedure3、view2、table2 和 table3 上的权限以核查是否允许 Mary 使用它们。


使用视图作为安全机制

通过限制可由用户使用的数据，可以将视图作为安全机制。用户可以访问某些数据，进行查询和修改，但是表或数据库的其余部分是不可见的，也不能进行访问。无论在基础表（一个或多个）上的权限集合有多大，都必须授予、拒绝或废除访问视图中数据子集的权限。

例如，某个表的 salary 列中含有保密职员信息，但其余列中含有的信息可以由所有用户使用。可以定义一个视图，它包含表中除敏感的 salary 列外所有的列。只要表和视图的所有者相同，授予视图上的 SELECT 权限就使用户得以查看视图中的非保密列而无须对表本身具有任何权限。

通过定义不同的视图及有选择地授予视图上的权限，可以将用户、组或角色限制在不同的数据子集内。例如：

  • 可以将访问限制在基表中行的子集内。例如，可以定义一个视图，其中只含有商业书籍或心理书籍的行，并向用户隐藏有关其它类型书籍的信息。

  • 可以将访问限制在基表中列的子集内。例如，可以定义一个视图，其中含有 titles 表中的所有行，但省略了 royalty 和 advance 列，因为这些信息比较敏感。

  • 可以将访问限制在基表中列和行的子集内。

  • 可以将访问限制在符合多个基表联接的行内。例如，可以定义一个视图，它联接表 titles、authors 和 titleauthor 表以显示作者姓名及其撰写的书籍。该视图隐藏作者的个人信息以及著作的财务信息。

  • 可以将访问限制在基表中数据的统计汇总内。例如，可以定义一个视图，其中只含有每类书籍的平均价格。

  • 可以将访问限制在另一个视图的子集内或视图和基表组合的子集内。
权限和 ALTER VIEW

使用 ALTER VIEW Transact-SQL 语句可以更改视图的定义而不必除去视图并重新应用权限。应用到视图中列上的任何权限均基于视图中定义的列名，而不是表中的基础列。因此，如果用 ALTER VIEW 更改视图的定义，且使用相同的列名，但使用表中不同的基础列，则新列的权限相同。下例假定用户 Fred 在 pubs 数据库中：

USE pubs
GO
CREATE VIEW v1 AS SELECT title_id, title FROM titles
GO
GRANT SELECT(title_id) ON v1 TO Fred
GO
ALTER VIEW v1 AS SELECT qty AS 'title_id' FROM sales
GO

虽然视图发生改变，title_id 列名引用 sales 表中的 qty 列，而不是 titles 表中的 title_id 列，但授予 Fred 在 title_id 列名上的 SELECT 权限仍然适用。

请参见

ALTER VIEW

CREATE VIEW


使用存储过程作为安全机制

存储过程通常用作执行复杂活动的接口，并且可按与视图几乎相同的方法自定义安全权限。

例如，在存档方案中，存储过程可以将存在时间超过指定间隔的数据复制到存档表中，然后从主表中删除这些数据。可以使用权限防止用户直接从主表中删除行或者将行插入到存档表中，而不从主表中删除。可以创建过程以确保这两种活动一起进行，然后授权用户执行该过程。

请参见

CREATE PROCEDURE


高级安全主题

下面介绍的安全主题超出了 Microsoft® SQL Server™ 安全性的基本用法，并提供了有关专用应用程序的更多详细信息。


建立应用程序安全性和应用程序角色

Microsoft® SQL Server™ 中的安全系统在最低级别，即数据库本身上实现。无论使用什么应用程序与 SQL Server 通讯，这都是控制用户活动的最佳方法。但是，有时必须自定义安全控制以适应个别应用程序的特殊需要，尤其是当处理复杂数据库和含有大表的数据库时。

此外，可能希望限制用户只能通过特定应用程序（例如使用 SQL 查询分析器或 Microsoft Excel）来访问数据或防止用户直接访问数据。限制用户的这种访问方式将禁止用户使用应用程序（如 SQL 查询分析器）连接到 SQL Server 实例并执行编写质量差的查询，以免对整个服务器的性能造成负面影响。

SQL Server 通过使用应用程序角色适应这些要求。应用程序角色与标准角色有以下区别：

  • 应用程序角色不包含成员。

    不能将 Microsoft Windows NT® 4.0 或 Windows® 2000 组、用户和角色添加到应用程序角色；当通过特定的应用程序为用户连接激活应用程序角色时，将获得该应用程序角色的权限。用户之所以与应用程序角色关联，是由于用户能够运行激活该角色的应用程序，而不是因为其是角色成员。

  • 默认情况下，应用程序角色是非活动的，需要用密码激活。

  • 应用程序角色不使用标准权限。

    当一个应用程序角色被该应用程序激活以用于连接时，连接会在连接期间永久地失去数据库中所有用来登录的权限、用户帐户、其它组或数据库角色。连接获得与数据库的应用程序角色相关联的权限，应用程序角色存在于该数据库中。因为应用程序角色只能应用于它们所存在的数据库中，所以连接只能通过授予其它数据库中 guest 用户帐户的权限，获得对另一个数据库的访问。因此，如果数据库中没有 guest 用户帐户，则连接无法获得对该数据库的访问。如果 guest 用户帐户确实存在于数据库中，但是访问对象的权限没有显式地授予 guest，则无论是谁创建了对象，连接都不能访问该对象。用户从应用程序角色中获得的权限一直有效，直到连接从 SQL Server 退出为止。

若要确保可以执行应用程序的所有函数，连接必须在连接期间失去应用于登录和用户帐户或所有数据库中的其它组或数据库角色的默认权限，并获得与应用程序角色相关联的权限。例如，如果应用程序必须访问通常拒绝用户访问的表，则应废除对该用户拒绝的访问权限，以使用户能够成功使用该应用程序。应用程序角色通过临时挂起用户的默认权限并只对他们指派应用程序角色的权限而克服任何与用户的默认权限发生的冲突。

应用程序角色允许应用程序（而不是 SQL Server）接管验证用户身份的责任。但是，SQL Server 在应用程序访问数据库时仍需对其进行验证，因此应用程序必须提供密码，因为没有其它方法可以验证应用程序。

如果不需要对数据库进行特殊访问，则不需要授予用户和 Windows NT 4.0 或 Windows 2000 组任何权限，因为所有权限都可以由它们用来访问数据库的应用程序指派。在这种环境下，假设对应用程序的访问是安全的，则在系统范围内统一使用指派给应用程序角色的密码是可能的。

有几个选项可用于管理应用程序角色密码而无须将其硬编码到应用程序中。例如，可以使用存储在注册表（或 SQL Server 数据库）中的加密键，只有应用程序有加密键的解密代码。应用程序读取键，对其进行解密，并使用其值设置应用程序角色。如果使用多协议 Net-Library，则含有密码的网络数据包也可以被加密。另外，当角色被激活时，可以在发送到 SQL Server 实例前将密码加密。

如果应用程序用户使用 Windows 身份验证模式连接到 SQL Server 实例，则在使用应用程序时，可以使用应用程序角色设置 Windows NT 4.0 或 Windows 2000 用户在数据库中拥有的权限。这种方法使得当用户使用应用程序时，对用户帐户的 Windows NT 4.0 或 Windows 2000 审核及对用户权限的控制容易维护。

如果使用 SQL Server 身份验证，并且不要求审核用户在数据库中的访问，则应用程序可以更容易地使用预定义的 SQL Server 登录连接到 SQL Server 实例。例如，订单输入应用程序验证运行该应用程序的用户，然后用相同的 OrderEntry 登录连接到 SQL Server 实例。所有连接都使用同一登录，相关权限授予该登录。

说明 应用程序角色可以和两种身份验证模式一起使用。

示例

作为应用程序角色使用的示例，假设用户 Sue 运行销售应用程序，该应用程序要求在数据库 Sales 中的表 Products 和 Orders 上有 SELECT、UPDATE 和 INSERT 权限，但她在使用 SQL 查询分析器或任何其它工具访问 Products 或 Orders 表时不应有 SELECT、INSERT 或 UPDATE 权限。若要确保如此，可以创建一个拒绝 Products 和 Orders 表上的 SELECT、INSERT 或 UPDATE 权限的用户-数据库角色，然后将 Sue 添加为该数据库角色的成员。接着在 Sales 数据库中创建带有 Products 和 Orders 表上的 SELECT、INSERT 和 UPDATE 权限的应用程序角色。当应用程序运行时，它通过使用 sp_setapprole 提供密码激活应用程序，并获得访问 Products 和 Orders 表的权限。如果 Sue 尝试使用除该应用程序外的任何其它工具登录到 SQL Server 实例，则将无法访问 Products 或 Orders 表。

创建应用程序角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO

设置应用程序角色

Transact-SQL

更改应用程序角色的密码

Transact-SQL

SQL-DMO

删除应用程序角色

Transact-SQL

企业管理器

企业管理器

SQL-DMO


允许其它帐户授予对象权限

在将对象权限授予数据库中的用户帐户时，可以选择指定 WITH GRANT OPTION 子句，该子句允许用户帐户将该对象权限授予其它帐户。用户帐户可以是 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户或组，也可以是 Microsoft SQL Server™ 用户或角色。

例如，如果在向用户 user_a 授予 salaries 表的权限时使用 WITH GRANT OPTION 子句，user_a 就能够向该数据库中的任何其它用户帐户授予该表上的相同权限。对于组和角色，如果指定 WITH GRANT OPTION 子句向角色 role_a 授予 salaries 表的权限，倘若指定 GRANT 语句的 AS 子句，则 role_a 的每个成员都可以向任何其它用户帐户授予对象权限。有关更多信息，请参见 GRANT。

重要 在使用 WITH GRANT OPTION 子句时，无法进一步控制哪些安全帐户将接收该权限。

当使用 WITH GRANT OPTION 子句废除所授予权限时，请指定 CASCADE 子句以从该用户帐户和从初始帐户接收权限的任何其它帐户废除权限。

例如，指定 WITH GRANT OPTION 向用户 user_a 授予权限，User_a 通过指定 WITH GRANT OPTION 向用户 user_b 授予权限，user_b 又向 user_c 授予权限。User_a 离开了公司，但如果某用户帐户已通过指定 WITH GRANT OPTION 子句而向另一个帐户授予权限，SQL Server 就不允许您删除该用户帐户。指定 WITH GRANT OPTION 子句就是创建了从 user_a 到 user_b 再到 user_c 的链。直到废除了 user_b 和 user_c 的权限才可以删除 user_a 的帐户。当废除 user_a 的权限并指定 CASCADE 选项时，该权限就会从 user_a、user 和 user_c 帐户中删除。然后可以删除 user_a 帐户。


创建 SQL Server 文件权限

Microsoft® SQL Server™ 必须创建和访问存储数据库、数据库备份、错误日志等的文件。该 SQL Server 进程必须在有必需权限的安全帐户环境中运行，才能创建和访问这些文件，无论这些文件是在本地计算机上还是在远程计算机的网络驱动器上。SQL Server 所使用的安全帐户取决于用于启动 SQL Server 实例的方法。如果启动 SQL Server 实例，则：

  • 作为 Microsoft Windows NT® 4.0 或 Windows® 2000 上使用服务控制管理器的服务，SQL Server 使用指派给 SQL Server 服务的安全帐户。

  • 在命令提示符处，独立于服务控制管理器，SQL Server 使用已登录用户的安全帐户。

  • 在 Microsoft Windows 98 和 Microsoft Windows Millennium 版中，SQL Server 使用已登录用户的安全帐户。

SQL Server 所使用的安全帐户要求对文件系统具有创建、读、写、删除和执行文件的完全访问权限。例如，如果使用 NTFS 文件系统，则 SQL Server 所使用的安全帐户要求具有用 NTFS 完全控制权限创建文件的授权。

若要防止未经授权而对 SQL Server 所使用的文件进行访问，请直接调整文件上的权限，以便只允许 SQL Server 所使用的安全帐户访问这些文件。

说明 如果 SQL Server 使用 Windows NT 4.0 和 Windows 2000 LocalSystem 内置安全帐户，则必须给运行 SQL Server 实例的本地计算机的 SYSTEM 帐户授予文件权限。

保护 Windows NT 注册表

对于不是 SQL Server 系统管理员的用户，SQL Server 安装程序从 Windows 2000 注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers 键中删除这些用户的写权限。这防止了不是管理员的用户在使用 SQL Server 企业管理器时，为链接服务器定义设置提供程序选项。

请参见

设置 Windows 服务帐户

启动 SQL Server


使用加密方法

加密是通过将数据更改为不可读形式而使敏感数据得以保密的方法。加密通过对每个人都隐藏信息而确保数据安全，即使有人直接查看加密数据仍然如此。解密是将加密数据更改为原始形式以便授权用户读取的过程。

Microsoft® SQL Server™ 加密或可以加密：

  • SQL Server 中存储的登录和应用程序角色密码。

  • 作为网络数据包而在客户端和服务器端之间发送的数据。

  • 存储过程定义。

  • 用户定义函数定义。

  • 视图定义。

  • 触发器定义。

  • 默认值定义。

  • 规则定义。

说明 如果正在运行 Microsoft Windows® 2000 且希望使用 Windows 2000 加密文件系统加密任何 SQL Server 文件，则必须在更改 SQL Server 服务帐户前解密文件。如果没有解密文件且之后重置了 SQL Server 服务帐户，将无法解密文件。

登录和应用程序角色密码

SQL Server 系统表中存储的登录和应用程序角色密码总是被加密。这可防止用户（包括系统管理员）查看任何密码，包括自己的密码。此外，在网络上发送应用程序角色密码之前，当应用程序角色激活时，就可以对其进行加密。

说明 如果需要，使用 sp_addlogin 系统存储过程就可以添加密码未加密的 SQL Server 登录。但不建议这样做，除非密码因正从其它 SQL Server 实例导入而已被加密。

网络数据包中的数据

SQL Server 允许对客户端和服务器端之间发送的数据进行加密。这样可确保任何在网络上截取数据包的应用程序或用户无法查看保密或敏感数据，例如，当用户登录到 SQL Server 实例时在网络上发送的密码。SQL Server 可以使用安全套接字层 (SSL) 加密在应用程序计算机与 SQL Server 实例之间传输的所有数据。SSL 加密在超级套接字 Net-Library（Dbnetlib.dll 和 Ssnetlib.dll）内执行并应用于 SQL Server 2000 所支持的所有计算机间协议。启用加密会降低 Net-Library 的性能。除所有未加密连接的工作外，加密还强制执行以下操作：

  • 连接时需要额外的网络往返次数。

  • 所有从应用程序发送到 SQL Server 实例的数据包必须由客户端 Net-Library 加密并由服务器 Net-Library 解密。

  • 所有从 SQL Server 实例发送到应用程序的包必须由服务器 Net-Library 加密并由客户端 Net-Library 解密。

共享内存 Net-Library 通讯本身具有安全性，无需加密。共享内存 Net-Library 不参与计算机间的通讯。不能从任何其它 Windows 进程访问应用程序进程与数据库引擎进程之间的共享内存区。

为了与 SQL Server 的早期版本兼容，多协议 Net-Library 将继续支持自己的加密。这种加密与 SSL 加密分开指定，并通过调用 Windows RPC 加密 API 实现。不要求使用证书。采用 40 位还是 128 位的 RPC 加密级别取决于在应用程序计算机和数据库计算机上运行的 Windows 操作系统的版本。命名实例不支持多协议 Net-Library。有关 SSL 的更多信息，请参见 Net-Library 加密。

配置多协议别名

配置多协议别名时启用加密功能。该加密功能只适用于多协议 Net-Library。提供该加密功能只是为与现有应用程序兼容。SQL Server 客户端应使用 SSL 加密，而该加密是在客户端网络实用工具的"启用协议加密"复选框中的"常规"选项卡上指定的。有关客户端网络实用工具的更多信息，请参见配置客户端 Net-Library。

启动客户端网络实用工具

Client Network Utility

客户端网络实用工具

配置使用多协议 Net-Library 的客户端

Client Utility

客户端实用工具

存储过程、函数、视图和触发器定义

在 syscomments 系统表中保存存储过程、函数、触发器或视图的定义时，可以对其进行加密（例如，如果 SQL Server 系统包含专有的存储过程、函数、触发器或视图，则其定义不应由用户和第三方查看）。

请参见

客户端和服务器 Net-Library

CREATE DEFAULT

CREATE FUNCTION

CREATE PROCEDURE

CREATE RULE

CREATE TRIGGER

CREATE VIEW

多协议客户端

Net-Library 加密

sp_addlogin

sp_addrole

sp_approlepassword

sp_setapprole


在网络上公布 SQL Server

在安装 Microsoft® SQL Server™ 时，SQL Server 安装程序将在 Microsoft Windows® 2000 注册表中生成一项，以使命名管道客户端能够在 SQL 查询分析器的服务器枚举框中看到 SQL Server。SQL Server 自动在命名管道上将自身作为服务公布，以使定位运行 SQL Server 实例的服务器更容易。但是，如果正在使用 Active Directory™（Windows 2000 中包含的目录服务），则无须再使用此功能。

通过带 /HIDDEN:YES 开关运行 NET CONFIG SERVER 命令，可以阻止 SQL Server 将自身在命名管道上公布。可以随时公布服务器。

在网络上显示或取消 SQL Server 公告

Windows NT


编写 Internet Explorer 中数据访问控件的脚本

随 Microsoft® SQL Server™ 提供几个数据访问控件：

  • SQL 命名空间 (SQL-NS)

  • SQL 分发控件（复制）

  • SQL 合并控件（复制）

这些控件已签名并标有"对于初始化和脚本是安全的"，可用于 Microsoft Internet Explorer 5 版或更高版本。

在部署可以连接到数据源的控件前，应该完全了解安全含义。当使用任何 SQL Server 控件时，主要的安全考虑是能否通过 Windows 身份验证登录到 SQL Server 实例，并在授权的用户帐户下运行。含有脚本控件的 Web 页是用浏览该页面的用户的网络标识运行的。如果数据源连接是基于已连接用户的网络标识（使用 Windows 身份验证登录），则该控件可以访问浏览页面的用户可以访问的任何数据。如果有使用该控件的 Web 页发送给用户，则该控件具有浏览 Web 页的用户所具有的权限。然后，控件可以在用户不知道的情况下读取或更改数据库。

为防止未经授权对数据库进行访问或更改，所有标有"对于脚本是安全的"的数据访问控件，在装载到 Internet Explorer 4.0 或更高版本时均会考虑安全性区域设置。如果控件未标有"对于脚本是安全的"，则它只能在 Internet Explorer 的"低"安全模式下在 Internet Explorer 内运行脚本，甚至只能在用户对说明脚本将要运行的消息作出响应之后才能运行。处理此问题的另一个方法是删除用户使用 Windows 身份验证登录的能力。

Internet Explorer 4.0 不提供针对数据访问的显式安全选项。因此，所有标有"对于脚本是安全的"的控件都根据所用的安全性区域而允许、提示或禁止脚本。下表显示 Internet Explorer 4.0 的设置。

安全性区域 | Internet Explorer 4.0 提示
本地计算机区域 | 控件可被初始化或编成脚本，并与数据源和脚本无关。
本地 Intranet 区域 | 在装载页面前通知用户潜在的安全威胁。用户可以接受或拒绝初始化或编入脚本。
信任站点区域 | 控件可被初始化或编成脚本，并与数据源和脚本无关。
Internet 区域 | 在装载页面前通知用户潜在的安全威胁。用户可以接受或拒绝初始化或编入脚本。
受限站点区域 | 如果用户试图查看页面和执行脚本，就会发生脚本错误。

与 Internet Explorer 4.0 相反，Internet Explorer 5 版支持一种用于数据访问的显式安全选项，称为"跨域访问数据源"。可以自定义该选项，此操作的设置用于决定控件在 Internet Explorer 5 中运行时的行为。Internet Explorer 5 中的默认设置与 Internet Explorer 4.0 中的程序化设置相同。

出于安全性考虑，必须采取特别的措施以保护系统。只有在具备使用 Windows 身份验证登录能力的用户正确地配置安全设置，并且正确地应答所有安全性提示后，SQL Server 才可免受安全性攻击。

说明 这些保护系统的一般步骤适用于任何脚本主机，包括 Microsoft Excel 电子表格或 Microsoft Word 文档。能够使用 Windows 身份验证登录的用户应始终启用应用程序的宏警告功能或类似的安全设置，以检测并防范任何对数据的攻击。

请参见

开发 SQL-DMO 应用程序

SQL-NS 应用程序设计


审核 SQL Server 活动

Microsoft® SQL Server™ 2000 提供审核功能，用以跟踪和记录每个 SQL Server 实例上已发生的活动（如成功和失败的记录）。SQL Server 2000 还提供管理审核记录的接口，即 SQL 事件探查器。只有 sysadmin 固定安全角色的成员才能启用或修改审核，而且审核的每次修改都是可审核的事件。

有两种类型的审核：

  • 审核，提供某种级别的审核，但不要求与 C2 审核相同的策略数。

  • C2 审核，要求遵从十分明确的安全策略。有关 C2 审核的更多信息，请参见 C2 审核。

这两种审核都可以通过使用 SQL 事件探查器完成。

使用 SQL 事件探查器

SQL 事件探查器为审核事件提供用户界面。可使用 SQL 事件探查器进行审核的事件分为几类，如：

  • 最终用户活动（所有 SQL 命令、注销/登录和应用程序角色的启用）

  • DBA 活动（DDL、授予/废除/拒绝和安全事件之外的 DBA 活动、配置 DB 或服务器）。

  • 安全事件（授予/废除/拒绝、登录用户/角色的添加/删除/配置）。

  • 实用工具事件（备份/还原/大容量插入/BCP/DBCC 命令）。

  • 服务器事件（关闭、暂停、启动）。

  • 审核事件（添加审核、修改审核、停止审核）。

有关可以监视的事件分类的更多信息，请参见安全审核事件分类。

可以通过 SQL 事件探查器审核 SQL Server 的下列方面：

  • 事件的日期和时间。

  • 导致事件发生的用户。

  • 事件类型。

  • 事件的成功或失败。

  • 发出请求的起点（如 Microsoft Windows NT® 4.0 计算机名）。

  • 访问的对象名。

  • SQL 语句的文本（密码由 **** 替换）。

  • 如果您是 sysadmin 或 securityadmin 固定服务器角色的成员，并且通过使用含有全部指定的三个参数（'old_password'、'new_password'、'login'）的 sp_password 重置自己的密码，则审核记录将反映您正在更改其他人的密码。

审核对性能有显著影响。如果为所有对象打开所有审核计数器，可能会对性能造成很大的影响。必须根据所造成的性能影响，来估计需要进行审核的事件数。分析审核记录的费用可能很高，因此建议在与生产服务器不同的服务器上运行审核活动。

说明 如果用 -f 标志启动 SQL Server，则审核不会运行。

请参见

使用 SQL 事件探查器进行监视


使用审核日志

SQL 事件探查器系统存储过程支持文件翻转。审核日志的最大文件大小固定为 200 MB。当审核日志文件达到 200 MB 时，将创建新文件并将关闭旧文件句柄。如果目录已满（例如，如果服务用户帐户的磁盘配额已满或者磁盘已满），Microsoft® SQL Server™ 实例将停止运行。系统管理员需要为审核日志释放磁盘空间然后重新启动 SQL Server 实例，或者重新启动 SQL Server 实例（如果未将审核配置成自动启动）。

使用文件翻转可以避免审核跟踪由于审核日志已填满而失败。不过，SQL Server 不会关闭，除非用户在创建跟踪时特地请求了这个功能。审核失败事件将在 Microsoft Windows® 事件日志和 SQL Server 错误日志中生成一项。

强烈建议在 SQL Server 安装过程中创建新目录来包含审核文件。建议使用 \mssql\audit 路径。如果在命名实例上运行 SQL Server，则建议使用 MSSQL$Instance\audit 路径。


C2 审核

如果运行 C2 认证系统，则 C2 审核为必需。C2 认证系统符合定义安全级别的政府标准。若要拥有 C2 认证的 Microsoft® SQL Server™，必须以经过评估的 C2 配置对 SQL Server 进行配置。有关 C2 认证的更多信息，请参见《C2 管理员及用户安全指南》。


安全管理

若要确保存储在 Microsoft® SQL Server™ 中的数据及对象仅由经授权的用户访问，必须正确地设置安全性。必须设置的安全因素包括身份验证模式、登录、用户、角色、授权、废除和拒绝 Transact-SQL 语句和对象上的权限以及数据加密。


如何设置 Windows 身份验证模式的安全性（企业管理器）

设置 Windows 身份验证模式的安全性

  1. 展开一个服务器组。

  2. 右击一个服务器，再单击"属性"。

  3. 在"安全性"选项卡的"身份验证"下，单击"仅 Windows"。

  4. 在"审核级别"中选择在 SQL Server 错误日志中记录的用户访问 Microsoft® SQL Server™ 的级别：
    • "无"表示不执行审核。

    • "成功"表示只审核成功的登录尝试。

    • "失败"表示只审核失败的登录尝试。

    • "全部"表示审核成功的和失败的登录尝试。

请参见

身份验证模式


设置混合模式安全性的方法（企业管理器）

设置混合模式安全性

  1. 展开一个服务器组。

  2. 右击一个服务器，再单击"属性"。

  3. 单击"安全性"选项卡。

  4. 在"身份验证"下，单击"SQL Server 和 Windows"。

  5. 在"审核级别"中选择在 SQL Server 错误日志中记录的用户访问 Microsoft® SQL Server™ 的级别：
    • "无"表示不执行审核。

    • "成功"表示只审核成功的登录尝试。

    • "失败"表示只审核失败的登录尝试。

    • "全部"表示审核成功的和失败的登录尝试。

请参见

身份验证模式


授权 Windows 用户或组登录访问 SQL Server 的方法（企业管理器）

授权 Windows NT 4.0 或 Windows 2000 用户或组登录访问 SQL Server

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，右击"登录"，然后单击"新建登录"。

  3. 在"名称"框中，输入要被授权访问 Microsoft SQL Server™ 的 Microsoft® Windows NT® 4.0 或 Windows® 2000 帐户（以 DOMAIN\User 的形式）。

  4. 在"身份验证"下，单击"Windows 身份验证"。

  5. 可选：
    • 在"数据库"中，单击用户在登录到 SQL Server 实例后所连接的默认数据库。

    • 在"语言"中，单击显示给用户的信息所用的默认语言。

请参见

添加 Windows NT 用户或组


授权 Windows 用户或组访问数据库的方法（企业管理器）

授权 Windows NT 4.0 或 Windows 2000 用户或组访问数据库

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开将授权用户或组访问的数据库。

  3. 右击"用户"，然后单击"新建数据库用户"命令。

  4. 在"登录名"框中，键入或选择将被授权访问数据库的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户名或组名。

  5. 在"用户名"中，输入在数据库中识别登录所用的用户名。（可选）在默认的情况下，它设置为登录名。

  6. 除 public（默认）外，还选择授权给用户或组的其它数据库角色成员。（可选）

请参见

授权 Windows NT 的用户或组访问数据库


添加 SQL Server 登录的方法（企业管理器）

添加 SQL Server 登录

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，右击"登录"，然后单击"新建登录"。

  3. 在"名称"框中，输入 Microsoft® SQL Server™ 登录的名称。

  4. 在"身份验证"下，选择"SQL Server 身份验证"。

  5. 在"密码"中输入密码。（可选）

  6. 可选：
    • 在"数据库"中，单击在登录到 SQL Server 实例之后登录将连接到的默认数据库。

    • 在"语言"中，单击显示给用户的信息所用的默认语言。

请参见

添加 SQL Server 登录


添加链接服务器登录的方法（企业管理器）

添加链接服务器的登录

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后再单击"链接服务器"。

  3. 在"详细信息"窗格中,右击登录将被加入的链接服务器，然后单击"属性"。

  4. 在"安全性"选项卡中，单击要添加的本地登录。

  5. 如果本地登录应该使用自己的用户安全凭据连接到链接服务器上，则选择"模拟"复选框。（可选）

  6. 输入本地登录在不使用用户的安全凭据（"模拟"未被选中）的情况下连接到链接服务器时应使用的远程用户和远程密码。

请参见

建立链接服务器的安全性

如何设置链接服务器（企业管理器）


授权 SQL Server 登录访问数据库的方法（企业管理器）

授权 SQL Server 登录访问数据库

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开将授权登录访问的数据库。

  3. 右击"用户"，然后单击"新建数据库用户"命令。

  4. 在"登录名"框中，单击要授权访问数据库的 Microsoft® SQL Server™ 登录。

  5. 在"用户名"中，输入在数据库中识别登录所用的用户名。（可选）在默认的情况下，它设置为登录名。

  6. 除 public（默认值）外，还可选择其它数据库角色成员。（可选）

请参见

授权 SQL Server 登录访问数据库

guest 用户


创建 SQL Server 数据库角色的方法（企业管理器）

创建 SQL Server 数据库角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开要在其中创建角色的数据库。

  3. 右击"角色"，然后单击"新建数据库角色"命令。

  4. 在"名称"框中输入新角色的名称。

  5. 单击"添加"将成员添加到"标准角色"列表中，然后单击要添加的一个或多个用户。（可选）

    只有选定数据库中的用户才能被添加到角色中。

请参见

创建用户定义的 SQL Server 数据库角色


将成员添加到 SQL Server 数据库角色中的方法（企业管理器）

将成员添加到 SQL Server 数据库角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开角色所在的数据库。

  3. 单击"角色"。

  4. 在"详细信息"窗格中,右击用户所要加入的角色，然后单击"属性"。

  5. 单击"添加"，然后单击要添加的一个或多个用户。

    只有选定数据库中的用户才能被添加到角色中。

请参见

将成员添加到预定义角色中

将成员添加到 SQL Server 数据库角色


将成员添加到固定服务器角色中的方法（企业管理器）

向固定服务器角色添加成员

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"服务器角色"。

  3. 在"详细信息"窗格中，右击该角色，然后单击"属性"。

  4. 在"常规"选项卡中单击"添加"按钮,然后单击要添加的登录。

请参见

将成员添加到预定义角色中


使用创建登录向导向用户授予 SQL Server 登录访问权的方法（企业管理器）

使用创建 SQL Server 登录向导向用户授予 SQL Server 登录访问权

  1. 在"工具"菜单上单击"向导"命令。

  2. 在"选择向导"对话框中，展开"数据库"，然后双击"创建登录向导"。

  3. 完成向导中的步骤。

请参见

使用创建登录向导


查看 SQL Server 登录或 Windows 用户或组的方法（企业管理器）

查看 SQL Server 登录或 Windows NT 4.0 或 Windows 2000 用户或组

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中，右击要查看的登录，然后单击"属性"。

请参见

查看登录


查看数据库用户的方法（企业管理器）

查看数据库用户

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开用户所属的数据库。

  3. 单击"用户"。

  4. 在"详细信息"窗格中右击要查看的用户，然后单击"属性"。

请参见

查看数据库用户


更改 SQL Server 登录密码的方法（企业管理器）

更改 SQL Server 登录的密码

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中右击要修改的登录，然后单击"属性"。

  4. 在"常规"选项卡上的"密码"框中输入新的密码。

  5. 确认该密码。

请参见

修改登录


更改登录的默认数据库的方法（企业管理器）

更改登录的默认数据库

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中右击要修改的登录，然后单击"属性"。

  4. 在"常规"选项卡上的"数据库"列表中，单击登录到 Microsoft® SQL Server™ 实例之后登录所连接的新的默认数据库。

请参见

修改登录


更改登录的默认语言的方法（企业管理器）

更改登录的默认语言

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中右击要修改的登录，然后单击"属性"。

  4. 在"常规"选项卡上的"语言"列表中，单击显示给用户的消息所用的新默认语言。

请参见

修改登录


从数据库中删除用户或组的方法（企业管理器）

从数据库中删除用户或组

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开用户或组所属的数据库。

  3. 单击"用户"。

  4. 在"详细信息"窗格中右击要删除的用户或组，然后单击"删除"。

  5. 确认删除。

请参见

删除登录和用户


删除 SQL Server 登录的方法（企业管理器）

删除 SQL Server 登录

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中右击要删除的登录，然后单击"删除"。

  4. 确认删除。

请参见

删除登录和用户


从 SQL Server 中废除 Windows 用户或组的登录访问权的方法（企业管理器）

从 SQL Server 中废除 Windows NT 4.0 或 Windows 2000 用户和组的登录访问权

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中，右击要废除的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户或组，然后单击"删除"命令。

  4. 确认删除。

请参见

删除登录和用户


拒绝 Windows 用户或组的登录访问的方法（企业管理器）

拒绝 Windows NT 4.0 或 Windows 2000 用户或组的登录访问

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"登录"。

  3. 在"详细信息"窗格中，右击要拒绝的 Microsoft® Windows NT® 4.0 或 Windows® 2000 用户或组，然后单击"属性"命令。

  4. 在"身份验证"下，单击"拒绝访问"。

请参见

拒绝 Windows NT 帐户的登录访问

授权 Windows NT 用户或组对 SQL Server 的登录访问（企业管理器）


删除链接服务器登录的方法（企业管理器）

删除链接服务器登录

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"链接服务器"。

  3. 在"详细信息"窗格中，右击要删除的链接服务器登录所映射的链接服务器，然后单击"属性"。

  4. 在"安全性"选项卡上的"本地登录"下，单击要删除的链接服务器登录，然后在列表的顶部选择空的登录。

请参见

删除登录和用户


查看在当前数据库中定义的角色的方法（企业管理器）

查看当前数据库中定义的角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开要查看的数据库。

  3. 单击"角色"。

请参见

查看角色


查看固定服务器角色的方法（企业管理器）

查看固定服务器角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"服务器角色"。

请参见

查看角色


查看数据库角色成员的方法（企业管理器）

查看数据库角色的成员

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开用户所属的数据库。

  3. 单击"角色"。

  4. 在"详细信息"窗格中右击要查看的角色，然后单击"属性"以查看成员。

请参见

查看和修改角色成员


从数据库角色中删除用户帐户的方法（企业管理器）

从数据库角色中删除用户帐户

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开角色所在的数据库。

  3. 单击"角色"。

  4. 在"详细信息"窗格中，右击用户帐户所属的角色，然后单击"属性"。

  5. 选择要删除的用户，然后单击"删除"。

请参见

查看和修改角色成员


查看固定服务器角色的成员的方法（企业管理器）

查看固定服务器角色的成员

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"服务器角色"。

  3. 在"详细信息"窗格中右击要查看的服务器角色，然后单击"属性"。

请参见

查看和修改角色成员


从固定服务器角色中删除登录的方法（企业管理器）

从固定服务器角色中删除登录

  1. 展开服务器组，然后展开服务器。

  2. 展开"安全性"，然后单击"服务器角色"。

  3. 在"详细信息"窗格中右击要修改的服务器角色，然后单击"属性"。

  4. 在"常规"选项卡上选择要删除的登录，然后单击"删除"。

请参见

查看和修改角色成员


删除 SQL Server 角色的方法（企业管理器）

删除 SQL Server 角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开角色所在的数据库。

  3. 单击"角色"。

  4. 在"详细信息"窗格中，右击该角色，然后单击"删除"。

    说明 在删除角色之前，必须先除去所有的角色成员。但不能删除固定角色。

  5. 确认删除。

请参见

删除 SQL Server 数据库角色


通过授予权限而允许访问的方法（企业管理器）

通过授权而允许访问（对象上）

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开对象所属的数据库。

  3. 根据对象类型，单击下列对象之一：
    • 表

    • 视图

    • 存储过程
  4. 在"详细信息"窗格中，右击授予权限所在的对象，指向"所有任务"，然后单击"管理权限"。

  5. 单击"列出全部用户/用户定义的数据库角色/public"，然后选择授予每位用户的权限。

    选中标记表示授予权限。只列出适用于该对象的权限。

请参见

授予权限


为数据库内的用户授予语句权限的方法（企业管理器）

向用户授予数据库中的语句权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，右击将被授予语句权限的用户所在的数据库，然后单击"属性"。

  3. 在"权限"选项卡上，选择授予每位用户的语句权限。

    选中标记表示授予权限。

请参见

授予权限


为用户、组或角色授予在多个对象中的权限的方法（企业管理器）

向用户、组或角色授予多个对象的权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开用户、组或角色所属的数据库。

  3. 根据权限所要授予的用户、组或角色的类型，单击"用户"或"角色"。

  4. 在"详细信息"窗格中，右击权限所要授予的用户、组或角色，指向"所有任务",然后单击"管理权限"。

  5. 单击"列出全部对象"，然后选择授予每个对象的权限。

    选中标记表示授予权限。只列出适用于该对象的权限。

请参见

授予权限


通过拒绝权限防止访问的方法(企业管理器)

通过拒绝权限防止访问（在对象上）

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开对象所属的数据库。

  3. 根据将拒绝访问的对象类型，单击下列选项之一：
    • 表

    • 视图

    • 存储过程
  4. 在"详细信息"窗格中，右击要拒绝访问的对象，指向"所有任务"，然后单击"管理权限"。

  5. 单击"列出全部用户/用户定义的数据库角色/public"，然后选择拒绝授予每位用户的权限。

    "X"表示拒绝权限。只列出适用于该对象的权限。

请参见

拒绝权限


拒绝数据库内用户的语句权限的方法（企业管理器）

拒绝用户在数据库中的语句权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，右击要拒绝语句权限的用户所在的数据库，然后单击"属性"。

  3. 在"权限"选项卡中，选择拒绝授予每位用户的语句权限。

    "X"表示拒绝权限。

请参见

拒绝权限


拒绝用户、组或角色在多个对象中的权限的方法（企业管理器）

拒绝用户、组或角色在多个对象上的权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开用户、组或角色所属的数据库。

  3. 根据要被拒绝权限的用户、组或角色的类型，单击"用户"或"角色"。

  4. 在"详细信息"窗格中，右击权限将被拒绝的用户或组，然后指向"所有任务"，再单击"管理权限"。如果对某个角色拒绝权限，则右击将被拒绝权限的角色，单击"属性"，然后单击"权限"。

  5. 单击"列出全部对象"，然后选择拒绝授予每个对象的权限。

    "X"表示拒绝权限。只列出适用于该对象的权限。

请参见

拒绝权限


废除在对象上的权限的方法（企业管理器）

废除对象上的权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开对象所属的数据库。

  3. 根据将被废除访问权限的对象类型，单击下列对象之一：
    • 表

    • 视图

    • 存储过程
  4. 在"详细信息"窗格中，右击要被废除访问权的对象，指向"所有任务"，然后单击"管理权限"。

  5. 单击"列出全部用户/用户定义的数据库角色/public"，然后选择要废除的每位用户的权限。

    空的框表示废除的权限。只列出适用于该对象的权限。

请参见

废除权限


废除数据库中用户的语句权限的方法（企业管理器）

废除用户在数据库中的语句权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，右击要被废除语句权限的用户所在的数据库，然后单击"属性"。

  3. 在"权限"选项卡中，选择要废除的每位用户的语句权限。

    空的框表示废除的权限。

请参见

废除权限


废除用户、组或角色在多个对象中的权限的方法（企业管理器）

废除用户、组或角色在多个对象上的权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开用户、组或角色所属的数据库。

  3. 根据要被废除权限的用户、组或角色的类型，单击"用户"或"角色"。

  4. 在"详细信息"窗格中，右击要被废除权限的用户或组，指向"所有任务"，然后单击"管理权限"。如果废除某个角色的权限，则右击将被拒绝权限的角色，单击"属性"，然后单击"权限"。

  5. 单击"列出全部对象"，然后选择要废除的每个对象的权限。

    空的框表示废除的权限。只列出适用于该对象的权限。

请参见

废除权限


创建应用程序角色的方法（企业管理器）

创建应用程序角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开要在其中创建角色的数据库。

  3. 右击"角色"，然后单击"新建数据库角色"命令。

  4. 在"名称"框中，输入新的应用程序角色的名称。

  5. 在"数据库角色类型"下，单击"应用程序角色"，然后输入密码。

请参见

建立应用程序安全和应用程序角色


删除应用程序角色的方法（企业管理器）

删除应用程序角色

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开应用程序角色所在的数据库。

  3. 单击"角色"。

  4. 在"详细信息"窗格中右击要删除的应用程序角色，然后单击"删除"。

  5. 确认删除。

请参见

建立应用程序安全和应用程序角色


如何在网络上显示或取消 SQL Server 公告 (Windows)

在网络上显示或取消 SQL Server 公告

  1. 在"控制面板"中双击"网络"图标。

  2. 单击"服务"选项卡。

  3. 在"网络服务"列表中单击"服务器"选项，然后单击"属性"按钮。

  4. 选中"使浏览器广播到 LAN Manager 2.x 客户"以显示服务器，或者清除该复选框以隐藏服务器。

请参见

在网络上公布 SQL Server


如何授予、拒绝或撤消用户定义的角色在多个对象中的权限（企业管理器）

授予、拒绝或废除用户定义角色在多个对象上的权限

  1. 展开服务器组，然后展开服务器。

  2. 展开"数据库"文件夹，然后展开角色所属的数据库。

  3. 单击"角色"。

  4. 在"详细信息"窗格中，右击要授予、拒绝、取消其权限的用户定义的角色，然后单击"属性"命令。

  5. 在"名称"下单击"权限"。

  6. 单击"列出全部对象"，然后选择在每个对象上授予、拒绝或废除的权限。

    选中标志表示授予权限；"X"表示拒绝权限，空框表示废除权限。只列出适用于该对象的权限。


如何启动 SQL Server 的默认实例（服务管理器）

启动 SQL Server 的默认实例

  1. 在"服务"框中，单击"SQL Server"。

    如果该服务是远程服务，则在"服务器"框中输入远程服务器的名称。

  2. 单击"开始/继续"按钮。

请参见

手工启动 SQL Server


如何启动 SQL Server 的聚集实例（服务管理器）

启动 SQL Server 的聚集实例

  1. 在"服务器"框中输入虚拟 SQL Server 的名称。如果它是默认实例，只需指定虚拟服务器名称。如果它是命名实例，则必须输入 VIRTUALSERVER\Instance。

  2. 在"服务"框中，单击"SQL Server"。

  3. 单击"开始/继续"按钮。

请参见

手工启动 SQL Server


如何启动 SQL Server 的命名实例（服务管理器）

启动 SQL Server 的命名实例

  1. 在"服务器"框中，选择服务器的名称及 Microsoft® SQL Server™ 2000 的命名实例，或输入远程服务器的名称。

  2. 在"服务"框中，单击 SQL Server，单击"开始"按钮，然后再单击"继续"按钮。


如何启动 SQL Server 的默认实例 (Windows)

启动 SQL Server 的默认实例

  1. 在"控制面板"中双击"服务"。

  2. 在"服务"对话框中，单击"MSSQLSERVER"，然后单击"开始"。


如何启动 SQL Server 的命名实例 (Windows)

启动 SQL Server 的命名实例

  1. 在"控制面板"中双击"服务"。

  2. 在"服务"对话框中，单击要启动的 Microsoft® SQL Server™ 2000 的命名实例，然后单击"启动"。


如何启动 SQL Server 的默认实例（命令提示符）

从命令提示符启动 SQL Server 的默认实例

  • 从命令提示符输入：

    sqlservr.exe -c

    说明 在启动 sqlservr.exe 之前，必须在命令窗口中切换到适当的目录（要启动的 Microsoft® SQL Server™ 实例所在的目录）。

请参见

手工启动 SQL Server


如何启动 SQL Server 的命名实例（命令提示符）

从命令提示符启动 SQL Server 的命名实例

  • 从命令提示符输入以下命令：

sqlservr.exe -c -s {instancename}

说明 在启动 sqlservr.exe 之前，必须在命令窗口中切换到适当的目录（要启动的 Microsoft® SQL Server™ 2000 实例所在的目录）。例如，如果实例 1 使用 \mssql$Instance1 存储它的二进制文件，则必须在 \mssql$Instance1\binn 目录中启动 sqlservr.exe。


如何在单用户模式下启动 SQL Server 的默认实例（命令提示符）

在单用户模式下从命令提示符启动 SQL Server 的默认实例

  • 从命令提示符输入：

    sqlservr.exe -c -m

    说明 在启动 sqlservr.exe 之前，必须在命令窗口中切换到适当的目录（要启动的 Microsoft® SQL Server™ 实例所在的目录）。

请参见

在单用户模式下启动 SQL Server

使用启动选项


如何在单用户模式下启动 SQL Server 的命名实例（命令提示符）

在单用户模式下从命令提示符启动 SQL Server 的命名实例

  • 从命令提示符输入：

    sqlservr.exe -c - m -s {instancename}

    说明 在启动 sqlservr.exe 之前，必须在命令窗口中切换到适当的目录（要启动的 Microsoft® SQL Server™ 2000 实例所在的目录）。


如何以最低配置启动 SQL Server 的默认实例（命令提示符）

以最低配置启动 SQL Server 的默认实例

  • 从命令提示符输入以下命令，以启动 Microsoft® SQL Server™ 的默认实例作为服务：

    sqlservr -c -f

    说明 在启动 sqlservr.exe 之前，您必须在命令窗口中转换到适当的目录（要启动的 SQL Server 实例所在的目录）。

请参见

手工启动 SQL Server


如何以最低配置启动 SQL Server 的命名实例（命令提示符）

以最低配置启动 SQL Server 的命名实例

  • 从命令提示符输入以下命令，以启动 Microsoft® SQL Server™ 2000 的命名实例作为服务：

    sqlservr -c -f -s {instancename}

    说明 在启动 sqlservr.exe 之前，您必须在命令窗口中转换到适当的目录（要启动的 SQL Server 实例所在的目录）。


如何暂停和继续执行 SQL Server 的默认实例（服务管理器）

暂停和继续执行 SQL Server 的默认实例

  1. 在"服务"框中，单击"SQL Server"。

    如果该服务是远程服务，则键入远程服务器的名称。

  2. 单击"暂停"，单击"开始/继续"按钮。

请参见

暂停和继续运行 SQL Server


如何停止 SQL Server 聚集实例（服务管理器)

停止 SQL Server 的聚集实例

  1. 在"服务器"框中，输入虚拟 Microsoft® SQL Server™ 的名称。如果它是默认实例，只需指定虚拟服务器名称。如果它是命名实例，则必须输入 VIRTUALSERVER\Instance。

  2. 在"服务"框中，单击"SQL Server"。

  3. 单击"停止"按钮。这会暂停群集资源，然后停止 SQL Server 服务，但不会导致 SQL Server 的故障转移。

请参见

停止 SQL Server


如何暂停和继续执行 SQL Server 的命名实例（服务管理器）

暂停或继续执行 SQL Server 的命名实例

  1. 在"服务器"框中，选择服务器的名称及 Microsoft® SQL Server™ 2000 的命名实例，或输入远程服务器的名称。

  2. 在"服务"框中，单击"SQL Server"。

  3. 单击"暂停"，单击"开始/继续"按钮。


如何暂停和继续执行 SQL Server 的默认实例 (Windows)

暂停和继续执行 SQL Server 的默认实例

  1. 在"控制面板"中双击"服务"。

  2. 在"服务"对话框中，单击"MSSQLSERVER"。

  3. 单击"暂停"或"继续"。


如何暂停和继续执行 SQL Server 的命名实例 (Windows)

暂停或继续执行 SQL Server 的命名实例

  1. 在"控制面板"中双击"服务"。

  2. 在"服务"对话框中，单击要暂停的 Microsoft® SQL Server™ 2000 的命名实例。

  3. 单击"暂停"或"继续"。


如何暂停和继续执行 SQL Server 的默认实例（命令提示符）

暂停和继续执行 SQL Server 的默认实例

  • 从命令提示符输入：

    net pause mssqlserver

    -或-

    net continue mssqlserver

    Microsoft® SQL Server™ 的实例只有在作为 Microsoft Windows NT® 4.0 或 Windows® 2000 服务启动时才可以暂停或继续执行。

请参见

暂停和继续运行 SQL Server


如何暂停或继续执行 SQL Server 的命名实例（命令提示符）

暂停或继续执行 SQL Server 的命名实例

  • 从命令提示符输入：

    net pause mssql$instancename

    -或-

    net continue mssql$instancename


如何广播关机消息（命令提示符）

广播关机消息

  • 从命令提示符输入：

    net send /users "message"

    例如：

    net send /users "SQL Server is going down in 20 minutes.
Disconnect within 15 minutes."

    说明 只有当 Microsoft® SQL Server™ 的实例在 Microsoft Windows NT® 4.0 或 Windows® 2000 上运行时，才会广播关机消息。users 选项指定该消息应该发送给所有连接到服务器上的用户。有关其它"网络发送"选项的信息，请参见 Windows NT 4.0 和 Windows 2000 文档。

请参见

停止 SQL Server


如何停止 SQL Server 的默认实例 (Windows)

停止 SQL Server 的默认实例

  1. 在"控制面板"中双击"服务"。

  2. 在"服务"对话框中单击"MSSQLSERVER"，然后单击"停止"。


如何停止 SQL Server 命名实例 (Windows)

停止 SQL Server 的命名实例

  1. 在"控制面板"中双击"服务"。

  2. 在"服务"对话框中，单击要停止的 Microsoft® SQL Server™ 2000 命名实例，然后单击"停止"。


如何停止 SQL Server 的默认实例（命令提示符）

停止 SQL Server 的默认实例

  • 从命令提示符输入：

    net stop mssqlserver

说明 使用 SQL Server 企业管理器或 net stop mssqlserver 命令停止 Microsoft® SQL Server™ 的默认实例将导致 SQL Server 在所有数据库中执行检查点。然后执行 SHUTDOWN WITH NOWAIT，从数据高速缓存中刷新所有提交的数据并立即停止服务器。只有在运行 Microsoft Windows NT® 4.0 或 Windows® 2000 时，从命令提示符停止 SQL Server 的默认实例才能起作用。

请参见

停止 SQL Server


如何停止 SQL Server 的命名实例（命令提示符）

停止 SQL Server 的命名实例

  • 从命令提示符输入：

    net stop mssql$instancename

说明 使用 SQL Server 企业管理器或 net stop mssql$instancename 命令停止 Microsoft® SQL Server™ 2000 的命名实例将导致 SQL Server 在所有数据库中执行检查点。然后执行 SHUTDOWN WITH NOWAIT，从数据高速缓存中刷新所有提交的数据并立即停止服务器。只有在运行 Microsoft Windows NT® 4.0 或 Windows® 2000 时，从命令提示符停止 SQL Server 2000 的命名实例才能起作用。


如何登录到 SQL Server 的默认实例（命令提示符）

登录到 SQL Server 的默认实例

  • 从命令提示符输入：

    osql /U [login_id] /P [password] /S [servername]

    -或-

    isql/U [login_id]/P [password] /S [servername]

请参见

osql 实用工具


如何登录到 SQL Server 的命名实例（命令提示符）

登录到 SQL Server 的命名实例

  • 从命令提示符输入：

    osql / U login_id /P password /S servername\instancename

    -或-

    isql/U login_id/P password /S servername\instancename


如何更改默认服务（服务管理器）

更改默认服务

  1. 右击"SQL Server 服务管理器"，然后单击"选项"。

  2. 在"默认服务"框中，选择要通过 SQL Server 服务管理器查看的新默认服务。重新启动计算机时，显示的服务是新的默认服务。例如，如果将默认服务更改为 SQLServerAgent 服务，然后关闭计算机，在下次启动时，SQLServerAgent 服务将显示在服务控制管理器中。您只可以改变本地计算机的默认服务。


安装 Analysis Services

本节只包含有关安装 Microsoft® SQL Server™ 2000 Analysis Services 的信息。但不包含有关安装其它 SQL Server 2000 组件的信息。有关安装其它组件（如 English Query）的更多信息，请参见 SQL Server 联机丛书入门。有关安装其它组件（如 English Query）的更多信息，请参见本书"介绍"中的"SQL Server 联机丛书入门"主题。

本节包含下列主题。

主题 | 描述
安装 Analysis Services 的硬件和软件要求 | 提供在安装和运行 Analysis Services 时的硬件和软件要求。
运行安装程序 | 提供安装 Analysis Services 的循序渐进指导。
安装参数和无提示安装 | 描述 Analysis Services 安装程序 (Setup.exe) 的参数。
重新安装 Analysis Services | 描述如何重新安装 Analysis Services。
删除 Analysis Services | 描述如何删除 Analysis Services。
从早期版本升级 | 描述如何从 Analysis Services 的早期版本升级。
向后兼容性 | 提供与 Analysis Services 的早期版本（以前称为 OLAP 服务）有关的兼容性信息。

相关文档

SQL Server 2000 光盘根目录中的 Readme.html 文件包含有关 Analysis Services 的信息。还可通过单击 SQL Server 2000 安装程序 (Autorun.exe) 菜单上的"阅读版本注释"按钮查看版本注释。


安装 Analysis Services 的硬件和软件要求

在安装 Microsoft® SQL Server 2000 ™Analysis Services 之前，计算机必须符合以下要求。

硬件/软件 | 要求
计算机 | Intel® 或兼容机（Pentium 133 MHz 或更高、Pentium PRO、Pentium II 或 Pentium III）
内存 (RAM) | 最小 32 MB（推荐 64 MB）
磁盘驱动器 | CD-ROM 驱动器
硬盘空间 (1) | 50 – 90 MB（如果安装包括常用文件和示例在内的所有组件则需 130 MB），纯客户端安装需 12 MB。
操作系统 | Microsoft Windows® 2000 Server - 或者 - 带有 Service Pack 5 或更高版本的 Microsoft Windows NT® Server 4.0 仅对于客户端计算机上的客户端组件，以下系统也符合安装要求： Windows 2000 Professional Windows NT Workstation 4.0 with Service Pack 5 Windows 98 Windows 95 + DCOM95 Windows 95 OSR2 + DCOM95
网络软件 | Windows 2000、Windows NT 4.0、Windows 98 或 Windows 95 内置网络软件；以及 TCP/IP（包含在 Windows 中）。
联机产品 文档查看器 | Microsoft Internet Explorer 5.0 版或更高版本 (2) 。在安装 Internet Explorer 5.0 版之前必须安装 Windows NT 4.0 Service Pack 5 或更高版本。
访问权限 | 若要安装用于分析服务器的服务，必须用管理员权限登录到该服务器。

1 安装程序将安装许多可以与其它应用程序共享的组件，这些组件可能已存在于计算机上。
2 Microsoft 管理控制台 (MMC) 和 HTML 帮助要求使用 Internet Explorer。最小安装就足够了，Internet Explorer 不必是默认浏览器。纯客户端安装不需要 Internet Explorer。

有关所支持硬件的更多信息，请参见位于 Microsoft Web 站点的"Microsoft Windows Hardware Compatibility List"（"Microsoft Windows 硬件兼容列表"）。有关 Windows 2000 兼容硬件的更多信息，请使用 Microsoft Web 站点的 Microsoft Windows 2000 兼容硬件设备搜索工具。


运行安装程序

本主题描述如何安装 Microsoft® SQL Server™ 2000 Analysis Services。

如果要从 Analysis Services 的早期版本（以前称为 OLAP 服务）升级，则在执行下列过程之前应该采取某些措施。有关更多信息，请参见从早期版本升级。有关更多信息，请参见本章后面的"从早期版本升级"。

如果要重新安装 Analysis Services，应在执行下列过程之前先采取某些措施。有关更多信息，请参见重新安装 Analysis Services。有关更多信息，请参见本章后面的"重新安装 Analysis Services"。

虽然 Analysis Services 可连接到在单台计算机上运行的多个 SQL Server 实例，但不能在单台计算机上安装多个 Analysis Services 实例。

若要安装 Analysis Services，请使用 Analysis Services 安装程序或 SQL Server 2000 安装程序。

安装 Analysis Services

  1. 退出所有 Microsoft Windows® 应用程序。

  2. 将 SQL Server 2000 光盘插入 CD-ROM 驱动器中。这将启动 SQL Server 2000 安装程序。如果安装程序没有自动启动，则运行光盘根目录中的 Autorun.exe 程序。

  3. 单击"安装 SQL Server 2000 组件"。

  4. 单击"Analysis Services"启动 Analysis Services 安装程序。

  5. 在"欢迎"步骤中单击"下一步"按钮。

  6. 在"软件许可协议"步骤中，阅读许可协议，然后进行下列操作之一：
    1. 单击"是"按钮接受许可协议。必须选择此选项才可以安装 Analysis Services。

    2. 要拒绝许可协议，则单击"否"按钮。如果选择此选项，程序会要求您确认是否退出。如果选择"退出安装"，则程序将关闭，并取消安装。若要继续安装，请单击"继续"按钮。
  7. 安装程序提示输入光盘密钥。键入产品的 10 位数光盘密钥，然后单击"确定"按钮。

  8. 安装程序显示完整的产品 ID，可将其记录下来以便将来参考。记下产品 ID 后单击"确定"按钮。

  9. 在"选择组件"步骤中，选择要安装的组件。默认情况下所有的选项都是选定的。不能清除其它选定组件所依赖的任何组件的复选框。

除非在客户端计算机上安装客户端组件，否则建议安装全部组件。可安装下列组件。

组件 | 描述
分析服务器 | 安装分析服务器所需的二进制可执行文件和其它与服务器相关的文件。包括本教程所使用的 FoodMart 2000 示例数据库。需要客户端组件。
Analysis Manager | 支持用于管理分析服务器的用户界面的二进制可执行文件和其它文件。包括 MDXSample 可执行文件。需要决策支持对象 (DSO) 和客户端组件。
决策支持对象 | 用于管理分析服务器和元数据的对象模型。需要客户端组件。
客户端组件 | Analysis Services 客户端的二进制可执行文件和相关文件。客户端组件包括 PivotTable® 服务。
示例应用程序 | 示例应用程序包括 MDXSample 源文件、FoodMart 2000 数据库和编程示例。需要客户端组件。
联机丛书 | SQL Server 2000 的完整文档集，包括 Analysis Services。该文件大约 30 MB。如果磁盘空间非常珍贵，可选择不安装联机丛书。但是，将无法在用户界面中获得产品文档，除非重新安装。

若要更改目的驱动器或文件夹，请单击"浏览"按钮。虽然在这些对话框中列出了远程网络驱动器，但不支持安装到远程网络驱动器上的位置。

"所需空间"和"可用空间"显示磁盘驱动器空间并帮助确定要安装的组件。如果当前的磁盘驱动器没有足够的可用空间，可单击"磁盘空间"以确定计算机的哪个磁盘有足够的空间安装 Analysis Services。

在选择要安装的组件后单击"下一步"按钮。后面的步骤因选择安装的组件而异。

  6. 在"Data 文件夹位置"步骤中，可以更改 Data 文件夹的位置，它是分析服务器的数据存储位置。

    Data 文件夹的默认位置是 C:\Program Files\Microsoft Analysis Services\Data（除非在前面的步骤中为 Analysis Services 指定了另一个位置）。可以通过单击"浏览"按钮指定不同的位置。如果更改默认文件夹或驱动器，则应确保输入完全合法的路径。若要指定的数据存储位置在安装该服务器的计算机之外，必须拥有对那台计算机的完全控制访问权限。

    重要 Data 文件夹中存储着控制最终用户对分析服务器中对象的访问的安全性文件。由于这一原因，必须对 Data 文件夹加以保护以防未经授权的访问。

    在选择 Data 文件夹的位置之后单击"下一步"按钮。

  7. 在"选择程序文件夹"步骤中，接受默认的程序文件夹名称或输入新名称。这将确定 Analysis Services 菜单项在"开始"菜单上的位置。单击"下一步"按钮。

  8. Analysis Services 安装开始。在安装程序通知您安装完成后，请单击"完成"按钮。

  9. 如果提示您重新启动计算机，请进行下列操作之一：
    10. 单击"是，我希望立即重新启动计算机"选项，然后单击"完成"按钮。

    11. 单击"否，稍后再重新启动计算机"选项，然后单击"完成"按钮。如果选择该选项，则只有在您重新启动计算机后才会完成安装。
  12. 如果要结束安装 SQL Server 2000 组件，则单击 SQL Server 2000 安装程序中的"退出"按钮。

如果在步骤 10 中指定的数据存储位置不是安装服务器的计算机，则必须将分析服务器服务 (MSSQLServerOLAPService) 配置为用用户帐户登录。而不是默认设置（用系统帐户登录）。为此，请使用服务应用程序，该程序在 Windows NT® 4.0 的"控制面板"或 Windows® 2000 的"控制面板"中的"管理工具"文件夹中。


安装参数和无提示安装

可以用下列可选的命令行参数启动 Analysis Services 安装程序（位于 SQL Server 光盘上的 \Msolap\Install\Setup.exe）：

-r

该选项使 Setup.exe 在 systemroot 文件夹中（一般为 C:\WinNT）自动生成一个无提示响应文件 (.iss)，该文件记录安装输入。

-s

该选项执行无提示（无值守）安装。

-f1<path\ResponseFile>

该选项使您得以指定响应文件（.iss 文件）的备用位置和名称。如果在运行无提示安装时不使用 -f1 开关，则安装程序会在与 Setup.exe 相同的文件夹中搜索响应文件 Setup.iss。

-f2<path\LogFile>

该选项使您得以指定日志文件的备用位置和名称。默认情况下，在 systemroot 文件夹（一般为 C:\Winnt）中创建和存储 Setup.log 日志文件。

如果使用 -r 选项，则可以创建任何想要的安装方案的记录。可以使用该记录来执行无提示（无值守）安装。例如，下列命令会启动无提示安装，安装 setup.iss 响应文件中指定的组件，该文件是以前使用 -r 选项时记录的文件：

Setup.exe -s -f1C:\temp\setup.iss

-z

防止 Setup.exe 在初始化过程中检查可用内存。当在内存超过 256 MB 的计算机上运行安装程序时需要这一开关。如果不使用它，则 Setup.exe 报告内存不足并退出。


重新安装 Analysis Services

若要重新安装 Microsoft® SQL Server™ 2000 Analysis Services，请执行以下步骤：

  1. 如果对 FoodMart 2000 示例数据库进行了更改并希望保存这些更改，请备份 FoodMart2000.mdb，该文件默认情况下安装到以下位置：C:\Program Files\Microsoft Analysis Services\Samples。否则，将在安装过程中重写该文件。

  2. 安装 Analysis Services。有关更多信息，请参见运行安装程序。有关更多信息，请参见本章前面的"运行安装程序"。

说明 重新安装 Analysis Services 不会删除包含 Analysis Services 元数据的 Analysis Services 知识库 (msmdrep.mdb)。但是，必须在重新安装后处理该知识库中的所有多维数据集。如果在重新安装前已备份 FoodMart 2000 示例数据库，则请还原 FoodMart2000.mdb 以恢复对该文件的更改。


停止或删除 Analysis Services

若要停止 Microsoft® SQL Server™ 2000 Analysis Services，请执行以下步骤：

  1. 打开"控制面板"。

  2. 如果计算机的操作系统是 Windows® 2000，则打开"管理工具"文件夹，然后双击"服务"。

    如果计算机的操作系统是 Windows NT® 4.0，则双击"服务"。

  3. 选择 MSSQLServerOLAPService，然后在"对策"菜单上单击"停止"按钮。

  4. 一直等到应用程序通知您该服务已经被停止。

若要删除 Analysis Services，请使用"控制面板"中的"添加/删除程序"应用程序。删除 Analysis Services 不会删除包含 Analysis Services 元数据的 Analysis Services 知识库 (msmdrep.mdb) 和查询日志 (msmdqlog.mdb)。如果要完全删除 Analysis Services，必须手工删除这些文件。


从早期版本升级

若要从 Microsoft® SQL Server™ 2000 Analysis Services 的早期版本（以前称为 OLAP 服务）升级，请执行下列操作：

  1. 备份 Analysis Services 知识库和查询日志。

  2. 在安装 Analysis Services 之前，为防止数据丢失，请备份包含 Analysis Services 元数据的 Analysis Services 知识库 (Msmdrep.mdb) 和查询日志 (Msmdqlog.mdb)。这些文件位于 Analysis Services 文件夹的 Bin 文件夹中。

    通过运行 Analysis Services 安装程序安装 Analysis Services。有关更多信息，请参见运行安装程序。有关更多信息，请参见本章前面的"运行安装程序"。

当从早期版本升级时，安装程序不会删除或替换 Analysis Services 知识库或查询日志。

说明 Analysis Services 的默认位置已从 Analysis Services 早期版本的 C:\Program Files\OLAP Services 更改为此版本的 C:\Program Files\Microsoft Analysis Services。


向后兼容性

Microsoft® SQL Server™ 2000 Analysis Services 与 SQL Server 7.0 版 OLAP 服务兼容。SQL Server 7.0 OLAP 服务中创建的多维数据集需要迁移到更新的元数据知识库格式并重新处理。否则，现有多维数据集、角色、共享维度等等的结构不需要更改。有关将 SQL Server 7.0 OLAP 服务知识库迁移到 SQL Server 2000 Meta Data Services 的更多信息，请参见迁移 Analysis Services 知识库。有关将 SQL Server 7.0 OLAP 服务知识库迁移到 SQL Server 2000 Meta Data Services 的更多信息，请参见 SQL Server 联机丛书中的"迁移 Analysis Services 知识库"主题。

以下部分涉及 SQL Server 7.0 OLAP 服务的向后兼容性。

Analysis Services 的管理

Analysis Manager 向后与 SQL Server 7.0 OLAP 服务兼容。它能够同时管理 OLAP 服务器（随 SQL Server 7.0 OLAP Services 一起的服务器）和分析服务器（随 SQL Server 2000 Analysis Services 一起的服务器）。当管理 OLAP 服务器时，SQL Server 7.0 Service Pack 2 代码的 OLAP 服务部分用于确保完全向后兼容。Service Pack 2 中的加载项程序现在已经与 Analysis Manager 集成，无需安装它即可管理 OLAP 服务器。

客户端和本地多维数据集支持

SQL Server 7.0 OLAP 服务客户端组件不支持 SQL Server 2000 Analysis Services 或本地多维数据集中的一些功能。有关更多信息（包括功能列表），请参见 7.0 Analysis Services 客户端和本地多维数据集支持。有关更多信息（包括功能列表），请参见本章后面的"7.0 Analysis Services 客户端和本地多维数据集支持"。

决策支持对象

Analysis Services 现在包括更新的决策支持对象 (DSO) 版本，后者将在安装过程中自动安装。当管理分析服务器（随 SQL Server 2000 Analysis Services 提供的服务器）时，程序必须使用这个新的 DSO 版本。不必对这些程序进行其它改动。使用该 DSO 更新版本的程序与 OLAP 服务器（随 SQL Server 7.0 OLAP 服务提供的服务器）兼容，并能管理 OLAP 服务器；但是，在 OLAP 服务器中不能使用新特性。

PivotTable 服务

SQL Server 2000 Analysis Services 包括更新的 PivotTable® 服务版本。使用 PivotTable 服务的客户端应用程序在连接分析服务器时不需要使用这个新版本，除非需要访问包含新特性的对象。使用 PivotTable 服务早期版本的客户端应用程序看不到使用这些新特性的对象（如包括父子维度的数据挖掘模型和多维数据集）。使用更新的 PivotTable 服务版本的客户端应用程序可以连接任何版本的服务器。使用更新的 PivotTable 服务版本的客户端应用程序可以使用以下属性配置它们的兼容性设置：

  1. MDX Compatibility 属性

  2. MDX Unique Name Style 属性

  3. Secured Cell Value 属性

  4. Visual Mode 属性
自定义加载项程序

为供 SQL Server 7.0 OLAP 服务使用而开发的自定义加载项程序仍可以供 SQL Server 2000 Analysis Services 使用。不需要对它们进行更改。

存档、还原和迁移数据

Analysis Services 支持存档和还原数据库以及在不同的产品版本间迁移知识库的部分（不是全部）排列/置换。有关支持的迁移路径的信息，请参见支持的 Analysis Services 知识库迁移路径。有关支持的迁移路径的信息，请参见本章后面的"支持的 Analysis Services 知识库迁移路径"。有关在不同的产品版本间存档和还原数据的信息，请参见在不同的 Analysis Services 版本间存档和还原数据库。有关在不同的产品版本间存档和还原数据的信息，请参见本章后面的"在不同的 Analysis Services 版本间存档和还原数据库"。


7.0 Analysis Services 客户端和本地多维数据集支持

下表显示 Microsoft® SQL Server™ 7.0 OLAP 服务客户端组件和 SQL Server 2000 Analysis Services 本地多维数据集所支持的新服务器功能。当某功能可能导致 7.0 客户端应用程序错误地转换数据时，服务器将防止多维数据集可见并阻止客户端连接到多维数据集。如果本地多维数据集中缺少某个功能，而这可能更改给用户显示的数据值，则不能创建使用该功能的本地多维数据集。

对于下面列出的每个功能，下表都显示包含该功能的多维数据集在 7.0 客户端应用程序上是否可见，还显示如果该多维数据集可见，则 7.0 客户端应用程序是否可以使用该功能。对于每个功能，下表还显示是否可使用该功能创建本地多维数据集，以及在本地多维数据集中是否支持该功能。

功能 | 多维数据集在 7.0 客户端上可见 | 功能在 7.0 客户端上可用 | 可使用功能创建本地多维数据集 | 在本地多维数据集中支持
对策 | 是 | 否 | 是 | 否
其它身份验证方法 | 是 | 是 | 是 | (2)
计算单元 | 否 | 否 | 否 | 否
可更改维度 | 是 | 否 | 是 | 否
自定义成员公式 | 否 | 否 | 否 | 否
自定义汇总公式 | 否 | 否 | 否 | 否
默认成员 | 否 | 否 | 是 | 是
维度安全性 | 否 | 否 | 否 | 否
DistinctCount | 否 | 否 | 否 | 否
钻取 | 是 | 否 | 是 | 否
增强单元安全性 | 是 | 是 | 是 | 否
增强虚拟维度 (1) | 是 | 是 | 是 | 不可用
超出 7.0 限制(3) | 否 | 否 | 是 | 是
链接多维数据集 | 是 | 不可用 | 是 | 否
成员组 | 是 | 是 | 是 | 是
有数据的成员 | 是 | 是 | 是 | 是
新 MDX 函数 | 是 | 否 | 是 | (4)
父子维度 | 否 | 否 | 是 | 是
不齐整维度 | 是 | 是 | 是 | 是
ROLAP 维度 | 是 | 不可用 | 是 | 否
具有相同名称的兄弟 | 否 | 否 | 是 | 是
写启用的维度 | 是 | 否 | 是 | 否

1 对以前规定的虚拟维度中只能有 760 个成员的限制不适用。
2 本地多维数据集不支持单元安全性。
3 在多维数据集中超出 127 个度量值，在多维数据集中超出 63 个维度，或在多维数据集中超出 128 个级别。有关 SQL Server 2000 Analysis Services 限制的信息，请参见规范和限制。有关 SQL Server 2000 Analysis Services 限制的信息，请参见 SQL Server 联机丛书中的"规范和限制"主题。
4 对于 SQL Server 7.0 OLAP 服务客户端，不支持新的多维表达式 (MDX) 功能。对于本地多维数据集，可使用新的 MDX 功能，但 LookUpCube 除外。不在本地多维数据集中创建使用 LookUpCube 的计算成员。


支持的 Analysis Services 知识库迁移路径

可将 Microsoft® SQL Server™ 2000 Analysis Services 知识库从默认的 Microsoft Access（Microsoft Jet 3.5 或 4.0）数据库迁移到位于相同或不同计算机上的 SQL Server 数据库。不能将 SQL Server 知识库迁移到 Microsoft Access 知识库。当迁移数据库时，可将格式从本机格式迁移到 SQL Server 2000 Meta Data Services 格式。若要在本机格式和 Meta Data Services 格式之间迁移 SQL Server 数据库知识库，必须将它从一个 SQL Server 数据库迁移到另一个。下表显示支持的知识库数据库迁移路径。

 |  | 到本机 |  | 到 MDS
 |  | Jet 3.5/4.0 | SQL Server 7.0/2000 | SQL Server 2000
从本机 | Jet 3.5/4.0 | 否 | 是 | 是
 | SQL Server 7.0/2000 | 否 | 是(2) | 是(2)
从 MDS(1) | SQL Server 2000 | 否 | 是(2) | 是(2)

1 MDS 表示 SQL Server 2000 支持的 Meta Data Services（以前称为 Microsoft 知识库）格式。
2 源数据库和目的数据库必须是不同的数据库。

请参见

迁移 Analysis Services 知识库

用于 Jet 的 OLE DB 提供程序


在不同的 Analysis Services 版本间存档和还原数据库

在分析服务器（随 Microsoft SQL Server 2000 Analysis Services 安装的服务器）上，可还原使用 OLAP 服务器（随 SQL Server 7.0 OLAP 服务安装的服务器）或分析服务器存档的数据库。下表显示所有支持的数据库还原路径，这些数据库是在 SQL Server 7.0 OLAP 服务或 SQL Server 2000 Analysis Services 中，使用 Microsoft Jet 3.5 或 4.0 OLE DB 提供程序，以本机格式或 SQL Server 2000 Meta Data Services 格式存档的。

 |  |  | 到本机 |  |  |  | 到 MDS
 |  |  | Jet 3.5/4.0 |  | SQL Server |  | SQL Server
 |  |  | 7.0 | 2000 | 7.0 | 2000 | 2000
从本机(1) | Jet 3.5/4.0 | 7.0 | 是 | 是 | 是 | 是 | 是
 |  | 2000 | 否(3) | 是 | 否(3) | 是 | 是
 | SQL Server | 7.0 | 是 | 是 | 是 | 是 | 是
 |  | 2000 | 否(3) | 是 | 否(3) | 是 | 是
从 MDS(2) | SQL Server | 2000 | 否(3) | 是 | 否(3) | 是 | 是

1 From 指定存档数据库的 OLAP 服务或 Analysis Services 的知识库格式、数据库引擎和版本；而 To 指定还原数据库的 OLAP 服务或 Analysis Services 的知识库格式、数据库引擎和版本。
2 MDS 表示 SQL Server 2000 支持的 Meta Data Services（以前称为 Microsoft 知识库）格式。
3 OLAP 服务器不支持还原 Analysis Services 数据库。

请参见

存档和还原数据库

用于 Jet 的 OLE DB 提供程序


Microsoft SQL Server 2000 版权和免责声明

本文档（包括在本文档中使用的示例应用程序）仅供参考，Microsoft 在文档中未做任何明确或暗含的担保。本文档中的信息（包括示例、URL 和其它 Internet Web 站点引用）若有更改，恕不另行通知。使用本文档的任何风险或后果由用户自负。

示例主要用于说明概念或特定语句或子句的合理用法。大多数示例不包括完整的生产系统通常所包含的所有代码，因为大量的一般性用于数据验证和错误处理的内容已经删除，以便使示例突出特定的概念或语句。技术支持不适用于这些示例或所提供的源代码。

除非另行说明，否则在本文档例子中涉及的公司、单位、产品、个人和事件示例都是虚构的，与任何真实的公司、单位、产品、个人或事件没有任何刻意或隐含的联系。遵从所有适用的版权法规是用户的义务。在不限制版权权利的前提下，未经 Microsoft Corporation 明确的书面许可，不得对本文档的任何部分进行复制、存储或引入到任何检索系统中，或者以任何形式或任何途径（电子、机械、影印、录制或其它手段）或出于任何目的进行传播。

Microsoft 可能拥有对本文档中所包含内容的专利、专利申请、商标、版权或其它知识产权。除非在 Microsoft 的任何书面许可协议中明确授予，否则提供本文档并不意味着提供这些专利、商标、版权或其它知识产权的任何许可。

1996-2000 Microsoft Corporation。保留所有权利。

Active Directory、ActiveX、BackOffice、CodeView、Developer Studio、FoxPro、JScript、Microsoft、Microsoft Press、Microsoft SQL Server、MSDN, MS-DOS、Outlook、PivotChart、PivotTable、PowerPoint、Visual Basic、Visual C++、Win32、Windows 2000、Windows 和 Windows NT 都是 Microsoft Corporation 在美国和/或其它国家/地区的注册商标或商标。

在此提及的真实的公司和产品名称可能分别是其所有者的商标。


其它 SQL Server 资源

下表提供有关 Microsoft® SQL Server™ 及其相关产品和技术信息的 Internet 资源。

资源 | 地址
Microsoft 产品支持服务 Web 站点 | http://support.microsoft.com/directory
Microsoft Usenet | news://msnews.microsoft.com/
Microsoft Windows® 硬件兼容性列表 | http://www.microsoft.com/hcl
MSDN® | http://msdn.microsoft.com
Meta Data Services（即以前的 Microsoft 知识库） | http://msdn.microsoft.com
SQL Server 专业协会 | http://www.sqlpass.org/
Microsoft SQL Server 开发人员中心 | http://msdn.microsoft.com
SQL Server 杂志 | http://www.sqlmag.com/
Microsoft SQL Server 技术支持 | http://support.microsoft.com/support/sql
TechNet 站点 | www.Microsoft.com/technet
Microsoft 辅助工具 Web 站点 | http://www.microsoft.com/enable
Microsoft SQL Server Web 站点 | http://www.microsoft.com/sql
Microsoft SQL Server Web 站点上的 English Query 页 | http://www.microsoft.com/sql
Microsoft SQL Server Web 站点上的 Analysis Services 页 | http://www.microsoft.com/sql
XML 开发人员中心 | http://www.msdn.microsoft.com/xml/default.asp


词汇

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 符号 英文索引表


使用 SQL Server 联机丛书中的辅助功能

下列主题描述了可用于在 SQL Server 联机丛书中导航的辅助功能。

请参见 Microsoft Web 站点上的 Accessibility（辅助功能）页。

改变文本显示

可以改变 SQL Server 联机丛书中文本的格式、字体和颜色。

更改辅助功能的格式或样式

  1. 在"选项"菜单上单击"Internet 选项"命令，然后单击"辅助功能"选项。

  2. 在"辅助功能"对话框中选择想要的选项，然后单击"确定"按钮。

这些更改不适用于 SQL Server 联机丛书的导航窗格和工具栏。上述步骤也更改 Microsoft® Internet Explorer 4.0 的辅助功能设置。

更改主题的字体大小

  • 在"选项"菜单上单击"Internet 选项"命令，然后单击"字体"选项。

这些更改不适用于 SQL Server 联机丛书的导航窗格和工具栏。上述步骤还会更改 Internet Explorer 的字体设置。

更改 SQL Server 联机丛书主题窗格的颜色

  1. 在 Microsoft Internet Explorer 4.0 中，单击"查看"菜单上的"Internet 选项"命令。

    在 Microsoft Internet Explorer 5.0 中，单击"工具"菜单上的"Internet 选项"命令。

  2. 在"常规"选项卡上，单击"颜色"按钮。

  3. 在"颜色"对话框中选择想要的选项，然后单击"确定"按钮。

  4. 若要应用新的颜色设置，请在"Internet 选项"对话框中单击"确定"按钮。

这些更改不适用于 SQL Server 联机丛书的导航窗格和工具栏。上述步骤也更改 Internet Explorer 的颜色设置。

使用键盘快捷键

下表显示可用于在 SQL Server 联机丛书中导航的键盘快捷键。

SQL Server 联机丛书
若要 | 按
关闭 SQL Server 联机丛书。 | ALT+F4
在 SQL Server 联机丛书和其它打开的窗口之间切换。 | ALT+TAB
显示"选项"菜单。 | ALT+O
更改 Microsoft® Internet Explorer 的设置。"Internet 选项"对话框包含辅助功能设置。若要更改这些设置，请单击"常规"选项卡，然后单击"辅助功能"按钮。 | ALT+O，然后按 I 键
隐藏或显示导航窗格。 | ALT+O，然后按 T 键
打印主题。 | ALT+O，然后按 P 键
向后移动到前一个主题。 | ALT+向左箭头键，或 ALT+O，然后按 B 键
向前移动到下一个主题（如果以前查看过该主题）。 | ALT+向右箭头键，或 ALT+O，然后按 F 键
打开或关闭搜索突出显示功能。 | ALT+O，然后按 O 键
在导航窗格和主题窗格之间切换。 | F6
在目录间滚动，随着滚动显示每个主题。 | ALT+向上箭头键，或 ALT+向下箭头键
在某个主题中滚动。 | 向上箭头键和向下箭头键，或 PAGE UP 键和 PAGE DOWN 键
在主题中所有链接或导航窗格选项卡上的所有选项间滚动。 | TAB

目录选项卡
若要 | 按
显示"目录"选项卡。 | ALT+C
打开和关闭丛书或文件夹。 | 加号 (+) 键和减号 (-) 键，或向左箭头键和向右箭头键
选择主题。 | 向下箭头键和向上箭头键
显示选定的主题。 | ENTER 键

索引选项卡
若要 | 按
显示"索引"选项卡。 | ALT+N
键入要搜索的关键字。 | ALT+W，然后键入关键字
在列表中选择关键字。 | 向上箭头键和向下箭头键
显示相关主题。 | ALT+D

搜索选项卡
若要 | 按
显示"搜索"选项卡。 | ALT+S
键入要搜索的关键字。 | ALT+W，然后键入关键字
开始搜索。 | ALT+L
在结果列表中选择主题。 | ALT+T，然后按向上箭头键和向下箭头键
显示选定的主题。 | ALT+D
在主题中搜索单词或短语。 | CTRL+F
在以前搜索的结果列表中搜索关键字。 | ALT+U
搜索与关键字相似的单词。例如，为关键字"run"查找"running"和"runs"这样的单词。 | ALT+M
只搜索主题标题。 | ALT+R

"书签"选项卡
若要 | 按
显示"书签"选项卡。 | ALT+I
将当前显示的主题添加到"书签"列表。 | ALT+A
在"书签"列表中选择主题。 | ALT+P，然后按向上箭头键和向下箭头键
显示选定的主题。 | ALT+D
从列表中删除选定的主题。 | ALT+R


使用搜索选项卡

SQL Server 联机丛书中有一个"搜索"选项卡，使您得以搜索 SQL Server 联机丛书中的每一个词以查找匹配的主题。例如，如果执行对单词"index"的全文检索，则将列出每个包含单词"index"的主题。可使用通配符表达式、嵌套表达式和布尔运算符来精确定义搜索。可请求相似单词匹配、只搜索主题的标题或搜索以前搜索的结果。

可突出显示在主题文件中找到的搜索项的所有实例。若要指定突出显示，请单击"选项"按钮，然后单击"搜索突出显示"。如果查看的主题很长，则只突出显示搜索单词或短语的前 500 个实例。仅当使用 Microsoft® Internet Explorer 4.0 或更高版本时该功能才有效。

搜索主题

搜索由想要查找的单词或短语组成。可使用通配符表达式、嵌套表达式、布尔运算符、相似单词匹配、以前的结果列表或主题标题来进一步定义搜索。

公式化查询的基本规则是：

  • 搜索不区分大小写，因此可以大写字符或小写字符键入搜索。

  • 可搜索字母 (a-z) 和数字 (0-9) 的任意组合。

  • 搜索时忽略标点符号，如英文的句号、冒号、分号、逗号和连字符。

  • 使用双引号或括号将搜索元素分组以区分每个元素。不能搜索引号。

如果搜索带扩展名的文件名，则应将整个字符串用双引号引起来 ("filename.ext")。否则，句号会将文件名分成两个单独的项。各项之间的默认运算符是 AND，在逻辑上等同于"filename AND ext"。

使用全文检索查找信息

  1. 单击"搜索"选项卡，然后键入想要查找的单词或短语。

  2. 单击箭头按钮将布尔运算符添加到搜索中。

  3. 单击"列出主题"，选择想要的主题，然后单击"显示"按钮。

  4. 若要对主题列表排序，请单击"标题"、"位置"或"级别"列标题。

说明 "级别"列下的主题等级不是由任何标准决定的（例如，字母顺序或最多点击次数）。不要使用等级决定要查看的主题。

搜索单词或短语

可搜索单词或短语并使用通配符表达式。通配符表达式使您得以使用问号或星号搜索一个或多个字符。下表描述这些不同类型的搜索的结果。

搜索 | 示例 | 结果
单个单词 | select | 包含单词"select"的主题。（还将查找其语法变化形式，如"selector"和"selection"。）
短语 | "new operator" 或 new operator | 包含字面短语"new operator"及其所有语法变化形式的主题。 如果没有引号，该查询相当于指定"new AND operator"，将查找包含这两个单词而非该短语的主题。
通配符表达式 | esc* 或 80?86 | 包含项"ESC"、"escape"、"escalation"等等的主题。在项中不能只有星号。 包含项"80186"、"80286"、"80386"等等的主题。在项中不能只有问号。

选择"搜索"选项卡底部的"匹配相似的单词"复选框，可以包含与搜索短语相似的语法变化形式。

定义搜索项

AND、OR、NOT 和 NEAR 运算符使您能够通过创建搜索项间的关系来精确定义搜索。下表显示可以如何使用这些运算符。如果没有指定运算符，则使用 AND。例如，查询"spacing border printing"等同于"spacing AND border AND printing"。

搜索 | 示例 | 结果
同一主题中的两项。 | dib AND palette | 包含单词"dib"和"palette"两者的主题。
同一主题中的任一项。 | raster OR vector | 包含单词"raster"或单词"vector"或两者的主题。
第一项，无第二项。 | ole NOT dde | 包含单词"OLE"但不包含单词"DDE"的主题。
同一主题中靠近的两项。 | user NEAR kernel | 在单词"kernel"附近的八个单词中包含单词"user"的主题。

字符 |、& 和 ! 不作为布尔运算符使用（必须使用 OR、AND 和 NOT）。

说明 必须定义以 AND、OR、NOT或 NEAR 打头并带有双引号的搜索短语，否则，这些单词将被解释为运算符，且不执行搜索。例如，搜索短语 NOT FOR REPLICATION 返回错误信息，而搜索短语"NOT FOR REPLICATION"则成功。

在搜索时使用嵌套表达式

嵌套表达式使您得以创建复杂的信息搜索。例如，"control AND ((active OR dde) NEAR window)"查找包含单词"control"以及两个靠近的单词"active"和"window"的主题，或查找包含单词"control"以及两个靠近的单词"dde"和"window"的主题。

使用嵌套表达式搜索帮助主题的基本规则是：

  • 可使用括号将表达式嵌套在查询中。括号中的表达式先于查询的其余部分求值。

  • 如果查询不包含嵌套表达式，则从左到右求值。例如："Control NOT active OR dde"会查找包含单词"control"而不包含单词"active"的主题，或查找包含单词"dde"的主题。另一方面，"control NOT (active OR dde)"查找包含单词"control"而不包含单词"active"或"dde"的主题。

  • 嵌套表达式的深度不能多于五层。

从以前的搜索中只搜索上一组主题

该功能使您能够缩小搜索范围以避免找出过多的主题。通过使用该选项，可从以前的搜索中搜索结果列表。

  1. 在"搜索"选项卡上，选择"搜索上一次结果"复选框。

  2. 单击"列出主题"，选择想要的主题，然后单击"显示"按钮。

若要搜索 SQL Server 联机丛书中的所有文件，必须清除该复选框。如果以前用过该功能，当单击"搜索"选项卡时，该复选框是被选定的。

查找与搜索项相似的单词

该功能使您能够包含与搜索短语相似的语法变化形式。例如，对单词"add"的搜索将查找"add"、"adds"和"added"。

  1. 单击"搜索"选项卡，键入想要搜索的单词或短语，然后选择"匹配相似的单词"复选框。

  2. 单击"列出主题"，选择想要的主题，然后单击"显示"按钮。

该功能只定位带常见后缀的单词变化形式。例如，对单词"add"的搜索将查找"added"，而不查找"additive"。

搜索 SQL Server 联机丛书主题标题中的单词

  1. 单击"搜索"选项卡，键入想要查找的单词或短语，然后选择"仅搜索标题"复选框。

  2. 单击"列出主题"，选择想要的主题，然后单击"显示"按钮。


使用子集查找主题

SQL Server 联机丛书文档被分成一套默认子集。子集面向特定的用户，并且每个子集涵盖多个主题。子集通过将搜索点击次数减到最少，使搜索与活动有关的信息变得更容易。例如，ADO 程序员可以使用 ADO 程序员子集查找与编写 ADO 应用程序有关的信息，而不会得到 DB Library 和嵌入式 SQL 子集中具有类似信息的主题。可以定义自己的子集并对其进行搜索。

定义自己的子集

  1. 在"查看"菜单上单击"定义子集"命令。

  2. 在"选择要显示的子集"框中选择"新建"按钮。

  3. 在"可用项目"列表中单击要收集到子集中的项目，然后单击"添加"按钮。

  4. 在"另存新子集为"框中键入一个子集名称，然后单击"保存"按钮。

使用默认子集

  • 使用 SQL Server 联机丛书导航窗格中的"活动子集"下拉式列表框选择想要的子集。

删除子集

说明 如果删除一个子集，则无法自动恢复它；必须重新定义该子集。

  1. 在"查看"菜单上单击"定义子集"命令。

  2. 在"选择要显示的子集"框中选择要删除的子集，然后单击"删除"按钮。


更改主题显示方式

可以很容易地更改 SQL Server 联机丛书窗口以及导航和主题窗格的位置和大小：

  • 若要调整导航或主题窗格的大小，请将光标指向这两个窗格之间的分割线。当指针变成双箭头时，向左或向右拖动分割线。

  • 若要缩小或放大 SQL Server 联机丛书窗口，请将光标指向 SQL Server 联机丛书窗口的任意一角。当指针变成双头箭头时，拖放这一角。

  • 若要更改 SQL Server 联机丛书窗口的高度或宽度，请将光标指向 SQL Server 联机丛书窗口的顶边、底边、左边或右边。当指针变成双头箭头时，拖放窗口的边线。

  • 若要在屏幕上重新定位 SQL Server 联机丛书，请单击标题栏并将 SQL Server 联机丛书窗口拖放到新位置。

说明 当打开 SQL Server 联机丛书时，它以上次指定的大小和位置显示。


查找主题

若要在 SQL Server 联机丛书中查找主题，请使用导航窗格中的选项卡：

  • 单击"目录"选项卡浏览目录，该目录是可展开的分层主题列表。

  • 单击"索引"选项卡查看索引项列表，然后键入要搜索的关键字或拖动滑块在列表中查找。常有多个索引项指向同一个主题。

  • 单击"搜索"选项卡然后键入关键字，在 SQL Server 联机丛书中查找每个可能包含该关键字的内容。有关更多信息，请参见使用搜索选项卡。

    说明 搜索结果显示为三列："标题"、"位置"和"级别"。"级别"列下的主题等级不是由任何标准决定的（例如，字母顺序或最多点击次数）。不要使用等级决定要查看的主题。

  • 单击工具栏上的导航按钮。有关更多信息，请参见使用 SQL Server 联机丛书。
创建和使用书签列表

书签列表为访问经常引用的主题提供便利的方法。

  • 若要创建"书签"主题列表，请定位要创建"书签"的主题，单击"书签"选项卡，然后单击"添加"命令。

  • 若要返回书签主题，请单击"书签"选项卡，选择主题，然后单击"显示"按钮。

  • 若要重命名主题，请在"书签"选项卡中选择主题，然后在"当前主题"框中键入新名称。

  • 若要删除"书签"主题，在"书签"选项卡中选择主题，然后单击"删除"按钮。
使用 URL 访问主题

可以使用 URL 指导某人到达 SQL Server 联机丛书中的某个主题。

指导某人到达 SQL Server 联机丛书中的某个主题

  1. 在要指导某人到达的那个页面上，在导航窗格中右击主题，然后单击"跳至 URL"命令。

  2. 复制出现在"当前的 URL"框中的 URL，然后将其粘贴到电子邮件或其它文档中。

  3. 告诉接收 URL 的人如何将 URL 粘贴到"跳至该 URL"对话框中。

    URL 还可以粘贴到 Microsoft Internet Explorer 的"地址"栏中。然而，这些操作不会调出 SQL Server 联机丛书，而只是显示选定的主题。


使用 SQL Server 联机丛书

SQL Server 联机丛书是随 Microsoft® SQL Server™ 2000 提供的联机文档。可以通过下列途径在 SQL Server 联机丛书中查找信息：

  • 在目录窗格间导航。

  • 在索引中键入关键字。

  • 键入词或短语并执行搜索。

SQL Server 联机丛书出现在包含下列窗格的窗口中：

导航窗格

该窗格位于窗口的左侧，包含"目录"、"索引"、"搜索"和"书签"选项卡。"目录"选项卡中的主题按任务或主题分层组织。

主题窗格

该窗格位于窗口的右侧，显示选定的主题或默认主题。

工具栏窗格

该窗格位于 SQL Server 联机丛书标题栏的下方，包含导航和命令按钮。

使用工具栏按钮

可以通过工具栏上的下列导航按钮，在 SQL Server 联机丛书中查找主题：

上一页

显示目录中列出的上一个主题。

下一页

显示目录中列出的下一个主题。

后退

显示上一步查看的主题。

前进

显示上一步显示的主题序列中的下一个主题。

主页

显示 SQL Server 联机丛书的主页。

说明 帮助查看器中的工具栏可能只包含这些导航按钮中的部分按钮。

工具栏上的其它按钮包括：

隐藏

隐藏导航窗格。当隐藏了导航窗格后，单击"显示"按钮以显示导航窗格。如果在隐藏导航窗格的情况下关闭 SQL Server 联机丛书，下次打开 SQL Server 联机丛书时该窗格仍保持隐藏状态。

定位

在导航窗格中显示主题的位置。

字体

在主题窗格中更改字体大小。

打印

打印选定的主题，并且包含打印所有子主题的选项。

在 SQL Server 联机丛书中导航

下面是关于在 SQL Server 联机丛书中进行导航的一些提示：

  • 若要返回 SQL Server 主页，请在工具栏上单击"主页"按钮。

  • 带下划线的彩色文本表示可链接到其它主题。若要链接到其它主题（包括 Web 页），请单击带下划线的彩色文本。

  • 许多主题包含相关主题的列表，称为"参阅"。若要跳转到某个相关主题，请单击要查看的主题标题。

  • 如果要经常使用某个主题，可以将其添加到"书签"列表中。有关更多信息，请参见查找主题。

  • 若要调用快捷菜单命令，请右击"目录"选项卡或主题窗格。有关更多信息，请参见使用 SQL Server 联机丛书中的辅助功能。
复制和打印主题

若要复制或打印主题，请使用以下步骤。

复制主题

  1. 在主题窗格中右击要复制的主题，然后单击"全选"命令。

  2. 再次右击，然后单击"复制"命令。主题内容即被复制到剪贴板。

  3. 打开要将主题复制到的文档。

  4. 将光标定位在希望信息出现的位置。

  5. 在"编辑"菜单上单击"粘贴"命令。

说明 如果只想复制主题的一部分，请选择要复制的文本并右击，然后单击"复制"命令。

打印当前主题

  • 右击主题，然后单击"打印"命令。

说明 如果从"目录"选项卡打印（右击某个主题，然后单击"打印"命令），将看到仅打印选定的主题或打印选定的主题及所有子主题的选项。

使用快捷菜单命令

下表显示可用于显示和自定义信息的快捷菜单命令。

命令 | 描述
在目录中右击，然后单击"全部关闭"命令。 | 关闭所有丛书或文件夹。该命令仅在显示了"目录"选项卡时有效。
右击，然后单击"打印"命令。 | 打印主题。

这些命令可通过键盘访问。按 SHIFT+F10 显示快捷菜单，然后单击适当的快捷键。或者启用鼠标键。使用鼠标键组合显示快捷菜单，然后单击适当的快捷键。


开放式数据服务（级别 3）

下表列出的开放式数据服务网关函数、宏和事件不再受支持。

函数/宏名称
srv_ackattention
srv_config
srv_config_alloc
srv_errhandle
srv_event
srv_eventdata
srv_getconfig
srv_handle
srv_init
srv_langcpy
srv_langlen
srv_langptr
srv_log
srv_post_handle
srv_pre_handle
srv_run
srv_setevent
srv_terminatethread


DBCC（级别 3）
SQL Server 6.x | SQL Server 2000
DBCC NEWALLOC 检查相应的扩展盘区结构的数据页和索引页。 | 支持 DBCC NEWALLOC 仅为保持向后兼容性，并与 DBCC CHECKALLOC 相同。 考虑删除所有对 DBCC NEWALLOC 的引用，并替换为对 DBCC CHECKALLOC 的引用。
DBCC ROWLOCK 动态地启用表上的插入行锁定 (IRL) 操作。 | 行级锁定为自动。支持 DBCC ROWLOCK 仅为保持向后兼容性。 考虑删除所有对 DBCC ROWLOCK 的引用。
DBCC TEXTALL 在数据库中选定含有 text 或 image 列的表，并在这些表上运行 DBCC TEXTALLOC。 | DBCC CHECKDB 在数据库中检查 text、ntext 和 image 列的一致性。支持 DBCC TEXTALL 仅为保持向后兼容性。 考虑删除所有对 DBCC TEXTALL 的引用，并替换为对 DBCC CHECKDB 的引用。
DBCC TEXTALLOC 检查表的 text 或 image 列的分配。 | DBCC CHECKTABLE 检查指定表的数据、索引、text、ntext 和 image 页的完整性。支持 DBCC TEXTALLOC 仅为保持向后兼容性。 考虑删除所有对 DBCC TEXTALLOC 的引用，并替换为对 DBCC CHECKTABLE 的引用。
DBCC DBREPAIR 除去指定的、通常已损坏的数据库。 | 使用 DROP DATABASE 除去或删除 SQL Server 数据库。使用 DBCC DBREPAIR 仅为保持向后兼容性。 考虑删除所有对 DBCC DBREPAIR 的引用，并替换为对 DROP DATABASE 的引用。


触发器和系统存储过程（系统）（级别 4）
SQL Server 6.x | SQL Server 2000
当 inserted 或 deleted 表用于 CREATE TRIGGER 语句中时，这两个表中的 text 或 image 列返回的值不是始终正确的。 | 在 CREATE TRIGGER 语句中，对 inserted 或 deleted 表的 text 或 image 列的引用返回 NULL 值。 与 SQL Server 早期版本相比，应该有不同的结果。删除 CREATE TRIGGER 语句中所有对 inserted 或 deleted 表的 text 或 image 列的引用。
不支持触发器直接递归（触发器调用自身的能力），但允许间接递归。 | 使用 ALTER DATABASE 的 RECURSIVE_TRIGGERS 选项启用触发器直接递归。使用 nested triggers 配置选项启用间接递归。 与 SQL Server 早期版本相比，应该有不同的结果。
当双方初始化后，在 4.x 版和 6.x 版的服务器间存在通讯。 | 4.x 或 6.x 版的服务器可与 SQL Server 2000 服务器通讯。但是，不支持从 SQL Server 2000 服务器到 4.x 服务器的服务器间通讯。 与 SQL Server 早期版本相比，应该有不同的结果。将 4.x 服务器升级为 SQL Server 6.x 或 SQL Server 2000。
用于用户定义表的 sp_tableoption 设置选项值，包括插入行级锁定 (IRL) 的使用。 | 不再支持 sp_tableoption 中的插入行级锁定 (IRL) 参数，已替换为完全行级锁定。 与 SQL Server 早期版本相比，应该有不同的结果。删除所有通过 sp_tableoption 实现的对 IRL 操作的引用，并改用 SQL Server 2000 的内置行级锁定。调用 sp_tableoption 的应用程序应继续正常工作；将忽略 IRL 参数。
xp_readmail 的 @message 参数为 varchar(255)。xp_sendmail 的 @message 和 @query 参数为 varchar(255)。 | @message 和 @query 参数现在为 varchar(8000)。 当使用 xp_readmail 的 @message 参数和 xp_sendmail 的 @message 和 @query 参数时，与 SQL Server 早期版本相比，应有不同的行为。


实用工具（级别 4）
SQL Server 6.x | SQL Server 2000
isql/w 使用 DB-Library。与 ANSI_WARNINGS 一样，SQL-92 设置在默认情况下设置为关。 | SQL 查询分析器使用 SQL Server ODBC 驱动程序，该驱动程序在默认情况下将这些 SQL-92 选项设置为开：SET ANSI_WARNINGS、SET ANSI_PADDING 和 SET ANSI_NULLS。任何返回的错误都采用 ODBC 错误格式，而不是 DB-Library 错误格式。 与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。与 isql 实用工具或 SQL Server 6.5 版 isql/w 相比，SQL 查询分析器应有不同的结果。
isql/w 使用 ANSI-ISO 代码页。当使用 OEM 代码页 850 或 437 连接到服务器时，必须显式启用 ANSI to OEM character translation。否则，使用扩展字符的数据将显示为乱码。 | SQL Server 2000 ODBC 驱动程序自动检测是否需要转换，并创建自动的 ANSI 到 OEM 的转换。另外，当 SQL 查询分析器连接时，将启用自动检测。 当在 SQL 查询分析器中使用国际或扩展字符时，应有不同的行为。

有关 SQL 查询分析器改动的其它信息，请参见 SQL Server 2000 和 SQL Server 7.0 版中的"SQL 查询分析器中的默认连接选项设置"讨论。


配置（级别 4）

管理脚本可能已使用这些配置选项。有关配置选项的更多信息，请参见 sp_configure 和设置配置选项。

SQL Server 6.x | SQL Server 2000
管理脚本可能已使用非高级选项的 media retention 来设置每个备份媒体在用于数据库或事务日志转储后保持的天数。 | media retention 现在是高级选项。 与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。只有启用 sp_configure 的高级配置选项时，才显示 media retention 配置选项。


DATEPART 和 SET DATEFIRST（级别 4）
SQL Server 6.x | SQL Server 2000
DATEPART 函数的 SET DATEFIRST 设置对"周"日期部分无效。 | "周"日期部分可能给出与 Microsoft® SQL Server™ 早期版本不同的值。但是，仅当 SET DATEFIRST 设置不为默认值（美国英语的默认值为 7）时才有差别。 如果 DATEPART 函数提供的年有 366 天，且该年的第一周开始于周六，年结束于从周日开始算起的周的第一天，则返回的周值为 54。 当使用 ISO 8601 标准时，周值总是从 1 到 53，这保证年的第一周至少有 4 天。 与 SQL Server 早期版本相比，应该有不同的结果。使用 SET DATEFIRST 的默认值，这样 DATEPART 将为"周"日期部分返回预期的结果。否则，DATEPART 值将比预期值小 1。


重建 master 数据库（级别 4）
SQL Server 6.x | SQL Server 2000
执行 SQL Server 安装程序会重建 master 数据库。 | 不再支持。SQL Server 包括重建主控 (rebuildm) 实用工具。 使用位于 x:\Program Files\Microsoft SQL Server\80\Tools\Binn 文件夹中的重建主控 (rebuildm) 实用工具重建 master 数据库。


系统存储过程（扩展）（级别 3）
SQL Server 6.x | SQL Server 2000
xp_grantlogin 和 xp_revokelogin 授予或废除 SQL Server 访问基于 Windows NT 的组或用户的权力。 | 使用 sp_grantlogin 和 sp_revokelogin，即使支持 xp_grantlogin 和 xp_revokelogin 仅为保持向后兼容性。 考虑删除所有对 xp_grantlogin 和 xp_revokelogin 的引用，并替换为对 sp_grantlogin 和 sp_revokelogin 的引用。


安全性（级别 4）
SQL Server 6.x | SQL Server 2000
SYSTEM_USER niladic 函数对于所有 Microsoft Windows NT® 登录都返回空值。 | 如果 Windows 身份验证与 SYSTEM_USER 函数一起使用，则返回适当的域名和登录名。 当一起使用 SYSTEM_USER 和 Windows 身份验证时，与早期版本相比，应该有不同的结果。


数据库选项（级别 3）
SQL Server 6.x | SQL Server 2000
sp_dboption 的 publish 选项在数据库中启用或禁用发布。 | sp_replicationdboption 可用于在数据库中启用或禁用发布。 删除所有对 sp_dboption publish 的引用，并替换为对 sp_replicationdboption 的引用。


查询性能（级别 3）
SQL Server 6.x | SQL Server 2000
查询可包括无性能含义的服务器用户 ID (SUID)，如下表所示。 | 使用 SUID 的查询继续运行，并产生与 SQL Server 早期版本中相同的结果。但对于新的安全性设计，SUID 不再是本机模式，因此存在重大的性能损失。 考虑删除所有对 SUID 的引用，并替换为对 SID 的引用（如下表所示），以免查询性能降低。

SQL Server 6.x | 替换为 SQL Server 2000 SID
SUSER_ID | SUSER_SID，返回 SID
SUSER_NAME | SUSER_SNAME，接受 SID 作为输入
syslogins.suid | syslogins .sid
sysdatabases.suid | sysdatabases .sid
sysremotelogins.suid | sysremotelogins .sid
sysusers.suid | sysusers .sid
sysalternates.suid | sysusers .isaliased
sysalternates.altsuid | sysusers .isaliased

示例

A. 使用 SID 和 SUID显示在 sysusers 中的用户登录名

下例显示 SQL Server 6.x 查询，该查询显示 sysusers 中所有用户的登录名：

SELECT L.name
FROM master.dbo.syslogins L, sysusers U
WHERE L.suid = U.suid
-- Or
SELECT suser_name(suid) AS name
FROM sysusers

以下是重写的、使用 SID 而非 SUID 的查询：

SELECT L.loginname
FROM master.dbo.syslogins L, sysusers U
WHERE L.sid = U.sid
-- Or
SELECT suser_sname(sid) AS name
FROM sysusers


SELECT（级别 3）
SQL Server 6.x | SQL Server 2000
如果有一个非聚集索引匹配 ORDER BY 子句，则 FASTFIRSTROW 优化程序提示导致优化程序使用非聚集索引。 | OPTION (FAST n) 查询提示替换 FASTFIRSTROW。但是，保留 FASTFIRSTROW 仅为保持向后兼容性。 考虑删除所有对 SELECT 语句中的 FASTFIRSTROW 的引用，并替换为对 OPTION (FAST n) 的引用。
INDEX = 语法指定用于表提示的一个或多个索引。 | 仅为保持向后兼容性。 考虑删除所有对 INDEX = 的引用，并替换为（当使用多个索引提示时）对 INDEX(index, index...) 的引用，如 SELECT 中所示。


UPDATE（级别 4）
SQL Server 6.x SQL Server 2000
在 Microsoft® SQL Server™ 6.0 版中，允许下面的 UPDATE 语句对同一个基表使用两个不同的表别名：
CREATE TABLE t1 (c1 int)
GO
INSERT t1 VALUES (1)
INSERT t1 VALUES (2)
GO
UPDATE t1
SET c1 = 50
FROM t1 a1, t1 a2
WHERE a1.c1 = 1 AND
a2.c1 = 2
GO
已不再支持该语法。在 UPDATE 关键字后使用别名而非表名。UPDATE 语句将重写为：
UPDATE a1
SET c1 = 50
FROM t1 a1, t1 a2
WHERE a1.c1 = 1 AND
a2.c1 = 2

与 SQL Server 6.0 版相比，应有不同的行为。
下面具有表和别名引用的 UPDATE 语句有效。
USE pubs
GO
UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date =
(SELECT MAX(sales.ord_date) FROM sales)
GO
在 UPDATE 关键字后指定的别名必须匹配 SET 关键字后指定的别名。如果没有此更改，要使 UPDATE 语句的功能与 6.x 版相同，必须将兼容级别设置改为 65。

以下为重写后的同一 UPDATE 语句：

USE pubs
GO
UPDATE t
    SET t.ytd_sales = t.ytd_sales + s.qty
        FROM titles t, sales s
           WHERE t.title_id = s.title_id
            AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
GO

当在 UPDATE 语句的 UPDATE 关键字和 UPDATE 语句的 SET 关键字后使用不同的表引用时，与 SQL Server 6.x 版相比，应有不同的行为。


ODBC（级别 4）
SQL Server 6.x | SQL Server 2000
在 2.65 版 ODBC 驱动程序中，以秒为单位指定长时间运行查询间隔，而长时间运行查询间隔通过用驱动程序专用连接选项 SQL_COPT_SS_PERF_QUERY_INTERVAL 调用 SQLSetConnectOption 来指定。 | 以毫秒为单位指定 SQL_COPT_SS_PERF _QUERY_INTERVAL 值。 与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。将 SQL_COPT_SS_PERF_QUERY_INTERVAL 值乘以 1,000，使秒数转换为毫秒数。有关 SQL_COPT_SS_PERF_QUERY_INTERVAL 的更多信息，请参见 SQLSetConnectAttr。
对于 ODBC SQL Server 驱动程序的早期版本，来自连续的 PRINT、RAISERROR、DBCC 或类似语句（在批处理或存储过程中）的消息将组合到单个结果集中。 | 对于 ODBC SQL Server 3.51 版驱动程序（包含在 SQL Server 2000 中），来自连续的 PRINT、RAISERROR、DBCC 或类似语句（在批处理或存储过程中）的消息将为每个语句返回单独的结果集。 与 SQL Server 早期版本相比，应该有不同的结果。调用 SQLMoreResults 以处理来自每个语句的结果集。
当（使用 SQLExecute、SQLExecDirect 或 SQLParamData）执行的搜索 UPDATE 或 DELETE 语句未影响任何行时，ODBC SQL Server 驱动程序的早期版本返回 SQL_SUCCESS。SQLRowCount 返回 0。 | 当 ODBC 3.x 版应用程序使用此次发行的版本中包含的 ODBC SQL Server 3.5 版驱动程序时，如果（使用 SQLExecute、SQLExecDirect 或 SQLParamData）执行的搜索 UPDATE 或 DELETE 语句未影响任何行，则返回 SQL_NO_DATA。SQLRowCount 仍然返回 0。 与 SQL Server 早期版本相比，应该有不同的结果。正确处理 SQL_NO_DATA。


数据类型（级别 4）
SQL Server 6.x | SQL Server 2000
根据存储值的精度，decimal 和 numeric 数据类型可使用 2 到 17 个字节间的任何字节数来存储值。 | numeric 和 decimal 现在使用 5、9、13 或 17 个存储字节。 与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。确保使用 numeric 或 decimal 数据类型的数据库有足够的存储空间容纳更改后的存储字节数。
结果太小而无法显示，称为浮点下溢，对于某些数学运算符和函数返回不一致的结果。 | SQL Server 现在对于所有浮点下溢情况不返回错误信息，而返回 0.0。 因为类似 float 和 real 数据类型的浮点数具有固定的大小，所以近似数字数据具有内在精度和取值范围。在浮点下溢的情况下，将返回结果 0.0，而不显示错误信息。例如，2 的 –100.0 次幂的数学计算将返回结果 0.0。 与 SQL Server 早期版本相比，应该有不同的结果。数学函数或运算符得到的浮点下溢结果应不同。有关更多信息，请参见使用数学函数。 +（加） -（减） *（乘） /（除） ATN2 AVG CONVERT EXP POWER RADIANS SUM
第二个为负的参数若等于 ROUND 表达式中的数字个数，则对于 integer、float 和 money 数据类型返回 0 值。如果第二个参数为负数且小于 ROUND 表达式中的数字个数，则 ROUND 返回将最右端的数字四舍五入到 0 的值。 | 如果 ROUND 函数中的第二个参数为负数（对于所有数字数据类型）且小于表达式中的数字个数，则 SQL Server 返回四舍五入到下一位数的值。 如果第二个参数为负数，与 SQL Server 早期版本相比，ROUND 函数的结果应不同。
当添加或减少日期值时，DATEADD 和 DATEDIFF 函数返回一个日期值。 | datetime 和 smalldatetime 支持使用 +（加）和 -（减）运算符进行直接的日期值加减运算。 对于简单的日期算术，也可使用加（+（加））或减（-（减））代替 DATEADD 和 DATEDIFF。


复制（级别 4）
SQL Server 6.x | SQL Server 2000
订阅发布中的一个或多个项目可通过 SQL Server 企业管理器或适当的系统存储过程创建。 | SQL Server 企业管理器不再允许订阅一个或多个项目。订阅发布中的一个或多个项目仅通过使用适当的复制系统存储过程实现。 与 SQL Server 早期版本相比，应该有不同的结果。使用复制系统存储过程订阅发布中的一个或多个项目。当使用 SQL Server 企业管理器时，必须订阅整个发布。

SQL Server 2000 中的复制与 SQL Server 6.5 版服务器中的复制不同。另外，当复制拓扑在用户界面中创建后,SQL Server 2000 提供增强的脚本能力。该增强脚本使得可以用最少的时间和精力实现大量的复制。


重建注册表（级别 4）

说明 在 Microsoft® SQL Server™ 2000 中，此实用工具由安装选项 Registry Rebuild 替换。

SQL Server 7.0 以前的版本 SQL Server 7.0
执行以下 SQL Server 安装程序语句重建注册表：
setup/t RegistryRebuild = On.
不再支持。相反，使用安装程序重建注册表。


函数（级别 4）
SQL Server 6.x | SQL Server 2000
@@DBTS 全局变量随时递增，数据库中的任何页可以任何方式修改。 | 由 @@DBTS 返回的值仅当修改包含 timestamp 列的行时更改。 当使用 @@DBTS 时，与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。


CREATE PROCEDURE（级别 4）
SQL Server 6.x | SQL Server 2000
如果 CREATE PROCEDURE 语句包含的 CREATE TABLE 或 SELECT INTO 语句创建的临时表与 CREATE PROCEDURE 语句执行时已经存在的临时表同名，则 CREATE PROCEDURE 语句失败。 | CREATE PROCEDURE 语句成功。 重新编码所有依赖早期行为的逻辑。


安全性（级别 3）
SQL Server 6.x | SQL Server 2000
GRANT 语句的 ON {table | view} (column [,...n]) 语法将指定的权限指派给指定表或视图中的给定列。 | 支持 GRANT 语句的 ON {table | view} (column [,...n]) 语法仅为保持向后兼容性。 考虑对对象权限使用 SQL-92 标准 GRANT语法，并在 ON 子句前放置列列表。
术语"集成安全机制"允许 SQL Server 使用 Windows NT 身份验证机制验证所有连接的登录。标准安全机制使用 SQL Server 自身的登录验证程序验证所有连接。混合安全机制允许登录请求使用集成或标准安全机制进行验证。 | 术语"Windows 身份验证"和"混合模式"分别替换集成安全机制和混合安全机制。标准安全机制不再存在。 考虑使用术语"Windows 身份验证"和"混合模式"而非集成安全机制和混合安全机制。不要引用标准安全机制。有关安全模式的更多信息，请参见身份验证。
SETUSER 语句允许数据库所有者模仿其他用户。 | 在 Microsoft® SQL Server™ 2000 中包含 SETUSER 仅为保持向后兼容性，不推荐使用该语句。以后的 SQL Server 版本可能不支持该语句。 考虑删除所有对 SETUSER的引用。


备份和还原（级别 4）
SQL Server 6.x | SQL Server 2000
LOAD HEADERONLY 语句从数据库转储中检索详细描述首部信息的结果集。 | 结果集已改变。与 SQL Server 早期版本中的 LOAD HEADERONLY 相比，来自 RESTORE HEADERONLY 的应该是一个不同的结果集。有关 RESTORE HEADERONLY 的更多信息，请参见 RESTORE HEADERONLY。


DELETE 和 SELECT（级别 4）

SQL Server 安装帮助
SELECT（级别 4）
SQL Server 6.x | SQL Server 2000
在 SELECT 语句中使用 *= 和 =* 运算符（分别表示左向外联接和右向外联接）分别产生左向外联接和右向外联接。 | 首选 LEFT OUTER JOIN 和 RIGHT OUTER JOIN 的 SQL-92 标准语法。但是，现在仍然支持 Microsoft® SQL Server™ 早期版本中支持的联接运算符。 建议删除所有 SELECT 语句的 FROM 子句中对 *=（左向外联接）和 =*（右向外联接）运算符的引用，并替换为对 SQL-92 标准语法 RIGHT OUTER JOIN 和 LEFT OUTER JOIN 的引用。以后的 SQL Server 版本将只支持 SQL-92 标准语法。


设备（级别 3）

Microsoft® SQL Server™ 2000 的数据库构架与 SQL Server 6.x 的数据库构架不同。在 SQL Server 2000 中：

  • 操作系统文件替换数据库设备。

  • 数据文件和事务日志不能共存在同一个操作系统文件上。

  • 单个操作系统文件不能由多个数据库共享。

有关数据库构架的更多信息，请参见 SQL Server 构架概述。

SQL Server 6.x | SQL Server 2000
DISK INIT 创建数据库或事务日志设备。若 DISK INIT 跟在 CREATE DATABASE 或 ALTER DATABASE 语句后，SQL Server 使用指定的设备存储指定的数据库或事务日志。 | CREATE DATABASE 语句的语法和 ALTER DATABASE 语句的语法都允许创建单独的数据和日志文件。CREATE DATABASE 和 ALTER DATABASE 都在单个步骤中创建操作系统文件和数据库（如果 LOG ON 子句未指定任何项目，则自动生成日志文件）。 考虑删除所有对 DISK INIT 的引用，并替换为对 CREATE DATABASE 或 ALTER DATABASE 的引用。 DISK INIT 在 SQL Server 2000 中得到有限的支持；现有的脚本只要不使数据和日志共享相同的数据文件即可运行。
当 sysdevices 中缺少设备条目时，DISK REINIT 将设备条目还原到适当的系统表中。 | 已删除；没有替代项。 考虑删除所有对 DISK REINIT 的引用。
sp_logdevice 将 syslogs（包含事务日志）置于单独的数据库设备上。若要在已包含一段日志的数据库中另添加一段日志，则需在 DISK INIT 后执行 sp_logdevice。 | 已删除。CREATE DATABASE 语句在新操作系统文件上创建日志文件。 考虑删除所有对 sp_logdevice 的引用，并替换为对 CREATE DATABASE 的引用。在 CREATE DATABASE 中使用 LOG ON 子句的 SQL Server 6.x 版脚本将按预期执行。不在 CREATE DATABASE 中使用 LOG ON 子句的脚本将自动生成日志文件。
使用 DISK INIT 和 CREATE DATABASE 创建的设备只能通过使用 sp_dropdevice 除去。 | 在 CREATE DATABASE 前不带 DISK INIT 创建的数据库可用 DROP DATABASE 除去，否则使用 sp_dropdevice。 当使用后面带有 CREATE DATABASE 的 DISK INIT 时，请使用 sp_dropdevice。

示例
A. 同时使用 DISK INIT 和 CREATE DATABASE 语法

下例使用 DISK INIT 和 CREATE DATABASE，在 SQL Server 6.5 版和 SQL Server 2000 中都有效：

DISK INIT name = 'testdb_data',
   physname = 'c:\testdb_data.dat',
   vdevno = 9,
   size = 10240
DISK INIT name = 'testdb_log',
   physname = 'c:\testdb_log.dat',
   vdevno = 8,
   size = 10240
CREATE DATABASE testdb
   ON testdb_data = 10
   LOG ON  testdb_log = 10
GO
B. 在 SQL Server 2000 中使用 sp_logdevice 和 CREATE DATABASE 失败

在 SQL Server 早期版本中，此脚本创建了一个 20 MB 的数据库，由两个名为 testdb_data 和 testdb_log 的文件组成。此脚本还通过使用 sp_logdevice 将事务日志移动到 testdb_log 设备中。

说明 类似这样的脚本通常由 SQL Server 6.5 的 sp_help_revdatabase 系统存储过程创建，该过程使用 sp_logdevice 确保为数据库还原正确的设备布局。因为 SQL Server 2000 在还原数据库时创建数据库，所以不再需要这样的脚本。

-- SQL Server 6.x example.
DISK INIT name = 'testdb_data',
   physname = 'c:\testdb_data.dat',
   vdevno = 9,
   size = 10240
DISK INIT name = 'testdb_log',
   physname = 'c:\testdb_log.dat',
   vdevno = 8,
   size = 10240
CREATE DATABASE testdb on testdb_data = 10, testdb_log = 10
-- Use sp_logdevice to move the log to the testdb_log device.
EXEC sp_logdevice testdb, testdb_log

在 SQL Server 2000 中，上述脚本的运行不同于在 SQL Server 6.x 版中的运行，因为 sp_logdevice 已不存在。

在 SQL Server 2000 中，该脚本会创建一个 20 MB 的数据库，由两个名为 testdb_data 和 testdb_log 的文件组成。另外，SQL Server 自动生成日志文件，其大小为数据库大小的 25%。在以下脚本中（使用早期创建的设备），将自动生成一个 10 MB 的日志文件：

CREATE DATABASE testdb on testdb_data = 10, testdb_log = 10
C. 仅使用 CREATE DATABASE 语法

使用 SQL Server 2000 CREATE DATABASE 语法，上例中的数据库将按如下方法创建：

CREATE DATABASE testdb ON (name = 'testdb_data',
   filename = 'd:\testdb_data.dat', size = 10)
   LOG ON (name = 'testdb_log', filename = 'd:\testdb_log.dat',
   size = 10)


SET SHOWPLAN（级别 3）
SQL Server 6.x | SQL Server 2000
SET SHOWPLAN 语句通过 ODBC 中的 SQLGetDiagRec，或通过 DB-Library 应用程序中的消息处理程序，将输出作为信息消息返回。 | 不再支持 SET SHOWPLAN 语句。该语句已替换为 SET SHOWPLAN_TEXT 和 SET SHOWPLAN_ALL。SET SHOWPLAN_TEXT 和 SET SHOWPLAN_ALL 的输出不作为信息消息返回，只作为结果集返回。 考虑删除所有对 SET SHOWPLAN 的引用，并替换为对 SET SHOWPLAN_TEXT（显示可读文本）或 SET SHOWPLAN_ALL（显示输出，该输出可由应用程序生成显示计划输出报表，从而更容易分析）的引用。应用程序需要将输出作为结果集的一部分处理，而不是作为通过 ODBC SQLGetDiagRec 函数或 DB-Library 消息处理程序返回的消息。


备份和还原（级别 3）
SQL Server 6.x | SQL Server 2000
DUMP 语句创建数据库或事务日志备份（转储）。 | DUMP DATABASE 和 DUMP TRANSACTION 语句与 BACKUP DATABASE 和 BACKUP LOG 语句同义。在以后的版本中可能会取消对 DUMP DATABASE 和 DUMP TRANSACTION 语句的支持。 考虑删除所有对 DUMP DATABASE 的引用，并替换为对 BACKUP DATABASE 的引用。考虑删除所有对 DUMP TRANSACTION 的引用，并替换为对 BACKUP LOG 的引用。
LOAD 语句还原或装载数据库或事务日志备份（转储）。 | LOAD DATABASE 和 LOAD TRANSACTION 语句与 RESTORE DATABASE 和 RESTORE LOG 语句同义。在以后的版本中可能会取消对 LOAD DATABASE 和 LOAD TRANSACTION 语句的支持。 考虑删除所有对 LOAD DATABASE 的引用，并替换为对 RESTORE DATABASE 的引用。考虑删除所有对 LOAD TRANSACTION 的引用，并替换为对 RESTORE LOG 的引用。有关 RESTORE DATABASE 的更多信息，请参见 RESTORE。
CREATE DATABASE ...FOR LOAD 语句的语法在数据库从备份还原前创建目的数据库，并防止任何人在 CREATE DATABASE、ALTER DATABASE 和 LOAD 语句间使用该数据库。 | 支持 CREATE DATABASE ...FOR LOAD 语法仅为保持向后兼容性。但是因为 SQL Server 现在在还原操作中创建目的数据库，所以建议不要在还原操作执行前创建目的数据库。 不要在还原数据库前创建该数据库。


DELETE 和 SELECT（级别 4）
SQL Server 6.x SQL Server 2000
在 Microsoft® SQL Server™ 6.0 版中，DELETE 或 SELECT 语句的 FROM 子句中重复的表名将导致 SQL Server 将两个表引用作为同一个表对待。在下面的 SELECT 示例中，SQL Server 废弃对第二个 authors 表的引用：
USE pubs
GO
SELECT *
FROM authors, authors
GO

但是，如果在 DELETE 或 SELECT 的 FROM 子句中指定的表名不同，SQL Server 6.0 版将两个表引用作为不同的表对待，如下面的 SELECT 示例所示：

USE pubs
GO
SELECT *
FROM pubs..authors, pubs.dbo.authors
GO
 在 DELETE 或 SELECT 语句的 FROM 子句中，重复的表名将在 SQL Server 中产生错误。使用别名重写语句。以下为 SELECT 示例：
SELECT *
FROM pubs..authors AS a1, pubs.dbo.authors AS a2

USE pubs
SELECT *
FROM authors AS au1, authors AS au2

与 SQL Server 6.0 版相比，应有不同的结果。当引用同一个表的多个实例时，重写 DELETE 和 SELECT 语句以在 FROM 子句中使用别名。


设备（级别 4）
SQL Server 6.x | SQL Server 2000
DISK RESIZE 语句更改数据库设备的大小。 | 支持 DISK RESIZE 语句，但在以后的版本中可能不再支持。另外，DISK RESIZE 语句不更改数据库的大小。而是使用 ALTER DATABASE。 与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。使用 ALTER DATABASE 语句的 MODIFY FILE 子句更改数据库的大小。


系统存储过程（系统）（级别 3）
SQL Server 6.x | SQL Server 2000
作业管理称为任务管理，而且一些系统存储过程允许系统管理员创建和管理任务。 | 不再记录任务管理系统存储过程，包括该过程仅为保持向后兼容性。 即使 Microsoft® SQL Server™ 2000 支持任务管理系统存储过程（sp_addtask、sp_droptask、sp_helptask、sp_reassigntask 和 sp_updatetask）调度和管理 SQL Server 作业，仍请考虑使用 SQL Server 企业管理器或下表所列的与作业相关的系统存储过程来管理作业。

SQL Server 6.x 列中列出的与任务相关的存储过程已替换为 SQL Server 2000 列中相应的与作业相关的存储过程。

SQL Server 6.x | SQL Server 2000
sp_addtask | sp_add_job sp_add_jobstep sp_add_jobschedule sp_start_job
sp_droptask | sp_delete_job sp_delete_jobstep sp_delete_jobschedule
sp_helptask | sp_help_jobhistory sp_help_jobschedule sp_help_jobstep
sp_reassigntask | sp_purge_jobhistory sp_stop_job
sp_updatetask | sp_update_job sp_update_jobstep sp_update_jobschedule


DBCC（级别 4）
SQL Server 6.x | SQL Server 2000
每个 DBCC 语句有特定的输出格式。 | 很多 DBCC 语句的输出格式已更改。 与 Microsoft® SQL Server™ 早期版本相比，应该有不同的结果。
DBCC PERFMON 和 DBCC SQLPERF 语句记录 SQL Server 性能统计信息，用于研究 SQL Server 的性能。 | 不再记录。这些语句在以后的 SQL Server 版本中可能会更改。 使用 Windows 2000 系统监视器中的 Windows NT 4.0 性能监视器监视 SQL Server 的性能计数器。有关更多信息，请参见用 Windows 性能监视器进行监视。


别名（级别 4）
SQL Server 6.x | SQL Server 2000
别名允许用户临时借用数据库中其他用户的标识，并作为该用户执行操作。例如，数据库所有者可化名为其他用户，如果该用户在度假，则可作为该用户执行操作。 | 角色已替换别名。因为用户可以同时属于多个角色，所以不再需要借用其他用户的标识。属于相同角色的用户自动具有相同的权限，假定权限仅应用于角色级别，而不是用户级别。 与 SQL Server 早期版本相比，应该有不同的结果。使用角色代替别名。有关数据库角色的更多信息，请参见管理权限。


DBCS 字符串比较（级别 4）
SQL Server 6.x | SQL Server 2000
当比较 DBCS 空格字符时，Unicode A140 空格字符 (U-A140) 与 Unicode 0020 (U-0020) 空格字符不同。 | 比较中涉及的 Unicode A140 空格字符 (U-A140) 现在等同于 Unicode 0020 (U-0020) 空格字符。 当比较 DBCS 空格字符时，与 SQL Server 早期版本相比，应有不同的结果。


全局变量（级别 4）
SQL Server 7.0 以前的版本 | SQL Server 7.0
全局变量是由系统提供且预先声明的变量，通过在名称前保留两个 (@@) 符号区别于局部变量。 | Transact-SQL 全局变量为函数形式，现在作为函数引用。 有关更多信息，请参见函数。


DB-Library（级别 1）
SQL Server 6.x | SQL Server 2000
DB-Library 的两相提交特殊库管理跨两个或多个服务器分布的事务。 | 不再支持 DB-Library 两相提交。使用 Microsoft 分布式事务处理协调器 (MS DTC) 完成两个服务器上的同时更新。删除所有对 DB-Library 两相提交的引用。
DB-Library 应用程序可在 Microsoft® Visual Basic® 中开发。 | 不再支持 DB-Library for Visual Basic 的开发库。现有的 DB-Library for Visual Basic 应用程序的将对 SQL Server 2000 运行，但是必须使用 SQL Server 6.5 的开发库对其进行维护。所有用于访问 SQL Server 的新编写的 Visual Basic 应用程序应使用 Visual Basic 数据 API，例如，ActiveX 数据对象 (ADO) 和远程数据对象 (RDO)。


SET SHOWPLAN（级别 1）
SQL Server 6.x | SQL Server 2000
除非 SET NOEXEC 设置启用，否则 SET SHOWPLAN 为查询生成处理计划描述，并立刻对其进行处理。 | SET SHOWPLAN 已替换为 SET SHOWPLAN_ALL 和 SET SHOWPLAN_TEXT。SET SHOWPLAN_ALL 和 SET SHOWPLAN_TEXT 语句仅返回查询或语句执行计划信息，并不执行查询或语句。若要执行查询或语句，请将相应的显示计划语句设置为 OFF。然后将执行查询或语句。 删除所有对 SET SHOWPLAN ON 或 SET SHOWPLAN OFF 的引用，并替换为对 SET SHOWPLAN_ALL ON、SET SHOWPLAN_TEXT ON、SET SHOWPLAN_ALL OFF 或 SET SHOWPLAN_TEXT OFF 的引用。与 SQL Server 早期版本比较，应该有不同的结果。


大容量复制（级别 2）
SQL Server 6.x SQL Server 2000
bcp 实用工具（使用 DB-Library）可导入字符模式数据文件中的 datetime 或 smalldatetime 值，该数据文件使用：
  • DB-Library 使用的默认格式（mmm dd yyy hh:mmXX，其中 XX 为 A.M. 或 P.M.）。

  • 除 ODBC 格式外，任何由 dbconvert 支持的格式。

bcp 通过使用默认的 DB_Library 格式导出具有 datetime 和 smalldatetime 值的字符模式数据文件。

 bcp 实用工具（使用ODBC）可导入字符模式数据文件中的 datetime 或 smalldatetime 值，该数据文件使用：
  • DB-Library 使用的默认格式。

  • ODBC 使用的格式 (yyyy-mm-dd hh:mm:ss[.f...])。

但是，bcp 不使用 dbconvert 支持的其它格式。

bcp 用 ODBC 默认格式导出 datetime 和 smalldatetime 值。

与 SQL Server 早期版本相比，应该有不同的结果。若要在 SQL Server 6.x 和 SQL Server 2000 服务器间大容量复制字符模式的数据，请使用相同的 bcp 版本（SQL Server 6.x 或 SQL Server 2000）导入和导出数据。

若要将数据从 SQL Server 2000 服务器导出到字符模式的数据文件中，并且以后使用 DB-Library 大容量复制应用程序导入该数据，请使用 bcp 的 SQL Server 6.x 版。

对于在字符模式数据文件中现有的 datetime 或 smalldatetime 值，这些值为不同于 DB-Library 默认的格式：

  • 将这些值更改为 DB-Library 默认格式，以便继续使用 SQL Server 6.x 和 SQL Server 2000 bcp。

  • 将这些值更改为 ODBC 格式以便用于 SQL Server 2000 bcp。
bcp 使用数字分组符号（例如，当使用 SQL Server 的美国版、Microsoft Windows NT 的美国版和美国设置时为逗号）和小数点后两位数字将 money 值导出到字符模式数据文件中。 bcp 将 money 值导出到字符模式的数据文件中，不带有数字分组符号，但在小数点后带有四位数字。

与 SQL Server 早期版本相比，应该有不同的结果。

若要在 SQL Server 2000 中读取由 6.x 版 DB-Library bcp 创建的字符文件，请使用 -V 开关。有关更多信息，请参见 bcp 实用工具。


索引（级别 1）
SQL Server 6.x | SQL Server 2000
CREATE INDEX 的 SORTED_DATA_REORG 子句消除创建聚集索引时执行的排序。 | 由 CREATE INDEX 的 DROP_EXISTING 子句替换。删除所有对 CREATE INDEX 的 SORTED_DATA_REORG 子句的引用，并替换为对 DROP_EXISTING 的引用。
CREATE INDEX 的 SORTED_DATA 子句消除当聚集索引创建时执行的排序，并物理重组数据。 | 已删除，不再可用。删除所有对 CREATE INDEX 的 SORTED_DATA 子句的引用。
bcp 可将已排序的数据文件导入 SQL Server 表中。在已排序的表上创建聚集索引可通过使用 CREATE INDEX 的 SORTED_DATA 子句得以优化。SORTED_DATA 子句强制 SQL Server 不进行排序或重新组织以前已排序的表。 | SQL Server 返回错误信息，声明 CREATE INDEX 的 SORTED_DATA 子句已忽略，并且不再获得支持。删除所有对 CREATE INDEX 的 SORTED_DATA 子句的引用。考虑在使用 bcp 导入数据前创建聚集索引。bcp 使用改进的索引维护策略使得导入带有先前存在的索引的数据时比早期版本更快速，并且避免在导入后重新排序数据。
CREATE INDEX 语句的 ALLOW_DUP_ROW 子句和 IGNORE_DUP_ROW 子句允许数据更新到具有唯一索引的表中，而不必首先筛选出重复数据。 | 不再支持。使用 CREATE INDEX 语句中的 ALLOW_DUP_ROW 子句或 IGNORE_DUP_ROW 子句生成警告消息。如果不存在唯一聚集索引，并且需要避免重复行，则可在一个或多个列上而不是聚集键上创建唯一约束。


备份和还原（级别 1）

因为在运行 Microsoft® SQL Server™ 2000 的服务器和运行 SQL Server 早期版本的服务器之间的备份不兼容，所以 SQL Server 6.x 数据库转储（备份）不能在 SQL Server 2000 服务器上还原。有关将数据库升级到 SQL Server 2000 的更多信息，请参见升级 SQL Server 6.5 数据库（升级向导）。

SQL Server 6.x | SQL Server 2000
DUMP 和 LOAD 语句的 VOLUME 子句表明转储设备的卷 ID。 | MEDIANAME 子句替换了 VOLUME 关键字。使用 VOLUME 子句导致错误。 删除所有 BACKUP、DUMP、LOAD或 RESTORE 语句中所有 VOLUME 关键字的引用，并用对 MEDIANAME 的引用替换。
DUMP 和 LOAD 语句支持使用磁盘。 | 不支持备份到磁盘。 备份到硬盘，然后将备份文件复制到一张或多张磁盘上。
sysbackuphistory、sysbackupdetail、sysrestorehistory 和 sysrestoredetail 系统表跟踪 DUMP 和 LOAD 的历史信息。 | DUMP 和 LOAD 历史跟踪系统表已删除并由新系统表集合替换。 删除所有对 sysbackuphistory、sysbackupdetail、sysrestorehistory 和 sysrestoredetail 的引用。因为备份系统表的结构和内容有了重大更改，所以在对其引用前请熟悉这些新系统表：backupfile、backupmediafamily、backupmediaset、backupset、restorefile、restorefilegroup 和 restorehistory。


磁盘镜像（级别 1）
SQL Server 6.x | SQL Server 2000
DISK MIRROR、DISK REMIRROR 和 DISK UNMIRROR 执行 SQL Server 磁盘镜像。 | 不再支持，因为不再支持 SQL Server 镜像。使用 Microsoft Windows NT® 或基于硬件的 RAID。有关更多信息，请参见 Windows NT 或硬件文档。


系统存储过程（复制）（级别 1）
SQL Server 6.x | SQL Server 2000
sp_replica 远程设置（在订阅服务器上）sysobjects 类别位，标志表为副本。 | 已删除，不再支持或不再可用。删除所有对 sp_replica 的引用。
sp_replsync 当由订阅服务器使用时承认手工同步的完成。 | 已删除，不再支持或不再可用。删除所有对 sp_replsync 的引用。
sp_helppublicationsync 为发布提供关于已调度的同步任务的信息。 | 不再支持。如果使用该存储过程，则将返回错误信息。删除所有对 sp_droppublisher 的引用。
sp_subscribe 和 sp_unsubscribe 远程添加或取消对发布中特定项目的订阅，或整个发布的订阅，或所有发布的订阅。 | 不再支持。如果使用该存储过程，则将返回错误信息。删除所有对 sp_subscribe 或 sp_unsubscribe 的引用，或使用 @@ERROR 函数测试错误。
sp_changepublication 中的 name 值参数用于提供新的发布名称。 | 已删除，不再支持或不再可用。删除所有对 sp_changepublication 的 name 值参数的引用。
sp_addpublisher 在订阅服务器添加发布者，并在分发服务器添加分发发布者。 | 由 sp_adddistpublisher 替换。删除所有对 sp_addpublisher 的引用，并替换为对 sp_adddistpublisher 的引用。
sp_droppublisher 除去发布服务器。 | 已删除，不再支持或不再可用。删除所有对 sp_droppublisher 的引用。若要除去分发服务器上的发布者，请使用 sp_dropdistpublisher。
sp_distcounters 用于查询已传送或未传送命令，该命令由性能监视器使用，性能监视器不再使用该过程。 | 不再支持。新视图 MSdistribution_status 显示大多数相同的信息。
sp_helpreplicationdb 用于返回关于指定数据库或服务器上所有发布数据库列表的信息。 | 已删除，不再支持。删除所有对 sp_helpreplicationdb 的引用，并替换为对 sp_helpreplicationdboption 的引用。
sp_replstatus 更新用于复制的内部表结构。 | 已删除，不再支持。删除对 sp_replstatus 的引用。


安全性（级别 2）
SQL Server 6.x | SQL Server 2000
GRANT 和 REVOKE 语句分别地授权和废除权限。REVOKE 语句否定单个用户的权限，所否定的权限授权给该用户的组。 | 安全性模式除 GRANT 和 REVOKE 外，还使用 DENY。REVOKE 更改为删除先前授权或否定的权限。DENY 在安全性系统中创建条目，否定安全帐户的权限，并防止用户、组或角色通过组和角色成员资格继承权限。REVOKE 语句不再用于否定用户的权限（只要用户的组拥有该权限）。使用 DENY 语句显式地否定特定用户或组的权限。 与 SQL Server 早期版本相比，应该有不同的结果。认识到如果 REVOKE 用于拒绝组中选定成员的权限，则使用 SQL Server 6.x 安全模式、使用 GRANT 和 REVOKE 语句的脚本，与使用 GRANT、REVOKE 和 DENY 当前模式的脚本行为不同。
当执行 RPC 时，使用集成安全性模式的登录引用内部登录名，其中反斜线 (\) 翻译为下划线 (_)。例如，\Domain\Joe 翻译为 Domain_Joe。 | 这些升级为 SQL Server 的服务器当使用 NT 身份验证时，执行 RPC 调用不再将反斜线翻译为下划线。若要使用 SQL Server 6.x 版对登录名的命名规则，可使用 sp_addlinkedsrvlogin 将用户名的反斜线版映射为下划线版。 与 SQL Server 早期版本相比，应该有不同的结果。当发送使用 SQL Server 2000 的 RPC 服务器时，请为 sp_addlinkedsrvlogin 添加引用以将反斜线版登录名翻译为下划线版从而维持 6.x 版登录翻译。

示例
A. 将特定的反斜线登录映射为下划线登录

本例将 \LONDON1\nancyd 登录名映射为 LONDON1_nancyd：

sp_addlinkedsrvlogin 'receiving_server_name',
   false,
   'LONDON1\nancyd',
   'LONDON1_nancyd', NULL
B. 将特定的反斜线登录映射为 sa 登录

本例将 Nancy 的 LONDON1 登录映射为 sa 登录，因为 Nancy 的域登录为内置管理员组的一部分：

sp_addlinkedsrvlogin 'receiving_server_name',
   false,
   'LONDON1\nancyd',
   'sa', NULL


数据库选项（级别 1）

管理脚本可能已用到这些数据库选项。在 SQL Server 2000 中，设置数据库选项时应使用 ALTER DATABASE 语句而不是 sp_dboption 存储过程。有关数据库选项的更多信息，请参见设置数据库选项和 ALTER DATABASE。

SQL Server 6.x | SQL Server 2000
sp_dboption 的 subscribe 选项为订阅启用或禁用某个数据库。 | 已删除，不再可用。使用 sp_addsubscription 为订阅启用或禁用某个数据库。
sp_dboption 的 no chkpt. on recovery 选项定义检查点记录是否添加到 SQL Server 启动时恢复的数据库中。 | 已删除，不再可用。当使用备用服务器时，可使用 RESTORE 语句的 WITH STANDBY 子句。


配置选项（级别 1）

管理脚本可能已使用这些配置选项。有关配置选项的更多信息，请参见设置配置选项。

SQL Server 6.x | SQL Server 2000
backup buffer size 选项指定转储和装载缓冲区（用于增加备份速度）的大小。 | 已删除，不再支持。删除所有对 backup buffer size 的引用。
backup threads 选项指定线程的数目，这些线程被保留用于条带化转储和装载操作。 | 已删除，不再支持。删除所有对 backup threads 的引用。
database size 选项设置为每个新用户数据库分配的默认兆字节 (MB) 数。 | 已删除，不再支持。删除所有对 database size 的引用。
free buffers 选项确定对于系统可用的缓冲区极限值。 | 已删除，不再支持。删除所有对 free buffers 的引用。
hash buckets 选项设置存储桶的数目，这些存储桶用于哈希页面到内存中的缓冲区。 | 已删除，不再支持。删除所有对 hash buckets 的引用。
LE threshold maximum 选项确定在升级为表锁前控制页锁的最大值。 | 已删除，不再支持。删除所有对 LE threshold maximum 的引用。
LE threshold minimum 选项确定在升级为表锁前需要页锁的最小值。 | 已删除，不再支持。删除所有对 LE threshold minimum 的引用。
LE threshold percent 选项指定在请求表锁前，在表上需要页锁的百分比。 | 已删除，不再支持。删除所有对 LE threshold percent 的引用。
logwrite sleep 选项指定毫秒数，该时间为当缓冲区未满时写入日志要延迟的时间。 | 已删除，不再支持。删除所有对 logwrite sleep 的引用。
max lazywrite IO 选项调整由惰性写入器执行的批异步 I/O 操作的优先级。 | 已删除，不再支持。删除所有对 max lazywrite IO 的引用。
memory 选项设置可用内存的大小，以 2K 为单位。 | 已删除，不再支持。内存根据需要和可用内存自动配置。若要控制自动配置的内存范围，请使用 min server memory 和 max server memory 选项。删除所有对 memory 的引用。
open databases 选项设置在 SQL Server 中可同时打开的数据库的最大值。 | 已删除，不再支持。删除所有对 open databases 的引用。
procedure cache 选项指定在满足 SQL Server 内存的需要后分配给过程高速缓存的内存百分比。 | 已删除，不再支持。删除所有对 procedure cache 的引用。
RA cache hit limit 选项指定在取消前，预读请求所能具有的高速缓存命中数。 | 已删除，不再支持。删除所有对 RA cache hit limit 的引用。
RA cache miss limit 选项指定高速缓存命中遗漏数，遗漏发生在该命令预读开始前的水平遍历中。 | 已删除，不再支持。删除所有对 RA cache miss limit 的引用。
RA delay 选项指定预读延迟，以毫秒为单位。 | 已删除，不再支持。删除所有对 RA delay 的引用。
RA pre-fetches 选项确定预提取管理器在空闲前读取的提前量（以扩展方式为基础）。 | 已删除，不再支持。删除所有对 RA pre-fetches 的引用。
RA slots per thread 选项指定每个预读服务线程管理的同时发生的请求数。 | 已删除，不再支持。删除所有对 RA slots per thread 的引用。
RA worker threads 选项指定服务于预读请求的线程数。 | 已删除，不再支持。删除所有对 RA worker threads 的引用。
recovery flags 选项确定在恢复过程中 SQL Server 在错误日志中显示的信息。 | 已删除，不再支持。删除所有对 recovery flags 的引用。
remote conn timeout 选项指定中断服务器之间连接的时间限制。 | 已删除，不再支持。删除所有对 remote conn timeout 的引用。
SMP concurrency 选项指定 SQL Server 使用的最大 CPU 数。 | 已删除，不再支持。删除所有对 SMP concurrency 的引用。
sort pages 选项指定可分配给每个用户用于排序的最大页数。 | 用 min memory per query 选项替换。有关 min memory per query 选项的更多信息，请参见服务器内存选项。 用 min memory per query 选项和 index create memory 选项替换所有对 sort pages 选项的引用。
如果需要，tempdb in ram 选项将 tempdb 数据库置于 RAM 中。 | 因为 SQL Server 2000 的性能已得到最大优化，所以不再支持该选项。 删除所有对 tempdb in ram 的引用。
trace flag 204 选项支持这样的查询，当提供 DISTINCT 关键字时在 ORDER BY 子句中包含排序列，而在选择列表中不包括这些排序列。 | 不再支持。删除所有对 trace flag 204 选项的引用。有关支持的跟踪标记的更多信息，请参见跟踪标记。
user connections 选项设置到 SQL Server 的同时连接的最大值。 | 现在是高级选项。默认值 0 表示自动增长。删除所有对 user connections 的引用。

有关配置选项的其它更改的更多信息，请参见 SQL Server 2000 和 SQL Server 7.0 版。


ODBC（级别 2）
SQL Server 6.x SQL Server 2000
当扩展存储过程或批处理遇到以下条件时，SQLExecute、SQLExecDirect 或 SQLParamData 返回 SQL_ERROR：
  • 第一个数据返回语句导致错误（运行时错误或 RAISERROR 语句，该语句中严重度大于或等于 11）。

  • 在导致错误的语句后，存在来自其它语句（甚至简单的 RETURN 语句）的数据。

由于 SQL_ERROR 返回代码，所以语句句柄立即可用。

 当 ODBC 3.x 应用程序使用包含在此版本中的遵从 ODBC SQL Server 3.51 的驱动程序（使用 SQLExecute、SQLExecDirect 或 SQLParamData）时，返回 SQL_SUCCESS_WITH_INFO。

由于 SQL_SUCCESS_WITH_INFO 返回代码，所以请在该语句句柄可用前，为其处理结果。

与 SQL Server 早期版本相比，应该有不同的结果。按实际需要使用 SQLGetDiagRec 处理 SQL_SUCCESS_WITH_INFO，然后调用 SQLMoreResults 处理剩余结果。


磁盘命令（级别 1）
SQL Server 6.x | SQL Server 2000
当设备存在（文件存在），但 sysusages 中的项目不再存在时，DISK REINIT 和 DISK REFIT 从系统表恢复使用信息。 | 已删除，不再支持或不再可用。删除所有对 DISK REINIT 的引用。将所有对 DISK REFIT 的引用替换为对 ALTER DATABASE 的引用，该引用添加或除去数据库中包含的文件组并修改每个数据库文件组的大小。


数据类型（级别 2）
SQL Server 6.x | SQL Server 2000
binary 或 varbinary 到 decimal 或 numeric 的转换为显式。 | 此转换为隐性。 与 SQL Server 早期版本相比，应该有不同的结果。binary 或 varbinary 到 decimal 或 numeric 的转换应为隐性。有关数据类型转换的更多信息，请参见 CAST 和 CONVERT。有关系统提供的数据类型的更多信息，请参见数据类型。
不允许 binary 或 varbinary 到 smallmoney 的转换。 | 允许进行此转换。 与 SQL Server 早期版本相比，应该有不同的结果。按实际需要使用。
不允许 datetime 或 smalldatetime 到 decimal、numeric、float、real、int、smallint、tinyint、money、smallmoney 或 bit 的转换。 | 允许进行此转换。 与 SQL Server 早期版本相比，应该有不同的结果。按实际需要使用。
不允许 float 或 real 到 binary 或 varbinary 的转换。 | 允许进行此转换。 与 SQL Server 早期版本相比，应该有不同的结果。按实际需要使用。
money 或 smallmoney 到 char 或 varchar 的转换为隐性。 | 此转换为显式。 与 SQL Server 早期版本相比，应该有不同的结果。money 或 smallmoney 到 char 或 varchar 的转换应为显式。
不允许 bit 到 money 或 smallmoney 的转换。 | 允许进行此转换。 与 SQL Server 早期版本相比，应该有不同的结果。按实际需要使用。
sysname 数据类型为 varchar(30)。 | sysname 数据类型为 nvarchar(128)，允许 128 Unicode 字符。 与 SQL Server 早期版本相比，应该有不同的结果。定义为 sysname 的任何列或局部变量应允许 Unicode 数据。有关 sysname 的更多信息，请参见数据类型。
不直接支持 nchar、nvarchar 和 ntext Unicode 数据类型，因为对于char、binary、varchar 和 varbinary 数据类型，存储的最大值为 255 字节。 | 可在 char、binary、varchar 和 varbinary 数据类型中存储的最大字节值增加为 8,000。SQL Server 2000 客户端完全支持 nchar、nvarchar 和 ntext 数据类型。SQL Server 6.x 客户端在访问具有这些 Unicode 数据类型的 SQL Server 2000 版本时将遇到以下结果： nvarchar 数据作为 varchar 返回，而 nchar 数据作为 char 返回。大于 255 双字节字符的 nvarchar 和 nchar 值将截断为 255 单字节字符。 试图访问 ntext 数据将导致 SQL Server 产生 4004 号错误。ntext 数据不能发送到 6.x 版客户端。 大于 255 字节的 char、varchar、binary 和 varbinary 值将截断为255 字节。 与 SQL Server 早期版本相比，应该有不同的结果。当从 6.x 版客户端访问 SQL Server 2000 的数据时，数据会有所不同。若要消除这些不同，请将客户端升级到 SQL Server 2000 客户端软件。
使用 CONVERT 将空字符串转换为 int (CONVERT(int, '')) 或 float (CONVERT(float, '')) 时将返回 0。 | 使用 CAST 或 CONVERT 将空字符串转换成 int (CAST('' AS int)) 或 float (CAST('' AS float)) 时将返回错误信息。 与 SQL Server 早期版本相比，应该有不同的结果。


INSERT（级别 2）
SQL Server 6.x SQL Server 2000
INSERT x SELECT INTO Y 语句忽略表 Y，并且将 SELECT 结果插入表 X 中，如下所示：
INSERT X
SELECT select_list INTO Y
 INSERT...SELECT INTO 语法仅当兼容级别等于 60 或 65 时保留，如果兼容级别为 70 或 80 并执行类似的查询，则 SQL Server 返回语法错误。

与 SQL Server 早期版本相比，应该有不同的结果。通过执行 sp_dbcmptlevel 设置兼容性设置为 60 或 65，从而为使用 INSERT ...SELECT INTO 语法的查询保留 6.x 版本功能。否则使用 80 的兼容性设置。
在 INSERT 语句中，返回标量值的 SELECT 语句允许存在于 VALUES 子句中。 INSERT 语句不能在 VALUES 子句中将 SELECT 语句用作插入值之一。仅当兼容性设置等于 60 或 65 时，6.x 版本支持可用。

与 SQL Server 早期版本相比，应该有不同的结果。通过执行 sp_dbcmptlevel 设置兼容性设置为 60 或 65，从而为在 INSERT语句的 VALUES 子句中使用 SELECT 语法的查询保留 6.x 版本功能。否则使用 80 的兼容性设置。
位于在 INSERT table EXEC procedure 语句中所引用的存储过程中的 ROLLBACK 语句导致 INSERT 回滚，但是批处理继续。 由INSERT...EXEC 语句引用的存储过程中的 ROLLBACK 语句导致整个事务回滚，并且批处理停止执行。仅当兼容性设置等于 60 或 65 时，6.x 版本支持可用。

与 SQL Server 早期版本相比，应该有不同的结果。通过执行 sp_dbcmptlevel 设置兼容性设置为 60 或 65，从而为 INSERT...EXEC 语句中的 ROLLBACK 语句行为保留 6.x 版本功能。否则使用 80 的兼容性设置。


UPDATETEXT（级别 2）
SQL Server 6.x | SQL Server 2000
UPDATETEXT 将 text 列初始化为 NULL，分配完整的 2K 页。 | 如果 sp_dbcmptlevel 的兼容级别设置为 65，则 UPDATETEXT 将 text 列初始化为 NULL。但是，如果 sp_dbcmptlevel 的兼容级别设置为 70 或 80，则 WRITETEXT 将 text 列初始化为 NULL；UPDATETEXT 将 text 列初始化为空字符串。 根据sp_dbcmptlevel 的兼容级别设置，当将 text 值初始化为 NULL（使用 UPDATETEXT 或 WRITETEXT）时，行为应不同。


数据库页和扩展盘区（级别 2）
SQL Server 6.x | SQL Server 2000
数据库扩展盘区由 8 个 2 KB 页组成。 | 数据库扩展盘区由 8 KB 页组成。不同的对象现在可共享扩展盘区，或对象可以有自己的扩展盘区。一个表和索引至少有两页。 与 SQL Server 早期版本相比，应该有不同的结果。调整磁盘空间要求以获得充足的数据库存储。有关更多信息，请参见页和扩展盘区。


RIGHT（级别 2）
SQL Server 6.x | SQL Server 2000
RIGHT 为保留字。 | RIGHT 为保留字，不应用于数据库对象名（除非使用标识符）。有关 SQL Server 2000 保留关键字的更多信息，请参见使用保留关键字。 与 SQL Server 早期版本比较应有不同的结果，因为 RIGHT 现在为保留关键字。有关在标识符中使用 RIGHT 的更多信息，请参见使用标识符。


程序组工具和实用工具（级别 1）

 SQL Server 安装帮助
实用工具（级别 1）
SQL Server 6.x | SQL Server 2000
probe 登录，不需要密码，由 DB-Library 和 Windows NT 性能监视器使用。DB-Library 两相提交库使用 probe 登录检查分布式事务的状态。Windows NT 性能监视器也使用该方式从 SQL Server 获得统计。 | probe 登录已消除。Windows NT 性能监视器将一直使用 Windows NT 身份认证连接 SQL Server，该身份认证以前称为集成安全性。确保 Windows NT 用户名和密码拥有适当的特权以使用 Windows NT 性能监视器。


系统存储过程（系统）（级别 1）
SQL Server 6.x | SQL Server 2000
几个用于文档化键的系统存储过程。 | 已删除，不再支持或不再可用。通过带有 ALTER TABLE 或 CREATE TABLE 的实现键和约束，使用声明引用完整性。删除所有对这些系统存储过程的引用，并替换为对 sp_help 或 sp_helpconstraint 的引用： sp_commonkey sp_dropkey sp_foreignkey sp_helpjoins sp_helpkey sp_primarykey
sp_placeobject 在特定段上为表或索引留出未来的空间分配。 | 由于段不再存在，sp_placeobject 可用。使用 CREATE TABLE 语句的 ON FILEGROUP 语法放置表或有关单个文件组的索引信息。删除所有 sp_placeobject 引用，并替换为对 CREATE TABLE 语句的 ON FILEGROUP 子句的引用。
sp_dbinstall 安装数据库及其设备，用于可移动介质。 | 已删除，不再支持或不再可用。删除所有对 sp_dbinstall 的引用，并替换为对 sp_attach_db 的引用。
sp_makestartup 和 sp_unmakestartup 设置存储过程以自动执行，并分别停止存储过程的自动执行。 | 已删除，不再支持或不再可用。删除所有对 sp_makestartup 或 sp_unmakestartup 的引用，并替换为对 sp_procoption 的引用。
sp_helplogins、sp_helprotect 和 sp_tableoption 系统存储过程支持模式匹配（使用通配符），这使得特定的参数具有灵活性。 | 在这些系统存储过程中不再支持使用通配符的模式匹配，因为任何系统存储过程标识符可能包含模式匹配字符。删除所有在 sp_helplogins、sp_helprotect 和 sp_tableoption 中对模式匹配的引用。
sp_serveroption 的 fallback 选项表示后备服务器。 | 因为不再支持 fallback 选项，所以 sp_serveroption 的 fallback 选项不再可用。删除所有对 sp_serveroption 的fallback 选项的引用。
sp_setlangalias 为可选语言指派或更改别名。 | 已删除，不再支持。使用 syslanguages 中提供的别名。删除所有对 sp_setlangalias 的引用。
sp_droplanguage 从数据库中除去可选语言，并从 master.dbo.syslogins 中删除相应行。 | 已删除，不再支持。删除所有对 sp_droppublisher 的引用。
由执行系统存储过程提供的后备支持，这些过程将数据库和设备的控制从中断的主服务器轮换到后备服务器。 | 使用后备系统存储过程不再支持后备支持。对后备服务器的支持使用 Microsoft Windows NT 聚集服务支持。删除所有对以下后备系统存储过程的引用： sp_fallback_activate_svr_db, sp_fallback_deactivate_svr_db, sp_fallback_enroll_svr_db, sp_fallback_help, sp_fallback_permanent_svr, sp_fallback_upd_dev_drive, sp_fallback_withdraw_svr_db。
sp_devoption 显示或设置设备状态。 | 已删除，不再可用。删除所有对 sp_devoption 的引用。
当用户没有指定数据库设备或者使用 CREATE DATABASE 或 ALTER DATABASE 语句指定 DEFAULT 时，sp_diskdefault 设置数据库设备状态表明该设备是否用于数据库存储。 | 已删除，不再可用。删除所有对 sp_diskdefault 的引用。
sp_helplog 报告设备名称，该设备包含当前数据库中日志的第一页。 | 已删除，不再可用。删除所有对 sp_helplog 的引用。
sp_helpstartup 报告所有自动启动的存储过程的列表。 | 已删除，不再可用。删除所有对 sp_helpstartup 的引用，并替换为对 sp_procoption 的引用。
sp_sqlexec 为 SQL Server 数据库客户端和服务器提供简便方法，将任何格式的语言语句发送到开放式数据服务服务器的应用程序。 | 已删除，不再可用。删除所有对 sp_sqlexec 的引用。
sp_helprevdatabase 分析现有数据库，并创建用于在其它服务器上复制数据库结构的脚本。 | 已删除，不再可用。如果适用，使用数据库对象的 SQL-DMO 脚本方法生成类似信息。删除所有对 sp_helprevdatabase 的引用。
sp_addlanguage 为服务器添加可选语言。 | 已删除，不再可用。删除所有对 sp_addlanguage 的引用。


开放式数据服务（级别 1）

SQL Server 安装帮助
服务（级别 1）
SQL Server 6.x | SQL Server 2000
SQL Executive 提供 SQL Server 调度引擎。SQL Executive 提供广阔的和不同的任务调度和警报能力，并能处理大型的客户端/服务器环境。 | SQL Executive 任务现在由 SQL Server 代理执行。使用 SQL Server 代理进行调度。有关更多信息，请参见配置 SQL Server 代理服务。


自定义排序顺序（级别 1）
SQL Server 6.x | SQL Server 2000
自定义排序顺序从定义文件（通常具有 .srt 文件扩展名）安装。 | 已删除，不再支持或不再可用。删除所有对自定义排序顺序的引用。在安装 SQL Server 2000 时，选择适当的排序顺序。有关更多信息，请参见 Windows 排序规则排序样式。


SET SHOWPLAN（级别 2）
SQL Server 6.x | SQL Server 2000
当 SET SHOWPLAN 设置为 ON 时，SQL Server 执行 Transact-SQL 语句。 | 当替换SET SHOWPLAN 的 SET SHOWPLAN_ALL 和 SET SHOWPLAN_TEXT 语句设置为 ON 时，不执行 Transact-SQL 语句。 与 SQL Server 早期版本相比，应该有不同的结果。当 SET SHOWPLAN_ALL 或 SET SHOWPLAN_TEXT 设置为 ON 时，行为应有不同。


SQL-DMO（级别 1）

SQL-DMO 应用程序是管理工具，应当将其更新为与 SQL Server 2000 一起使用。建议重新编译代码并且将所有由生成过程返回的错误信息用于跟踪任何必要的改动。

SQL Server 6.x | SQL Server 2000
SQL-DMO 在 Sqlole.dll 中实现。SQL-DMO 对象表现为 SQL Server 6.5 版及其早期版本自动化管理任务的属性、方法和事件。SQL-DMO 在 Sqlole.dll 中实现，并且不能连接到 SQL Server 2000 或 SQL Server 7.0 并在其上进行操作。 | SQL-DMO 在 Sqldmo.dll 中实现。这些 SQL-DMO 对象表现为 SQL Server 自动化管理任务的属性、方法和事件。不能将它们用于连接到 SQL Server 6.5 版或更早版本的服务器并在其上进行操作。因此，建议重新编写 SQL-DMO 应用程序。 如果应用程序必须同时在 SQL Server 2000 和 SQL Server 6.5 版或更早版本上操作，则应在应用程序中引用 Sqldmo.dll 和 Sqlole.dll 组件。根据现有子过程开发新的独立子过程，从中引用 SQL Server 2000 SQL-DMO 对象。 如果应用程序仅对 SQL Server 2000 工作，则重新编写现有的子过程以引用 SQL Server 2000 SQL-DMO 对象。 如果应用程序不对新 SQL Server 2000 服务器使用，则不更改应用程序并继续使用。


段（级别 1）
SQL Server 6.x | SQL Server 2000
可使用 CREATE INDEX 语句在段上放置索引。 | 不再支持段。但是，CREATE INDEX 可在文件组上创建索引。删除所有对段的引用，并替换为 CREATE INDEX 语句中对文件组的引用。
使用 CREATE TABLE 语句在特定的段上创建表。 | CREATE TABLE 引用文件和文件组，而不是段。删除所有对段的引用，并替换为在 CREATE TABLE 语句中对文件和文件组的引用。
用户定义的段允许出于性能原因进行特定设备上的数据库对象的放置。 | 不再支持段。多磁盘 RAID 设备通常以更低的相关管理成本提供更大的性能增长。对用户定义的数据、索引或文本位置使用文件组。删除所有与以下段相关的系统存储过程的引用： sp_addsegment sp_dropsegment sp_extendsegment sp_helpsegment 创建、修改或除去文件和文件组，并使用 CREATE TABLE、CREATE DATABASE、ALTER DATABASE和 CREATE INDEX 在文件或文件组上创建索引。


安全性（级别 1）
SQL Server 6.x | SQL Server 2000
DENY 不是保留的关键字，可用于对象标识符。 | DENY 为保留的关键字。重命名所有名为 DENY 的对象。更改所有引用了该对象的 Transact-SQL 语句和脚本，使其使用新对象名。如果 DENY 用作对象标识符，则所有对该对象的引用必须使用分隔标识符。


LTRIM 和 RTRIM 剪裁函数（级别 2）
SQL Server 6.x SQL Server 2000
在使用 0 长度字符串的查询中，LTRIM 和 RTRIM 函数返回 NULL：
SELECT RTRIM('')

SELECT DATALENGTH(RTRIM(''))
支持 0 长度的字符串。所显示的查询返回非空值；第一个返回 ''，第二个返回 0。

与 SQL Server 早期版本相比，应该有不同的结果。LTRIM 和 RTRIM 提供与 SQL Server 早期版本不同的输出。


表提示（级别 2）
SQL Server 6.x | SQL Server 2000
这些表提示（以前称为优化程序提示）可指定为 FROM 子句后的以下关键字： FASTFIRSTROW, HOLDLOCK, INDEX, NOLOCK, PAGLOCK, TABLOCK, TABLOCKX 和 UPDLOCK。 | 表提示必须指定为在 FROM 子句后，使用 WITH 子句。必须将表提示括在括号中。 与 SQL Server 早期版本相比，应该有不同的结果。有关更多信息，请参见 DELETE、FROM、INSERT、SELECT 和 UPDATE。


事务（级别 2）
SQL Server 6.x | SQL Server 2000
当 CURSOR_CLOSE_ON_COMMIT 设置为 OFF 时，ROLLBACK 语句不关闭使用 DECLARE CURSOR 语句定义的 Transact-SQL 游标。通过数据库 API 函数打开的服务器游标在 ROLLBACK 语句后仍然保持打开。 | 当 CURSOR_CLOSE_ON_COMMIT 设置为 OFF，ROLLBACK 语句关闭所有由 DECLARE CURSOR 语句的 SQL-92 形式定义的 Transact-SQL 游标，除非 DECLARE CURSOR 语句包含 INSENSITIVE 或 STATIC 关键字。除非游标已定义为 STATIC 游标（例如使用 ODBC SQL_CURSOR_STATIC 属性），否则所有 API 服务器游标也关闭。 与 SQL Server 早期版本相比，应该有不同的结果。在发出 ROLLBACK 语句后重新打开所有游标。
SET TRANSACTION ISOLATION LEVEL 的 REPEATABLE READ 子句与 SERIALIZABLE 子句行为相同。无法确保重复读取，也没有防止幻像（在回滚后，逻辑上永远不存在所读取的值）的措施。需要 REPEATABLE READ 语义的事务必须付出额外的可串行性并行损失。 | REPEATABLE READ 子句现在不再必须防止幻像。使用 SET TRANSACTION ISOLATION LEVEL 的 SERIALIZABLE 子句设置可串行事务，允许比 REPEATABLE READ 子句更少的并行，因为其防止幻像。 与 SQL Server 早期版本相比，应该有不同的结果。很多应用程序仅需要 REPEATABLE READ 语义进行正确的操作。对于需要 REPEATABLE READ 语义而不需要幻像保护的应用程序，使用 SET TRANSACTION ISOLATION LEVEL 的 REPEATABLE READ 子句。如果必需进行幻像保护，则使用 SERIALIZABLE 子句。

以下是使用 SET TRANSACTION ISOLATION LEVEL 的 SQL Server 6.5 版和 SQL Server 2000 幻像保护的摘要。

幻像保护 | SQL Server 6,5 | SQL Server 2000
REPEATABLE READ | 是 | 否
SERIALIZABLE | 是 | 是


备份和还原（级别 2）
SQL Server 6.x | SQL Server 2000
配合使用 DUMP 语句的 SKIP 和 INIT 子句无条件地重写备份设备的内容。 | DUMP 语句的 SKIP 和 INIT 子句保护 Microsoft 磁带格式介质头。在某些情况下，这将防止重写备份内容。FORMAT 子句无条件地重写介质，生成新头，在介质第一次使用或必须重写介质头时需要该子句。 与 SQL Server 早期版本相比，应该有不同的结果。如果介质为空，SKIP 和 INIT 与 BACKUP 或 DUMP 语句的 FORMAT 子句作用相同，写新介质头。如果介质不为空，则 SKIP 和 INIT 不写新介质头。
LOAD 语句当恢复数据库备份时不自动创建数据库。 | 在恢复数据库之前，创建数据库不再必要。RESTORE 语句重新自动创建数据库，包括所有文件。但是，数据库设备在 sysdevices 中不重建。仅为向后兼容性支持这些设备。在恢复后，使用设备 (DISK INIT) 创建的原始数据库外观上与使用 SQL Server 2000 文件语法创建的数据库相同。 与 SQL Server 早期版本相比，应该有不同的结果。考虑在 CREATE DATABASE 和 ALTER DATABASE 中为指定文件使用新语法。
DUMP 的 NO_LOG 子句仅当数据库中空间不足，无法使用 DUMP TRANSACTION WITH TRUNCATE_ONLY 清除日志时使用。NO_LOG 子句删除日志的非活动部分，而不制作备份复本，不对操作记录日志从而节省了空间。DUMP 语句的 TRUNCATE_ONLY 子句删除日志的非活动部分，而不制作备份复本。 | RESTORE 的 NO_LOG 和 TRUNCATE_ONLY 子句是同义词。BACKUP 的两个子句现在都删除日志的非活动部分，但并不制作它的备份复本，并且截断日志。 与 SQL Server 早期版本相比，应该有不同的结果。BACKUP 或 DUMP 语句的 NO_LOG 和 TRUNCATE_ONLY 子句在行为上应相同。
多事务日志的恢复可以执行而不需要在 LOAD 语句中使用特定的关键字。 | 不再可能不使用 RESTORE 语句的 WITH 子句恢复多事务日志。 与 SQL Server 早期版本相比，应该有不同的结果。使用正确的 RESTORE 语法恢复带有多事务日志的数据库，如下例所示。所有除了最后的 RESTORE 语句应指定 NORECOVERY 子句。
当装载数据库时，所有 sp_dboption 的数据库选项将不受影响，必须手工设置。 | 日志记录所有对 sp_dboption 数据库设置（除"脱机"、"合并发布"、"已发布"和"已订阅"设置）的更改。当数据库还原和恢复时，所有 sp_dboption 的数据库选项前滚。当恢复完成后，每个数据库选项在此时处于期望状态，与数据库的剩余部分一致。 与 SQL Server 早期版本相比，应该有不同的结果。在 RESTORE 操作后重置数据库选项不再必要。

示例

A. 通过应用完整的数据库备份和多事务日志恢复数据库

本例使用多事务日志备份恢复数据库。

RESTORE DATABASE mydb
FROM mydb
WITH NORECOVERY

RESTORE LOG mydb
FROM mydb_log1
WITH NORECOVERY

RESTORE LOG mydb
FROM mydb_log2
WITH RECOVERY

SQL Server 6.x | SQL Server 2000
如果启用 sp_dboption 的 no chkpt. on recovery 选项，则备用服务器可在每个事务日志恢复间设置为只读模式。 | 如果使用撤消文件，则备用服务器可在事务日志还原操作间设置为只读模式。 与 SQL Server 早期版本相比，应该有不同的结果。用 RESTORE的 STANDBY 子句为备用服务器使用撤消文件，如下例所示。

B. 使用 STANDBY 子句和撤消文件恢复数据库

本例用最后的必要 RESTORE 语句设置服务器允许数据库上的写操作。

RESTORE DATABASE mydatabase
FROM mydb_backup
WITH NORECOVERY

RESTORE LOG mydb
FROM mydb_log1
WITH RECOVERY STANDBY (FILENAME = 'c:\mssql\data\mydbundo.dat')

RESTORE LOG mydb
FROM mydb_log2
WITH RECOVERY STANDBY (FILENAME = 'c:\mssql\data\mydbundo.dat')

RESTORE DATABASE mydb
WITH RECOVERY


系统表（级别 2）
SQL Server 6.x | SQL Server 2000
系统表由 SQL Server 内部使用，适用范围很广。 | 某些系统表已发生了微小的更改，而其它系统表由提供相同信息的信息架构视图替换。 与 SQL Server 早期版本相比，应该有不同的结果。使用提供的信息构架视图或 ODBC 目录系统存储过程 获得系统目录信息。
sysdatabases 的 logptr 列为指向事务日志的指针。 | logptr 列已重命名为 status2。删除所有对 sysdatabases 的 logptr 列的引用，并替换为对 status2 列的引用。
sysdatabases 的 dumptrdate 列为上次使用 DUMP TRANSACTION 的日期。 | 该列现在"保留"。 与 SQL Server 早期版本相比，应该有不同的结果。删除所有对 sysdatabases 的 dumptrdate 列的引用。
sysmessages 的 langid 列包含 SQL Server 消息组 ID。 | langid 列重命名为 msglangid。 与 SQL Server 早期版本相比，应该有不同的结果。删除所有对 sysmessages 的langid 列的引用，并替换为对 msglangid 列的引用。
syslogins 表的 language 列的 NULL 值相当于指定 us_english。 | language 列的 NULL 值不再相当于 us_english。 与 SQL Server 早期版本相比，应该有不同的结果。删除所有对 syslogins 的 language 列的引用，并替换为要用的语言名。
系统表通过插入特定值获得其列值（SQL Server 2000 在很多系统表和用户定义表中使用计算列）。 | 系统表（和用户定义的表）现可使用计算列。 与 SQL Server 早期版本相比，应该有不同的结果。涉及表提示和系统表的 SQL Server 6.5 版查询生成的结果集可能仍相同，但在 SQL Server 2000 中的行为可能不同。例如，即使在查询的 FROM 子句中已指定 NOLOCK 表提示，查询可能仍要等待某些锁。


视图（级别 2）
SQL Server 6.x | SQL Server 2000
可更新视图受限为只影响一个表的修改。 | 可更新视图可以更改该视图涉及的多个表。只要 SQL Server 可将用户的更新请求明确地翻译为对视图定义中所引用基表的更新，则 DELETE、INSERT 和 UPDATE 语句可引用视图。 当处理可更新视图时，其中视图中的多个表包含在 DELETE、INSERT 或 UPDATE 语句中，行为应不同。


程序组工具和实用工具（级别 1）

在 Microsoft® SQL Server™ 2000 中，已重命名或替换了下列工具。

SQL Server 6.x | SQL Server 2000
ISQL_w | SQL 查询分析器
MS Query | 暂缺
SQL 客户端配置 | 客户端网络实用工具
SQL 企业管理器 | SQL Server 企业管理器
SQL 帮助 | 暂缺
SQL 安全管理器 | 暂缺
SQL 跟踪程序 | SQL Server 事件探查器
SQL 性能监视器 | 暂缺。将 SQL Server 性能计数器添加到了 Windows 2000 系统监视器或 Windows NT 4.0 性能监视器。
SQL 服务管理器 | SQL Server 服务管理器
SQL 安装程序 | 暂缺


SELECT（级别 2）
SQL Server 6.x | SQL Server 2000
不带 ORDER BY 子句的 SELECT 语句返回明显排序集中的行。 | SELECT 语句的显式 ORDER BY 子句用于确保数据任何有用的排序。另外，精确的结果取决于所使用的排序规则。 与 SQL Server 早期版本相比，应该有不同的结果。将 ORDER BY 子句添加到所有需要产生排序行的 SELECT 语句中。


配置选项（级别 2）

管理脚本可能已使用这些配置选项。有关配置选项的更多信息，请参见 sp_configure 和设置配置选项。有关配置选项的更多信息，请参见 SQL Server 联机丛书中的"sp_configure"和"设置配置选项"主题。

SQL Server 6.x | SQL Server 2000
open objects 设置在 SQL Server 中可同时打开的数据库对象的最大值。 | 现在是高级选项。默认值 0 表示自动增长。 与 SQL Server 早期版本相比，应该有不同的结果。删除所有对 open objects 的引用。有关更多信息，请参见 open objects 选项。
user connections 设置允许同时连接到 SQL Server 的最大值。 | 现在是高级选项。默认值 0 表示自动增长。 与 SQL Server 早期版本相比，应该有不同的结果。删除所有对 user connections 选项的引用。


触发器和系统存储过程（级别 2）
SQL Server 6.x | SQL Server 2000
sp_helpsql 为 Transact-SQL 语句、系统存储过程和其它特别主题提供语法。 | 包括 sp_helpsql，但不再为 Transact-SQL 语句或系统存储过程返回语法信息。执行 sp_helpsql 将产生一条消息，建议从 SQL Server 联机帮助获得语法信息。 与 SQL Server 早期版本相比，应该有不同的结果。使用 SQL Server 联机丛书查阅 Transact-SQL 语句和系统存储过程的语法。
在每个表中，对于每个数据修改事件（INSERT、UPDATE 或 DELETE）仅允许使用一个触发器。如果为特定数据修改事件创建了新触发器，则新触发器替换原来的触发器。 | Microsoft® SQL Server™ 允许为每个数据修改事件（DELETE、INSERT 或 UPDATE）创建多个触发器。例如，如果为已经有 UPDATE 触发器的表执行 CREATE TRIGGER FOR UPDATE，则创建另一个 UPDATE 触发器。 与 SQL Server 早期版本相比，应该有不同的结果。通过将 sp_dbcmptlevel 中的兼容级别设置成 80，启用多个触发器。通过将兼容性级别设置成 60 或 65，保持 SQL Server 6x 的行为。有关更多信息，请参见 sp_dbcmptlevel 和 CREATE TRIGGER。
如果触发器修改了定义其自身的表，则触发器不递归唤醒调用该修改。 | SQL Server 允许触发器的递归唤醒调用。 与 SQL Server 早期版本相比，应该有不同的结果。通过设置 RECURSIVE_TRIGGERS 数据库选项，启用递归触发器。有关递归和嵌套触发器的更多信息，请参见嵌套触发器。
sp_create_removable 的一些参数引用设备。 | 设备已由文件或文件组代替。 与 SQL Server 早期版本相比，应该有不同的结果。将 sp_create_removable 中的所有设备引用替换为对文件组的引用
对 inserted 或 deleted 表中对 text 或 image 列的引用表现为 NULL。 | 除非sp_dbcmptlevel 的兼容级别设置为 60 或 65，否则不再允许对 inserted 或 deleted 表中 text 或 image 列的引用。 根据 sp_dbcmptlevel 的设置，当引用 inserted 或 deleted 表中 text 或 image 列时，当使用 CREATE TRIGGER 时，行为应不同。
对于使用 sp_ 前缀的存储过程，SQL Server 先搜索当前数据库，然后在 master 中搜索。 | 带有 sp_ 前缀的存储过程首先在 master 中查找。如果用户定义的存储过程具有与在 master 中系统提供的存储过程相同的名称，则 SQL Server 总是查找到系统提供的存储过程。 与 SQL Server 早期版本相比，应该有不同的结果。当调用用户定义的带有前缀 sp_ 的存储过程时，行为应不同。显式地使用户定义的存储过程名合法，或重命名用户定义的存储过程。
SET ANSI_NULLS 和 SET QUOTED_IDENTIFIER 语句仅在更改了两者之一的选项会话期间处于活动状态。 | 当存储过程创建或改变时，将保存 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 两者的设置。当执行存储过程时，将启用这些原始设置，并且事后任何客户端会话设置恢复。在存储过程中，只有在存储过程执行后，对 SET ANSI_NULLS 的更改才会生效。 与 SQL Server 早期版本相比，应该有不同的结果。使用 SET QUOTED_IDENTIFIER、SET ANSI_NULLS 的一个设置和所有其它相关 SET 选项开发数据库或应用程序。如果客户端会话更改 SET 选项，请在存储过程外这样做。
当执行远程存储过程时，这些过程可能为通过 SET ANSI_DEFAULTS 设置的选项假定非标准行为。另外，远程存储过程可能不显式地将这些选项（由 SET ANSI_DEFAULTS 设置)设置为 OFF。 | 当执行远程存储过程时，将在 SET ANSI_DEFAULTS 设置为 ON 的状态下执行这些过程。 与 SQL Server 早期版本相比，应该有不同的结果。当执行远程存储过程时，如果 SET ANSI_DEFAULTS 使用非标准设置，或如果选项非显式地设置为 OFF，则行为应不同。


SET DISABLE_DEF_CNST_CHK（级别 1）
SQL Server 6.x | SQL Server 2000
SET DISABLE_DEF_CNST_CHK 设置控制中间约束检查。 | 已删除，不再可用。删除所有对 SET DISABLE_DEF_CNST_CHK 的引用。


SQL 警报器（级别 1）
SQL Server 6.x | SQL Server 2000
SQL 警报器，SQLALRTR.exe，用于集成警报引擎和 Windows NT 性能监视警报器。 | 已删除，不再支持或不再可用。由 SQL Server 性能条件警报替换。删除所有对 SQL 警报器的引用，并替换为对 SQL Server 性能条件警报的引用。有关更多信息，请参见定义警报。


DECnet 网络库（级别 1）
SQL Server 6.x | SQL Server 2000
对于基于 Intel、基于 MIPS 和基于 Alpha AXP 的计算机，服务器 DECnet 套接字 Net-Library 允许运行在 VMS 上的客户端连接到 SQL Server，从而提供 PATHWORKS 网络的连通性。 | 已删除，不再支持。删除所有对 DECnet 套接字Net-Library 的引用。


空字符串（级别 2）
SQL Server 6.x | SQL Server 2000
空字符串可解释为 NULL 或一个单个空格字符。 | 空字符串的解释由兼容级别控制，而兼容级别由 sp_dbcmptlevel 系统存储过程设置。如果兼容级别小于或等于 65，则 SQL Server 将空字符串解释为单个空格。如果兼容级别等于 70 或 80，则 SQL Server 将空字符串解释为空字符串。有关更多信息，请参见 sp_dbcmptlevel。 与 SQL Server 的早期版本比较，空字符串的解释应不同。Transact-SQL 函数和语句受 sp_dbcmptlevel 设置的影响，包括CHARINDEX、DATALENGTH、LEFT、LTRIM、PATINDEX、REPLICATE、RIGHT、RTRIM、SPACE、SUBSTRING 和 UPDATETEXT。


系统表（级别 1）
SQL Server 6.x | SQL Server 2000
系统表由 SQL Server 内部使用，存在很多用途，包括维护 SQL Server 可使用的字符集列表，并包含关于活动锁的信息。 | 系统表已进行了重大更改。大多数 SQL Server 6.x 系统表将继续正常工作。提供的视图允许引用 SQL Server 6.x 系统表的应用程序继续正常发挥功能。但是，某些 SQL Server 2000 数据将不能通过这些视图引用。使用提供的信息架构视图 或 ODBC 目录系统存储过程 获得系统表信息。按实际需要修改脚本。任何引用 SQL Server 6.x 系统表的脚本都将不能正确转换。
sysdevices 为每个磁盘转储、磁带转储和数据库设备包含一行。 | mirrorname 和 stripeset 列已删除。Sysdevices 仅为转储设备保留，也为向后兼容性保留（支持 DISK INIT 和 SQL Server 6.x 的 CREATE DATABASE 语法）。删除所有对 sysdevices 的 mirrorname 和 stripeset 列的引用。
syshistory 为每个已调度事件、警报或发生的任务包含一行。 | 由 sysjobhistory 替代。删除所有对 syshistory 的引用，并替换为对 sysjobhistory 的引用。
sysindexes 为每个聚集索引包含一行，并且为每个非聚集索引包含一行。 | distribution、segment、rowpage、keys1 和 keys2 列已删除。删除所有对 sysindexes 的 distribution、segment、rowpage、keys1 和 keys2 列的引用。 另外，soid 是 reserved3，csid 是 reserved4。
syskeys 用于对象 | 已删除；没有替代项。删除所有对 syskeys 的引用。
syslocks 包含有关活动锁的信息。 | 已删除；由 syslockinfo 替代。删除所有对 syslocks 的引用，并替换为对 syslockinfo 的引用。
syslogs 包含事务日志。 | 已删除；没有替代项。数据库日志现在为操作系统文件。删除所有对 syslogs 的引用。
sysprocesses 包含有关 SQL Server 进程的信息。 | gid 列已删除。在 SQL Server 中，suid 列已删除。删除所有对 sysprocesses 的这些列的引用。
sysprocedures 包含用于每个视图、默认、规则、触发器和 CHECK 约束，以及 DEFAULT 约束和存储过程的条目。 | 已删除；由 syscomments 替代。当过程需要编译时，SQL Server 从 syscomments 获得过程文本。删除或注释掉所有对 sysprocedures 的引用，并替换为对 syscomments 的引用。
syssegments 为每个段（所谓磁盘碎片集合）包含一行。 | 已删除；没有替代项。不再支持段。由文件组代替。删除所有对 syssegments 的引用。通过使用 CREATE DATABASE、ALTER DATABASE、CREATE TABLE、ALTER TABLE和 CREATE INDEX 使用文件组代替。
systasks 为每个已调度任务包含一行。 | 已删除，由 sysjobs、sysjobsteps 和 sysjobservers 替代。删除所有对 systasks 的引用，并按实际需要替换为对 sysjobs、sysjobsteps 和 sysjobservers 的引用。
sysusages 为指派给数据库的每个磁盘分配块包含一行。 | 已删除；没有替代项。SQL Server 依靠 sysdevices 获得数据库文件信息。支持文件组，并且添加 sysfiles 和 sysfilegroups 系统表。这些系统表驻留在每个数据库中，并描述数据库文件和文件组。删除所有对 sysusages 的引用。
master.dbo.spt _datatype_info | 已删除；没有替代项。删除所有对 master.dbo.spt_datatype_info 的引用。

有关更多信息，请参见系统表。


UPDATE（级别 2）
SQL Server 6.x | SQL Server 2000
若将 ARITHABORT 设置成 OFF，则 UPDATE 语句在遇到算术溢出情况时会将更新值设置为 NULL，如果值属于非空列则跳过更新。 | 当 SET ARITHABORT 为 OFF 且 INSERT、UPDATE 或 DELETE 语句遇到算术错误时，SQL Server 将插入或更新 NULL 值。如果目标列不可为空，则插入或更新操作失败并且用户收到错误信息。 与 SQL Server 早期版本相比，应该有不同的结果。在 UPDATE 或 INSERT 语句后使用 @@ERROR 函数测试错误。


数据库（级别 1）
SQL Server 6.x | SQL Server 2000
ALTER DATABASE 的 ON database_device = size 子句以 MB 为单位指定分配给数据库扩展的空间量，并可用在 DISK INIT 后更改数据库设备大小。 | 如果最初不是由 DISK INIT 所创建，则 ON database_device = size 语法无法与 ALTER DATABASE 一起指定。可用 ALTER DATABASE 的 MODIFY FILE 子句作为替代方式更改数据库文件的大小。删除所有对 ALTER DATABASE 的 ON database_device = size 子句的引用。有关更多信息，请参见 ALTER DATABASE。


键集游标（级别 2）
SQL Server 6.x | SQL Server 2000
当使用键集游标时，在行删除后插入行，而插入行使用与已删除行相同的键，将导致插入行占据原始行的槽。 | 当使用键集游标时，在行删除后插入行，而插入行使用与已删除行相同的键，允许原始行保持空，而新插入的行插入到末尾。 与 SQL Server 早期版本相比，应该有不同的结果。当使用键集游标插入和删除带有相同键值的行时，行为应有所更改。


DB-Library（级别 2）
SQL Server 6.x SQL Server 2000
当连接到 6.x 版 SQL Server 时，对 dbcursorfetchex 的调用导致游标结果集结尾后的游标位置，返回：
  • FAIL，带有键集或不感知游标。

  • SUCCEED，并且所有行状态指示器设置为 0，带有动态游标或前向游标。
 对 dbcursorfetchex 的调用导致游标结果集结尾后的游标位置，返回 SUCCEED。所有行状态指示器设置为 0。该行为应用于所有类型的游标。

与 SQL Server 早期版本相比，应该有不同的结果。当对 dbcursorfetchex 的调用导致游标结果集结尾后的游标位置时，与 SQL Server 6.x 比较，结果应不同。若要获得 SQL Server 6.x 行为，请使用兼容级别 65。


索引（级别 2）
SQL Server 6.x | SQL Server 2000
当用于聚集索引时，DROP INDEX 语句除去控制聚集索引 B 树的页。 | 在聚集索引上，DROP INDEX 语句必须重建所有非聚集索引。SQL Server 也必须使用行指针替换非聚集叶中的聚集索引键。 与 SQL Server 早期版本相比，应该有不同的结果。如果，例如除去或重创聚集索引以设置新填充因子，则使用 CREATE INDEX 语句的 DROP_EXISTING 子句。


复制（级别 1）
SQL Server 6.x | SQL Server 2000
受限发布能通过用户界面创建，并在复制数据中使用。 | 受限发布无法通过用户界面创建，并且不再支持。删除所有对受限发布的引用。受限发布的替换项将在未来版本中可用。有关更多信息，请参见复制概述。
发布和订阅属性可用 DBOption 对象设置。 | 不再可用。删除所有对 DBOption 对象的引用，并替换为对 ReplicationDatabase 对象的 EnablePublishing 属性的引用。
repl_publisher 登录允许分发服务器上的复制处理连接到订阅服务器上，并将表架构和数据复制到目的数据库中。 | 不再可用。删除所有对 repl_publisher 登录的引用，并替换为对发布访问列表 (PAL) 中登录的引用。有关 PAL 的更多信息，请参见发布访问列表。


系统存储过程（任务）（级别 1）

将以下不再支持的 Microsoft® SQL Server™ 6.x 与任务相关的系统存储过程替换为相应的 SQL Server 2000 与作业相关的系统存储过程。

SQL Server 6.x | SQL Server 2000
sp_addalert | sp_add_alert
sp_addnotification | sp_add_notification
sp_addoperator | sp_add_operator
sp_dropalert | sp_delete_alert
sp_dropnotification | sp_delete_notification
sp_dropoperator | sp_delete_operator
sp_helpalert | sp_help_alert
sp_helphistory | sp_help_jobhistory
sp_helpnotification | sp_help_notification
sp_helpoperator | sp_help_operator
sp_purgehistory | sp_purge_jobhistory
sp_runtask | sp_start_job
sp_stoptask | sp_stop_job
sp_updatealert | sp_update_alert
sp_updatenotification | sp_update_notification
sp_updateoperator | sp_update_operator

任务管理更改为作业管理。


数据访问对象 (DAO)（级别 1）
SQL Server 6.x | SQL Server 2000
当访问 SQL Server 6.x 版服务器时，数据访问对象 (DAO) 3.x 版可正常运行。 | 因为当连接到 SQL Server 时，随 SQL Server 2000 一起提供的 ODBC 驱动程序表现新的全局唯一标识符 (GUID) 和 Unicode 数据类型，所以 DAO 3.x 版在 SQL Server 2000 中不能正常工作。不过，提供了 odbccmpt 实用工具以启用 SQL Server 6.x 版 ODBC 与 DAO 应用程序的兼容性。


事务（级别 1）
SQL Server 6.x SQL Server 2000
不在事务中的数据类型转换错误向 SQL Server 返回错误。如果数据类型转换发生在事务中，则事务继续。例如：
USE pubs
CREATE TABLE test (c1 int)
GO
BEGIN TRANSACTION
GO
INSERT INTO test VALUES (1)
GO
INSERT INTO test VALUES ('aaa')
GO
COMMIT TRANSACTION
GO
SELECT *
FROM test
 当尝试数据类型转换失败时，SQL Server 返回一个错误。如果数据类型转换错误发生在事务中，则终止事务。如果数据类型转换失败发生在事务中，与 SQL Server 早期版本比较在行为上应不同。


系统存储过程（常规扩展过程）（级别 1）
SQL Server 6.x | SQL Server 2000
xp_snmp_getstate 返回 SQL Server 简单网络管理协议 (SNMP) 代理的状态。xp_snmp_raisetrap 允许客户端定义并向 SNMP 客户端发送陷阱（SNMP 警报）。 | 已删除，不再可用。删除所有对 xp_snmp_getstate 或 xp_snmp_raisetrap 的引用。


DBCC（级别 1）
SQL Server 6.x | SQL Server 2000
DBCC DBREINDEX 使用 SORTED_DATA 和 SORTED_DATA_REORG 子句。SORTED_DATA 子句消除创建聚集索引时执行的排序，物理重组数据。SORTED_DATA_REORG 子句消除当创建聚集索引时执行的排序。 | 已删除，不再支持。删除所有对 DBCC DBREINDEX 语句的 SORTED_DATA 或 SORTED_DATA_REORG 子句的引用，并替换为对 CREATE INDEX 的 DROP_EXISTING 子句的引用。
DBCC SHRINKDB 返回数据库可收缩到的最小值，或将指定数据库的大小收缩到指定值。 | 已删除，不再支持或不再可用。删除所有对 DBCC SHRINKDB 的引用，并替换为对 DBCC SHRINKDATABASE的引用。考虑使用 ALTER DATABASE 的 AUTO_SHRINK 选项自动收缩数据库。
DBCC MEMUSAGE 提供关于内存使用的详细报告。 | 已删除，不再支持或不再可用。删除所有对 DBCC MEMUSAGE 的引用，并替换为对这些性能监视器计数器的引用。

性能监视器对象名 | 性能监视计数器名
SQL Server:Buffer Manager Object | 正在使用的过程高速缓存页
 | 过程高速缓存大小（页）
SQL Server:Cache Manager Object | 高速缓存命中率
 | 过程高速缓存页
 | 过程高速缓存对象计数*

* 各种分类的高速缓存对象均可以使用这些计数器，包括特殊 sql、准备好的 sql、过程、触发器等。


开放式数据服务（级别 1）

在 SQL Server 2000 中，开放式数据服务（现在称为扩展存储过程）不再支持网关应用程序。

SQL Server 6.x | SQL Server 2000
ODBC 客户端用开放式数据服务网关的 ODBC 客户端驱动程序 (ODSGT32.DLL) 和相关的资源文件连接到开放式数据服务网关服务器。 | 不随 SQL Server 2000 一起提供。SQL Server 6.x 版的 ODSGT32.DLL 和相关的资源文件在用 SQL Server 7.0 版的头文件和库重新编译的开放式数据服务网关上有效。使用开放式数据服务的 SQL Server 6.x 版 ODBC 客户端驱动程序 (ODSGT32.DLL) 和相关的资源文件建立从 ODBC 客户端到开放式数据服务网关的连接。 考虑使用 Windows NT 组件服务重新设计应用程序。
开放式数据服务的数据结构，例如 SRV_CONFIG、SRV_PROC 和 SRV_SERVER 表现在开放式数据服务的头文件中。 | 这些数据结构不再出现，并且数据结构成员已发生更改。直接引用这些数据结构或其成员的应用程序必须更改或使用 SQL Server 7.0 开放式数据服务头文件 (srv.h) 重新编译，并使用 SQL Server 7.0 开放式数据服务库文件 (opends60.lib) 重新链接。应进行上述更改以避免服务器失败的可能性。
SQL Server 的早期版本可以对遵从开放式数据服务 6.x 或 4.x 版的网关调用进行远程存储过程。 | SQL Server 2000 不支持对遵从开放式数据服务 6.x 和 4.x 版的网关的远程存储过程调用。SQL Server 2000 支持对遵从 SQL Server 2000 的网关的远程存储过程调用。用开放式数据服务早期版本编译并链接的网关应使用 SQL Server 7.0 版的开放式数据服务重新编译。如果目标数据源在 Windows NT 或 Windows 95/98 上具有 ODBC 或 OLE DB 提供程序，则考虑使用分布式查询。


 SQL Server 安装帮助

请参见 SQL Server 联机丛书以查阅此主题。


词汇

A

ActiveX 数据对象 (ActiveX Data Objects)

一种易于使用的应用程序接口 (API)，该接口将 OLE DB 封装以用于 Visual Basic、用于应用程序的 Visual Basic、Active Server Pages 和 Microsoft Internet Explorer Visual Basic 脚本等语言中。

ActiveX 数据对象（多维）(ADO MD) (ActiveX Data Objects (Multidimensional) (ADO MD))

一种高级的、不依赖语言的基于对象的数据访问接口的集合，该集合为多维数据应用程序进行了优化。Visual Basic 及其它一些自动化语言将 ADO MD 用作多维数据存储的数据访问接口。ADO MD 是 ADO 2.0 及更高版本的一部分。

ADO (ADO)

参见定义： ActiveX 数据对象

ADO MD (ADO MD)

参见定义： ActiveX 数据对象（多维）(ADO MD)

安全标识号 (SID) (Security Identifier (SID))

标识登录到安全系统上的用户的唯一值。SID 可以标识一个或一组用户。

暗示性权限 (implied permission)

执行针对角色的活动的权限。暗示性权限不能授权、废除或拒绝。

按位运算 (bitwise operation)

操作单个位或测试某一位是开还是关的运算。

安装程序初始化文件 (Setup initialization file)

使用 Windows .ini 文件格式的一种文本文件，存储允许在不必有用户响应安装程序提示的情况下安装 SQL Server 的配置信息。

ANSI (ANSI)

参见定义： 美国国家标准学会 (ANSI)

ANSI 到 OEM 转换 (ANSI to OEM conversion)

当数据从使用特定代码页存储字符数据的数据库传输到使用不同代码页的计算机上的客户端应用程序时必定发生的字符转换。通常，基于 Windows 的客户端计算机使用 ANSI/ISO 代码页，而一些数据库（出于兼容性原因）可能使用 OEM 代码页，如 MS-DOS 437 代码页或代码页 850。

API (API)

参见定义： 应用程序接口 (API)

API 服务器游标 (API server cursor)

一种服务器游标，用于支持应用程序接口 (API)（如 ODBC、OLE DB、ADO 和 DB-Library）的游标函数。应用程序并不经常直接请求服务器游标，而是调用 API 的游标函数。如果这是支持所请求的游标功能的最佳方式，则该 API 的 SQL Server 接口实现服务器游标。

请参见： 服务器游标

B

半加法度量 (semiadditive measure)

可以沿多维数据集中的一个或多个（但不是全部）维度进行求和的度量值。例如，清单的库存量度量值可以沿地理维度求和以得到所有仓库的库存总量，但不能沿时间维度求和，因为该度量值定期指定快照数量。

绑定 (binding)

在 SQL 应用程序接口 (API) 中，绑定使结果集列或参数与程序变量相关联，以便当提取或更新行时数据自动移入或移出程序变量。

保存点 (savepoint)

使应用程序可以在遇到次要错误时回滚部分事务的标记。应用程序仍必须在事务完成时提交或回滚完整事务。

保存与转发数据库 (store-and-forward database)

参见定义： 分发数据库

bcp 实用工具 (bcp utility)

一种命令提示符大容量复制实用工具，它以用户指定的格式从操作系统文件或向操作系统文件复制 SQL Server 数据。

bcp 文件 (bcp files)

存储由大容量复制实用工具或同步创建的大容量复制数据的文件。

被动语态 (passive voice)

表示动词的主语接受该动词的动作。例如，在句子“该产品已被卖给另外一个客户了”中，主语 该产品 接受动词 卖 的动作。

请参见： 主动语态

备份 (backup)

系统错误后用于恢复数据的数据库、事务日志、文件或文件组的复本。

备份集 (backup set)

单个备份操作的输出。

备份媒体 (backup media)

用于存储备份集的磁带、磁盘或命名管道。

备份设备 (backup device)

备份或还原操作中使用的磁带或磁盘。

备份文件 (backup file)

存储完整或部分数据库、事务日志、文件和/或文件组备份的文件。

备注 (memo)

列的一种，包含长字符串文本，通常多于 255 个字符。这是 SQL Server text 数据类型的 Access 等价物。

本地登录标识 (local login identification)

用户登录到本地服务器时必须使用的标识 (ID)。登录 ID 最多可以有 128 个字符。这些字符可以是字母数字，但第一个字符必须为字母（例如 CHRIS 或 TELLER8）。

本地订阅 (local subscription)

对合并发布的订阅，使用发布服务器的优先级值进行冲突检测和解决。

本地多维数据集 (local cube)

使用 PivotTable 服务在本地计算机上创建和存储的带有 .cub 扩展名的多维数据集。

本地分发服务器 (local Distributor)

同时配置为 SQL Server 复制的发布服务器和分发服务器的服务器。

请参见： 分发服务器, 远程分发服务器

本地服务器 (local server)

SQL Server 2000 连接中，SQL Server 2000 实例与应用程序在同一台计算机上运行。

当在 Transact-SQL 语句中解析对数据库对象的引用时，执行该语句的 SQL Server 2000 实例。

SQL Server 2000 分布式查询中，执行分布式查询的 SQL Server 2000 实例。然后本地服务器访问查询中引用的任何链接服务器。

SQL Server 2000 远程存储过程中，执行引用远程存储过程的 EXEC 语句的 SQL Server 实例。然后本地服务器将执行请求传递给远程存储过程所驻留于的远程服务器。

请参见： 链接服务器, 远程服务器

本地组 (local group)

Windows NT 4.0 或 Windows 2000 中的组，包含来自相应域组和任何信任域的用户帐户和全局组，这些用户和全局组是在该域组中创建的。本地组中不能含有其它本地组。

本机格式 (native format)

大容量复制数据文件，使用与 SQL Server 用来在 SQL Server 数据库中存储数据的相同的内部数据结构在这些文件中存储数据。大容量复制可以快速处理本机模式文件，因为当在 SQL Server 和大容量复制数据文件之间传输数据时不必转换数据。

请参见： 字符格式

比较级 (comparative form)

英文中形容词或副词的一种词形，表示比较或较大的程度。较短的形容词和某些副词通常通过添加 -er 来构成其比较级，如“young”和“younger”。

变量 (variables)

赋以值的定义实体。局部变量使用 DECLARE@localvariable 语句定义，并通过 SELECT 或 SET@localvariable 语句在声明该变量的语句批处理内赋以初始值。

编写复制脚本 (replication scripting)

生成 .sql 脚本以用于配置和禁用复制。

表 (table)

一种二维数据对象，由行和列组成，用于存储关系数据库中的数据。每个表存储有关由数据库建模的一类对象的信息。例如，某个教育数据库将具有一个教师表、一个学生表和一个课程表。

表的列代表建模对象的一个特性（例如名、姓和地址）。每个行代表建模对象的一个发生。例如，Class 表中的一个行将记录有关上午 9:00 进行的代数 1 课程的信息，而另一个表将记录有关上午 10:00 进行的世界历史课程的信息。

表达式 (expression)

SQL 中符号和运算符的组合，它评估为单个数据值。简单的表达式可以是一个常量、变量、列或标量函数。复杂表达式是由运算符连接的一个或多个简单表达式。

表格格式数据流 (TDS) (tabular data stream (TDS))

SQL Server 内部客户端/服务器数据传输协议。TDS 允许客户端和服务器产品通讯，而与操作系统平台、服务器版本或网络传送无关。

表级约束 (table-level constraint)

当定义表或改变表时，允许在一个列上（列级约束）或几个列上（表级约束）定义各种形式的数据完整性的约束。约束支持域完整性、实体完整性、引用完整性以及用户定义的完整性。

标量聚合 (scalar aggregate)

在只包含聚合函数的 SELECT 语句列列表中指定的一种聚合函数（如 MIN()、MAX() 或 AVG()）。当列列表只包含聚合函数时，则结果集只具有一个行给出聚合值，该值由与 WHERE 子句谓词相匹配的源行计算得到。

表扫描 (table scan)

一种数据检索操作，该操作中数据库引擎必须读取表中的所有页以查找符合查询条件的行。

标识符 (identifier)

数据库中对象的名称。标识符可以具有 1 到 128 个字符。

标识列 (identity column)

表中已指派了标识属性的列。标识属性生成唯一数字。

标识属性 (identity property)

生成对表中每个行进行唯一标识的值的属性。当向具有标识列的表中插入行时，SQL Server 自动基于上次使用的标识值和创建列时指定的增量值来生成下一个标识值。

表锁 (table lock)

包括所有数据和索引的表上的锁。

标准安全机制 (standard security)

参见定义： SQL Server 身份验证

别名 (alias)

表达式中表或列的可选名称，常用来简化名称以方便以后在代码中的引用，防止可能的不明确引用，或在查询输出中提供更具描述性的名称。别名还可以是服务器的可选名称。

别名 (nickname)

当用于合并复制系统表时，另一个订阅服务器的名称，已知该订阅服务器已具有更新数据的指定生成。用来避免将更新发送给已接收到那些更改的订阅服务器。

bigint 数据类型 (bigint data type)

一种整型数据类型，其值的范围为从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807)。

binary 数据类型 (binary data type)

固定长度的二进制数据类型，其最大长度为 8,000 个字节。

并发 (concurrency)

允许多个用户同时访问和更改共享数据的进程。SQL Server 使用锁定以允许多个用户同时访问和更改共享数据而彼此之间不发生冲突。

bit 数据类型 (bit data type)

存放 1 或 0 值的数据类型。

BLOB (BLOB)

参见定义： 二进制大对象

布尔型 (Boolean)

只可以评估为真或假的运算或表达式。

不感知游标 (insensitive cursor)

打开时不反映其他用户对基础数据进行的数据修改的游标。

不规则动词 (irregular verb)

不以通常的方式进行词尾变化的动词。不规则动词的一个例子是不以对原形添加 -ed 来创建过去式和过去分词的动词。不规则动词有几种常见类型，根据其表示过去式和过去分词的方式进行分类：元音变化（begin、began、begun）；添加 -en（beat、beat、beaten）；元音变化（spin、spun、spun）；-d 变化为 -t（lend、lent、lent）；无变化（put、put、put）。

不规则名词 (irregular noun)

不是通过添加 -s 或 -es 而构成的名词复数，如 men 或 women。

不规则形式类型 (irregular form type)

单词所使用的不规则形式的词尾变化（复数、过去式或未知）的类型。例如，单词 woman 具有不规则的复数形式 (women)，因为不按照复数的标准方式（添加 -s 或 -es）构成 woman 的复数。

不规则形式 (irregular form)

英文单词的一种形式，它是词尾变化标准规则的例外。例如，run 的过去式是 ran ，而不是 runned ；同样地，alumnus 的复数是 alumni ，而不是 alumnuses 。

不均衡层次结构 (unbalanced hierarchy)

叶节点距根节点的距离不同的维度层次结构。组件部件和结构图表层次结构通常是不均衡的。

请参见： 不齐整层次结构

不可重复读取 (nonrepeatable read)

当某个事务不止一次读取同一行，并且一个单独的事务在两次（或多次）读取之间修改该行时。因为在同一个事务内的多次读取之间修改了该行，所以每次读取都生成不同值，从而引发不一致问题。

不齐整层次结构 (ragged hierarchy)

一种维度层次结构，其中一个或多个级别在层次结构的一个或多个分支中不包含成员。例如，地理层次结构中的州或省级别对于不具有州或省的国家/地区不包含成员。

请参见： 不均衡层次结构

步骤对象 (step object)

一种数据转换服务 (DTS) 对象，它协调 DTS 包中的控制流和任务的执行。不会执行不具有相关的步骤对象的任务。

C

参照键 (referencing key)

参见定义： 外键 (FK)

操作 (action)

最终用户发起的对选定的多维数据集或多维数据集的一部分进行的操作。该操作可以用所选项目作为参数启动应用程序，也可以检索关于所选项目的信息。

层次结构 (hierarchy)

一种逻辑树结构，它这样组织维度的成员：每个成员都具有一个父成员和零个或多个子成员。

请参见： 级别, 维度层次结构

插入查询 (Insert query)

从一个表将特定列和行复制到另一个表或同一个表的查询。

插入值查询 (Insert Values query)

创建一个新行并在指定列中插入值的查询（SQL 语句）。

查询优化器 (query optimizer)

负责生成 SQL 语句的有效执行计划的 SQL Server 数据库引擎组件。

差异数据库备份 (differential database backup)

仅记录自上次完全数据库备份之后对数据库的更改的数据库备份。差异备份较小，还原比完整备份更快且对性能影响最小。

查找表 (lookup table)

English Query 应用程序中的数据库或硬编码中的表，包含代码及代码所代表的英文字或短语。例如，一个性别查找表包含以下代码和英文描述：

M, Male

常规多维数据集 (regular cube)

基于表并有自己的聚合的多维数据集。

常规维度 (regular dimension)

既不是父子维度又不是虚拟维度的维度。

常量 (constant)

代表特定数据值的一组符号。常量的格式取决于它所表示的值的数据类型。例如，'abc' 是字符串常量，123 是整型常量，'December 16, 1999' 是 datetime 常量，而 0x02FA 是二进制常量。

超大型维度 (very large dimension)

Analysis Services 中包含多于约五百万个成员、少于约一千万个成员的维度。使用特殊技术来处理超大型维度。

请参见： 巨型维度

超文本标记语言 (HTML) (Hypertext Markup Language (HTML))

标记某个文档以便在万维网上发布的系统。以 HTML 格式准备的文档包括引用图形和格式化标记。可以使用 Web 浏览器（如 Microsoft Internet Explorer）来查看这些文档。

char 数据类型 (char data type)

字符数据类型，最多可保存 8,000 个字符。

CHECK 约束 (CHECK constraints)

定义列中可接受的数据值。可以将 CHECK 约束应用于多个列，也可以将多个 CHECK 约束应用于单个列。当除去某个表时，也将除去 CHECK 约束。

成员 (member)

维度中的一个项目，表示数据的一个或多个出现。成员可以是唯一的或非唯一的。例如，1997 和 1998 表示 time 维度的 year 级别的唯一成员，而 January 表示 month 级别中的非唯一成员，因为如果 time 维度包含不止一年的数据的话，则该维度中可以有不止一个 January。

请参见： 虚拟维度

成员变量 (member variable)

由 Analysis Services 内部使用的值，以标识某个维度成员。MemberKeyColumn 属性指定维度的成员变量。例如，1 到 12 之间的某个数字可以是相应于年中的某个月的成员变量。

请参见： 成员键列, 成员名列

成员键列 (member key column)

维度级别的一个属性，指定该级别成员的标识符。该属性的值可以指定包含标识符或评估为标识符的表达式的列。

请参见： 成员名列, 成员变量

成员名列 (member name column)

维度级别的一个属性，指定该级别成员的名称。该属性的值可以指定包含名称或评估为名称的表达式的列。

请参见： 成员键列, 成员变量

成员属性 (member property)

除维度中包含的信息以外的有关维度级别的成员的信息（例如产品的颜色或销售代表的电话号码）。有关成员属性的更多信息，请参见 OLE DB 文档。

请参见： 虚拟维度

成员委派 (member delegation)

一种建模概念，描述接口成员从一个接口到另一个接口的映射方式。

成员组 (member group)

连续维度成员集合的系统生成的父代。

请参见： 维度

持续性 (persistence)

对象定义的保存，以便当前会话结束后对象定义可用。

冲突解决策略 (resolution strategy)

选择对象（该对象存在多个版本且在调用程序中未指定版本信息）时知识库引擎连续评估的一组准则。

触发器 (trigger)

当修改指定表中的数据时执行的存储过程。常常创建触发器以强制不同表中逻辑相关数据的引用完整性或一致性。

处理 (process)

多维数据集中，重建多维数据集的结构、将数据装载到多维结构中、计算汇总以及保存预先计算的聚合的一系列操作。作为动词指用数据和聚合填充多维数据集。它是多维数据集的三个处理选项之一。

维度中，从数据仓库中的维度表将数据装载到为维度定义的级别中并重建维度结构的操作。它是维度的两个处理选项之一。

数据挖掘模型中，从关系数据源或 OLAP 数据源将培训数据检索到为数据挖掘模型定义的结构中，使用数据挖掘算法对它进行统计分析，并将统计数据保存为数据挖掘内容的操作。作为动词指用数据挖掘内容填充数据挖掘模型。

请参见： 增量更新, 刷新数据

初始快照 (initial snapshot)

包括复制所需的架构和数据、约束、扩展属性、索引、触发器以及系统表的文件。当执行复制时将初始快照传输到订阅服务器。

请参见： 同步

初始媒体 (initial media)

每个媒体家族中的第一个媒体。

传递顺序 (pass order)

多维数据集中计算成员、自定义成员、自定义汇总公式和计算单元的评估顺序（从最高计算传递数到最低计算传递数）和计算顺序（从最低计算传递数到最高计算传递数）。传递顺序用于在计算多维数据集中单元的值时在所有计算传递中确定公式优先权。

请参见： 求解次序

串联 (concatenation)

将两个或多个字符串或表达式组合成为单个字符串或表达式，或将两个或多个二进制字符串或表达式组合成为单个二进制字符串或表达式。

垂直分区 (vertical partitioning)

基于选定的列将单个表分段为多个表。多个表中的每一个具有相同的行数，但列数较少。

请参见： 分区, 垂直筛选

垂直筛选 (vertical filtering)

筛选来自表的列。当用作复制的一部分时，创建的表项目只包含来自发布表的选定列。

请参见： 筛选, 垂直分区

磁带备份 (tape backup)

由 Windows NT 4.0 和 Windows 2000 支持的备份到任何磁带设备的备份操作。如果您打算创建磁带备份文件，则必须首先使用 Windows NT 4.0 和 Windows 2000 安装磁带设备。磁带设备必须物理连接到正在备份的 SQL Server。

词性 (parts of speech)

根据词的形式变化及其语法关系划分词的种类。传统的词性有动词、名词、代词、形容词、副词、介词、连词和感叹词。

CLI (CLI)

参见定义： 调用级接口 (CLI)

COM (COM)

参见定义： 组件对象模型 (COM)

COM 结构化存储文件 (COM-structured storage file)

一种组件对象模型 (COM) 复合文件，由数据转换服务 (DTS) 用来存储保存的 DTS 包的版本历史。

CPU 忙 (CPU busy)

一种 SQL Server 统计，报告中央处理器 (CPU) 在 SQL Server 工作上花费的时间（以毫秒为单位）。

存储过程 (stored procedure)

Transact-SQL 语句的预编译集合，这些语句在一个名称下存储并作为一个单元进行处理。SQL Server 提供存储过程以管理 SQL Server 和显示有关数据库和用户的信息。SQL Server 提供的存储过程称为系统存储过程。

存档文件 (archive file)

通过将 Analysis Services 数据库存档而创建的 .cab 文件。

错误日志 (error log)

记录来自 SQL Server 的系统信息的文本文件。

错误状态号 (error state number)

与 SQL Server 2000 消息相关的编号，帮助 Microsoft 支持工程师查找发出该消息的特定代码位置。这对于诊断错误（可能生成自 SQL Server 2000 代码中的多个位置）很有帮助。

cursor 数据类型 (cursor data type)

用于引用游标的特殊数据类型。

D

大级别 (large level)

一种包含大量成员的维度级别，其成员数等于或超过大级别的阈值。该阈值是在 Analysis Manager 的“属性”对话框中设置的一个变量。

代词 (pronoun)

一种词性，它占据名词的位置并起一个名词的作用，如 she、he 和 we。

代码页 (code page)

对于字符和 Unicode 数据的位模式的定义，此模式代表特定字母、数字或符号（例如 0x20 代表一个空格，而 0x74 代表字符“t”）。一些数据类型每个字符使用一个字节；每个字节可以具有 256 个不同的位模式中的一个模式。

单用户模式 (single-user mode)

只有一个用户可以访问某个资源的状态。SQL Server 实例和单独的数据库都可以置于单用户模式。

datetime 数据类型 (datetime data type)

一种 SQL Server 系统数据类型，存储组合的日期和时间值，范围为从 January 1, 1753 到 December 31, 9999，精确度为秒的百分之三（或 3.33 毫秒）。

DBCS (DBCS)

参见定义： 双字节字符集 (DBCS)

DCL (DCL)

参见定义： 数据控制语言 (DCL)

DDL (DDL)

参见定义： 数据定义语言 (DDL)

decimal 数据类型 (decimal data type)

从 -10^38 -1 到 10^38 -1 的固定精度和小数位的数字数据。

登录安全模式 (login security mode)

确定 SQL Server 2000 实例验证登录请求的方式的安全模式。有两种类型的登录安全性：Windows 身份验证和 SQL Server 身份验证。

登录（帐户） (login (account))

给予用户使用 SQL Server 身份验证连接到 SQL Server 2000 的权限的标识符。使用 Windows NT 身份验证连接到 SQL Server 2000 的用户由其 Windows 2000 登录标识，且不需要单独的 SQL Server 2000 登录。

递归分区 (recursive partitioning)

由数据挖掘算法提供程序使用的递归进程，该进程将数据划分为组，直到找不到有用的组为止。

调用级接口 (CLI) (call-level interface (CLI))

由 ODBC 支持的接口，供应用程序使用。

定位更新 (positioned update)

在游标当前位置的行上执行的更新、插入或删除操作。实际更改在用于在游标中生成当前行的基表的行中进行。Transact-SQL 批处理、存储过程和触发器使用 WHERE CURRENT OF 子句执行定位更新。应用程序使用 API 函数（如 ODBC SQLSetPos 函数）执行定位更新。

订阅 (subscribe)

向发布服务器请求数据。

订阅 (subscription)

定义将发布哪些数据、何时发布和发布到哪个订阅服务器的命令。

订阅服务器 (Subscriber)

接收已发布数据的复本的服务器。

订阅服务器 (subscribing server)

存储链接多维数据集的分析服务器。

请参见： 发布服务器, 链接多维数据集

订阅数据库 (subscription database)

订阅服务器上的一个数据库，接收由发布服务器发布的数据和数据库对象。

DML (DML)

参见定义： 数据操作语言 (DML)

动词 (verb)

表示动作、发生或存在的一种词性。一个动词可由一个或多个单词组成。例如，在以下句子中动词以斜体显示：

Employees sell products（职员销售产品）。

Employees will be working late（职员将加班）。

动词句式 (verb phrasing)

以英文表达关系的一种方式，该方式中一个实体是动作中的主语，此动作使用一个动词表达。例如 customers buy products（客户购买产品）。(Customers 是实体，buy 是动词，而 products 是直接对象。）

动态恢复 (dynamic recovery)

检测和/或尝试更正关系数据库管理系统 (RDBMS) 内软件错误或数据完整性损失的进程。

动态快照 (dynamic snapshot)

带有动态筛选的合并发布的快照，使用大容量复制文件应用该快照以改善性能。

动态筛选 (dynamic filter)

基于系统函数或用户定义的函数限制数据的合并复制筛选（用户定义函数的例子：SUSER_SNAME()）。

动态 SQL 语句 (dynamic SQL statements)

在用于 C 语言的嵌入式 SQL 中，在运行时生成和执行的 SQL 语句。

动态锁定 (dynamic locking)

SQL Server 用来确定任意时刻要使用的最划算的锁的进程。

动态游标 (dynamic cursor)

可以在游标打开时反映对基础数据进行的修改的游标。用户所做的更新、删除和插入在动态游标中加以反映。

DRI (DRI)

参见定义： 声明引用完整性 (DRI)

DSN (DSN)

参见定义： 数据源名称 (DSN)

DTS 包 (DTS package)

连接、数据转换服务 (DTS) 任务、DTS 转换以及工作流约束的有组织集合，由 DTS 对象模型定义，并使用 DTS 工具或通过编程进行组合。

DTS 包模板 (DTS package template)

模型数据转换服务 (DTS) 包。该模板用于帮助创建和配置包的特定类型。

独立 (autonomy)

当执行对数据的修改时一个站点所具有的对其它站点的独立性。

度量 (measurement)

English Query 中“形容词句式”对话框中的一个选项。使用它可以指定实体中所表示的某些度量。例如，表达为 the city is some temperature （城市炎热）的关系可能由 Area 实体和 Temperature 实体表示。

度量值 (measure)

在多维数据集内，基于该多维数据集的事实数据表中的某列的一组值，它们通常是数字。度量值是进行聚合和分析的主要值。

请参见： 维度

短语 (phrase)

缺少主语或谓词、或二者都缺少的语法相关的词的序列。

单元 (cell)

多维数据集中属性的集合（包括值），由从每个维度选择一个成员时的交集指定。

单元集 (cellset)

ADO MD 中的一个对象，该对象包含通过多维查询从多维数据集或其它单元集中选择的单元的集合。

队列 (queue)

SQL Server 事件探查器队列提供要捕获的服务器事件的临时存放位置。

对象 (object)

数据库中的下列数据库组件之一：表、索引、触发器、视图、键、约束、默认、规则、用户定义的数据类型或存储过程。

对象变量 (object variable)

包含对某个对象的引用的变量。

对象标识符 (object identifier)

给予对象的唯一名称。

在 Meta Data Services 中，由全局唯一标识符 (GUID) 和内部标识符构造的唯一标识符。所有对象都必须具有对象标识符。

请参见： 内部标识符

对象权限 (object permission)

控制在对象上执行操作的能力的特性。例如，表或视图权限控制哪些用户可以对表或视图执行 SELECT、INSERT、UPDATE 和 DELETE 语句。

对象所有者 (object owner)

控制对象权限的安全帐户，通常是对象的创建者。对象所有者 也称作数据库对象所有者。

对象相关性 (object dependencies)

对其它对象的引用，第一个对象的行为可以由它所引用的对象中的更改影响。例如，如果存储过程引用某个表，则表的更改可以影响存储过程的行为。

多重继承 (multiple inheritance)

一种建模术语，描述某个接口接收不止一个父接口的特征的方式。

多对多关系 (many-to-many relationship)

两个表之间的一种关系，该关系中每个表的行在相关表中具有多个匹配行。多对多关系通过使用第三个表（称作连接表）并向该表添加来自另两个表的主键列加以维护。

多对一关系 (many-to-one relationship)

两个表中的一种关系，该关系中一个表中的一个行可以与另一个表中的许多行相关。

多实例 (multiple instances)

在同一台计算机上运行的 SQL Server 的多个复本。可以有一个默认实例，该实例可以是任意版本的 SQL Server。可以有 SQL Server 2000 的多个命名实例。

请参见： 默认实例, 命名实例

多维表达式 (MDX) (Multidimensional Expressions (MDX))

用于定义多维对象及查询和操作多维数据的语法。

多维结构 (multidimensional structure)

一种数据库范例，它不将数据处理为关系表和列，而处理为包含维度和单元中的汇总数据的信息多维数据集。每个单元通过一组坐标来寻址，这些坐标指定该结构的维度中的某个位置。例如，坐标 {SALES, 1997, WASHINGTON, SOFTWARE} 处的单元将包含 Washington 1997 年的软件销售的汇总。

请参见： 多维数据集

多维 OLAP (MOLAP) (multidimensional OLAP (MOLAP))

一种存储模式，使用专用的多维结构存储分区的事实和聚合或某个维度。一个分区的数据完全包含在多维结构内。

请参见： 关系 OLAP (ROLAP), 混合 OLAP (HOLAP)

多维数据集 (cube)

数据的集合，这些数据组织并汇总到一个由一组维度和度量值所定义的多维结构中。

请参见： 多维结构

多维数据集角色 (cube role)

对一个多维数据集具有相同访问权限的用户和组的集合。当将数据库角色指派给多维数据集时即创建多维数据集角色，且此角色只应用于该多维数据集。

请参见： 自定义规则, 数据库角色

多维数据集文件 (cube file)

参见定义： 本地多维数据集

多线程服务器应用程序 (multithreaded server application)

在单个进程内创建多个线程以同时服务多个用户请求的应用程序。

多用户 (multiuser)

支持许多用户同时操作且又为每个用户提供计算机系统的全部功能的计算机功能。

E

English Query (English Query)

指一种 Microsoft 应用程序开发产品，它使用户可以用英文而不是 SQL 之类的计算机语言提出问题。例如，您可以询问“How many customers bought products last year?”（去年有多少客户购买了产品？），而不用准备等价的 SQL 语句。

English Query 应用程序 (English Query application)

基于关系数据库的一种应用程序，使最终用户可以以英文而不是以 SQL 之类的计算机语言提出问题。

二进制大对象 (binary large object)

具有异常大的尺寸的二进制数据块（如以数字数据存储的图片或乐曲），或足够存放这样的值的任意变量或表列。在 Transact-SQL 中，BLOB 存储在 image 列中。有时术语 BLOB 还适用于较大的字符数据值，如存储在 text 或 ntext 列中的值。

F

发布 (publication)

发布是一个数据库中的一个或多个项目的集合。这种多个项目的分组使得指定想要同时复制的逻辑相关的一组数据和数据库对象变得更容易。

发布保持期 (publication retention period)

预设的时间长度，控制订阅在同步过程中接收更新并在数据库中保持激活状态的时间长度。

发布表 (publishing table)

发布服务器上的表，其内数据已为复制进行标记，是发布的一部分。

发布服务器 (Publisher)

使数据可复制到其它服务器、检测已更改数据和维护有关站点上所有发布的信息的服务器。

发布服务器 (publishing server)

一种分析服务器，存储一个或多个链接的多维数据集的源多维数据集。

请参见： 链接多维数据集, 订阅服务器

发布数据库 (publication database)

发布服务器上的一个数据库，从该数据库标记作为传播到订阅服务器的发布的一部分进行复制的数据和数据库对象。

发生器 (producer)

收集特定事件分类中的事件并将数据发送到 SQL Server 事件探查器队列中。

返回参数 (return parameters)

存储过程输出参数的旧式定义，用在开放式数据服务和 DB-Library API 中。

自反关系 (reflexive relationship)

从表中的一个列或列的组合到同一个表中的其它列的关系。自反关系用于比较同一个表内的行。在查询中，这称作自联接。

范围查询 (range query)

将值的范围指定为搜索条件的一部分的查询，如从 10 到 100 的所有行。

方法 (method)

如在 SQL-DMO、OLE DB 和 ActiveX 数据对象 (ADO) 中那样通过使用 COM 对象执行某操作的函数。

请参见： 组件对象模型 (COM)

废除 (revoke)

删除以前在当前数据库内的用户帐户、角色或组上授予或拒绝的权限。

非聚集索引 (nonclustered index)

一种索引，该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

非叶 (nonleaf)

树结构中，具有一个或多个从属元素的元素。例如 Analysis Services 中具有一个或多个后代的维度成员。SQL Server 索引中，指向其它中间节点或叶节点的中间索引节点。

请参见： 叶

非叶成员 (nonleaf member)

具有一个或多个后代的成员。

分布式查询 (distributed query)

访问多个数据源的数据的单个查询。

分段 (segmentation)

一种数据挖掘技术，分析数据以发现共享类似的特性集的互斥记录集合。分段算法可以使用自学习技术（如聚集）或特定预测字段的监督学习技术。

请参见： 聚集

分发 (distribute)

从发布服务器将事务或数据的快照移动到订阅服务器，在订阅服务器上将它们应用于订阅数据库中的目的表。

分发保持期 (distribution retention period)

分发保持期决定为复制代理程序存储的信息量以及订阅将在分发数据库中保持活动的时间长度。当超出分发保持期时，分发清除代理程序将运行。

分发服务器 (Distributor)

作为分发数据库宿主并存储历史数据和/或事务以及元数据的服务器。

请参见： 本地分发服务器, 远程分发服务器

分发数据库 (distribution database)

分发服务器上的数据库，存储用于复制的数据，包括事务、快照作业、同步状态和复制历史信息。

分隔符 (delimiter)

Transact-SQL 中指出对象名称的开始和结尾的字符，使用双引号 ("") 或方括号 ([])。

分类 (classification)

参见定义： 预测

分区 (partition)

Analysis Services 中一种用于多维数据集的数据和聚合的存储容器。每个多维数据集包含一个或多个分区。对于带有多个分区的多维数据集，每个分区可以单独存储在不同的物理位置。每个分区可以基于不同的数据源。分区对于用户是不可见的；多维数据集看起来为单个对象。

分区 (partitioning)

以多个较小的表替换一个表的进程。每个较小的表都具有与原始表相同的格式，但只具有其数据的一个子集。为每个已分区的表分配行时均基于数据的某些特征（如特定键范围）。定义行分配到哪个表的规则必须明确。例如，将一个表分为两个表。将主键值小于指定值的所有行分配到一个表，而将主键值等于或大于该值的所有行分配到另一个表。分区可以提高应用程序处理速度，并减少多站点更新复制中发生冲突的可能性。可以通过创建视图来提高已分区表的可用性。通过联合所有已分区表上的选择操作而创建的视图，将数据表现为就象全部驻留于单个表中一样。

请参见： 筛选, 垂直分区, 水平分区

分析服务器 (Analysis server)

Analysis Services 的服务器组件，是专为创建和维护多维数据结构并提供多维数据以响应客户端查询而设计的。

FIPS (FIPS)

参见定义： 联邦信息处理标准 (FIPS)

FK (FK)

参见定义： 外键 (FK)

float 数据类型 (float data type)

存放从 -1.79E + 308 到 1.79E + 308 的浮点数字数据的数据类型。float 、double precision 和 float(n) 是 SQL Server 的 float 数据类型。

副词 (adverb)

修饰动词、形容词或其它副词的词性。在 English Query 中，能够正确解释“very”和“recent”这样的副词，但不能解释“rapidly”或“graciously”这样的副词。

父代 (parent)

层次结构中上一个较高级别中与当前成员直接相关的成员。父代的值通常是其所有子代的值的合并。例如，在包含级别 Quarter、Month 和 Day 的 Time 维度中，Qtr1 是 January 的父代。

请参见： Ancestor, 子代, 后代, 兄弟

复述 (restatement)

由 English Query 引擎返回的英文查询，它是对最终用户输入的查询的检查。复述使最终用户可以检查 English Query 引擎是否正确解释了其问题。如果复述准确，则将生成正确的 SQL 语句，因而返回的答案将有效。

服务器名称 (server name)

唯一标识网络上的某台服务器计算机的名称。SQL Server 应用程序可以通过仅指定服务器名称而连接到 SQL Server 的默认实例。SQL Server 应用程序在连接到服务器上的某个命名实例时必须既指定服务器名称又指定实例名称。

服务器游标 (server cursor)

在服务器上实现的游标。游标本身在服务器上生成，且只将应用程序提取的行发送到客户端。

请参见： API 服务器游标

复制 (replication)

从一个数据库将数据和数据库对象复制和分发到另一个数据库，然后使两个数据库之间的信息同步以获得一致性的进程。

复制冲突查看器 (Replication Conflict Viewer)

使用户可以查看和解决合并复制进程中发生的冲突以及检查解决冲突的方式。

复制的数据 (replicated data)

订阅服务器上已从发布服务器接收的数据。

复制监视器 (Replication Monitor)

使用户可以查看和管理负责各种复制任务的复制代理程序以及解决分发服务器上潜在的问题。

复制拓扑 (replication topology)

定义服务器和数据的复本之间的关系，并阐明决定数据在服务器之间的流动方式的逻辑。

G

干扰词 (noise word)

不参与全文查询搜索的词。例如 a、and、the（一个、和、这）等等。

感知游标 (sensitive cursor)

打开时可以反映其他用户对基础数据进行的修改的游标。其他用户进行的更新、删除和插入在感知游标中加以反映。感知游标通常通过省略 DECLARE CURSOR 语句中的 INSENSITIVE 关键字来用在 Transact-SQL 批处理、存储过程和触发器中。

隔离级别 (isolation level)

控制隔离数据以供一个进程使用并防止其它进程干扰的程度的事务属性。设置隔离级别定义了 SQL Server 会话中所有 SELECT 语句的默认锁定行为。

跟踪文件 (trace file)

由 SQL 事件探查器用来记录受监视事件的文件。

更改脚本 (change script)

包含在编辑会话内对数据库进行所有更改的 SQL 语句（按照更改进行的顺序）的文本文件。每个更改脚本保存在单独的文本文件中，带有扩展名 .sql。更改脚本以后可以使用 osql 之类的工具重新将其应用到数据库。

更新 (update)

修改一个或一些现有行中的一个或多个数据值的操作，通常通过使用 UPDATE 语句来进行。有时，术语更新 指任何数据修改，包括插入、更新和删除操作。

更新锁 (update lock)

放置在可更新的资源（如行、页、表）上的锁。更新锁用于防止常见形式的死锁，这类死锁在多个会话锁定资源并且稍后可能更新资源时发生。

更新统计 (update statistics)

重新计算指定索引中的键值分发信息的进程。这些统计由查询优化器用来确定执行查询的最有效方式。

更新查询 (Update query)

更改表中的一个行或多个行的列中的值的查询。

工程 (project)

English Query 中包含关系数据库的结构和语义对象（如实体、关系和字典条目）的定义的文件。其扩展名为 *.eqp。它用于测试 English Query 将英文问题转换为 SQL 语句的方式。以后，可以将它编译到带有 *.eqd 扩展名的可部署的应用程序文件中。

工具 (tool)

带有图形用户界面的 SQL Server 应用程序，用于执行公用任务。

共享锁 (shared lock)

由非更新（读取）操作创建的锁。其他用户可以并发读取数据，但任何事务都不能获取数据上的排它锁，直到已释放所有共享锁。

共享维度 (shared dimension)

在数据库内创建的维度，可以由该数据库内的任意多维数据集使用。

请参见： 专用维度

固定服务器角色 (fixed server role)

存在于服务器级别的预定义角色。该角色的作用域限于其所定义于的 SQL Server 实例。

固定数据库角色 (fixed database role)

每个数据库中都存在的预定义的角色。该角色的作用域限于其所定义于的数据库。

关键字 (keyword)

SQL Server 中的保留字，执行某种特定功能，如定义、操作和访问数据库对象。

关系 (relationship)

表之间的链接，使一个表中的外键引用另一个表中的主键。如果强制表之间的引用完整性，则关系线在数据库关系图中以一根实线表示；如果 INSERT 和 UPDATE 事务不强制引用完整性，则以虚线表示。关系线的终结点显示一个主键符号以表示主键到外键关系，或者显示一个无穷符号以表示一对多关系的外键端。

在 English Query 中，描述实体彼此之间的关系的实体之间的关联。关系可以以英文简明描述为有关实体的简单陈述，例如 customers purchase products （客户购买产品）。可能需要不止一个联接来表示单个关系。

关系 (relationship)

在 Meta Data Services 中，关系是一对对象之间的关联，这里一个对象是起点，另一个对象是目的。该关联对后续的每一对对象重复，以便一个关系的目的成为下一个关系的起点。这样，信息模型中的所有对象通过一个关系链相互关联，该关系链从一个对象延伸到下一个对象，贯穿此信息模型。

关系对象 (relationship object)

表示担任彼此相关的角色的一对对象的对象。

请参见： 顺序关系

关系类型 (relationship type)

两个接口之间的关系的定义，如在信息模型中所定义的一样。关系类型类似于一个类，因为它描述特定实例必须符合的特征。

关系 OLAP (ROLAP) (relational OLAP (ROLAP))

使用关系数据库中的表存储多维结构的存储模式。

请参见： 多维 OLAP (MOLAP), 混合 OLAP (HOLAP)

关系数据库 (relational database)

在表中组织的信息的集合。每个表建立机构感兴趣的一个对象类的模型（例如 Customers 、Parts 、Suppliers ）。表中的每个列建立对象一个特性的模型（例如 LastName 、Price 、Color ）。表中的每一行表示表建立的对象类中的一个实体（例如客户名 John Smith 或部件号 1346）。查询可以使用一个表中的数据来查找其它表中的相关数据。

关系数据库管理系统 (RDBMS) (relational database management system (RDBMS))

将数据组织为相关的行和列的系统。SQL Server 是一个关系数据库管理系统 (RDBMS)。

高速缓存老化数据清除 (cache aging)

高速缓存确定高速缓存行何时过时及必须刷新的机制。

规范化规则 (normalization rules)

一组数据库设计规则，它使数据冗余减到最小，并得到这样一个数据库：数据库引擎和应用程序软件可以在此数据库中方便地强制完整性。

规则 (rule)

绑定到列或用户定义的数据类型并指定列可接受哪些数据值的数据库对象。CHECK 约束提供相同的功能，因为其在 SQL-92 标准中，所以首选使用。

规则 (rule)

在 Analysis Services 中，规则为安全读取和读/写角色权限指定无限制、完全受限或自定义之类的限制。

请参见： 角色

滚动 (scroll)

以除只进以外的方向移动游标的功能。用户可以向上和向下移动游标。

过程缓存 (procedure cache)

SQL Server 内存缓冲池的一部分，用于存储 Transact-SQL 批处理、存储过程和触发器的执行计划。执行计划记录 SQL Server 为生成由包含在批处理、存储过程或触发器中的 Transact-SQL 语句指定的结果而必须采取的步骤。

国际标准化组织 (ISO) (International Organization for Standardization (ISO))

负责发展国际数据通讯标准的两个国际标准团体之一。国际标准化组织 (ISO) 与国际电子技术委员会 (IEC) 紧密合作来定义计算的标准。他们共同发布了 SQL 的 ISO/IEC SQL-92 标准。

国际电子技术委员会 (IEC) (International Electrotechnical Commission (IEC))

负责发展国际数据通讯标准的两个国际标准团体之一。国际电子技术委员会 (IEC) 与国际标准化组织 (ISO) 紧密合作来定义计算的标准。他们共同发布了 SQL 的 ISO/IEC SQL-92 标准。

过适 (overfitting)

某些数据挖掘算法的特性，通过将数据中的随机变化视为重要模式而为其赋以重要性。

H

函数 (function)

作为单个逻辑单元运行的代码块。函数通过名称来调用，接受可选输入参数，并返回一个状态和可选的输出参数。许多编程语言都支持函数，包括 C 语言、Visual Basic 和 Transact-SQL。Transact-SQL 提供内置函数（不能修改），并支持用户定义的函数（可以由用户创建和修改）。

行 (row)

SQL 表中构成表中的水平行的元素集合。表中的每一行代表由该表建模的对象的一个出现，并存储该对象所有特性的值。例如，在 Northwind 示例数据库中，Employees 表建立 Northwind Traders 公司职员的模型。表中的第一行记录职员 ID 为 1 的职员的全部信息（例如姓名和头衔）。

请参见： 列

行集 (rowset)

用于包含结果集的 OLE DB 对象。它还展示基于应用程序设置的行集属性的游标行为。

行聚合函数 (row aggregate function)

生成汇总值的一种函数，这些汇总值在查询结果中作为附加行出现（与作为新列出现的聚合函数结果不同）。这使您得以在一个结果集中看到详细汇总的行。行集合函数（SUM、AVG、MIN、MAX 和 COUNT）在 SELECT 语句中与 COMPUTE 子句一起使用。

行筛选 (row filter)

指定要发布的和当需要将特定行传播到订阅服务器时表中行的一个子集。

行锁 (row lock)

表中单个行上的锁。

合并 (merge)

将两个分区组合为单个分区的操作。

合并复制 (merge replication)

复制的一种，允许站点对已复制数据进行匿名更改，并在晚些时候合并更改和根据需要解决冲突。

请参见： 快照复制, 事务复制

核心 (kernel)

SQL Server 2000 中存储引擎的一个子集，某些错误信息中会引用它。Windows 2000 中操作系统的核心，执行一些基本操作。

HOLAP (HOLAP)

参见定义： 混合 OLAP (HOLAP)

后代 (descendant)

维度层次结构中的一个成员，它与相同维度内的更高级别的成员相关。例如，在包含 Year、Quarter、Month 和 Day 级别的 Time 维度中，January 是 1997 的后代。

请参见： Ancestor, 子代, 父代, 兄弟

候选键 (candidate key)

对于表中的每一行具有唯一值的一个列或一组列。每个候选键值唯一标识表中的一个行。表可以具有多个候选键。表中的一个候选键由数据库设计器指定为表的主键，其它候选键称作备用键。

HTML (HTML)

参见定义： 超文本标记语言 (HTML)

幻像 (phantom)

通过一个任务，在以前由另一个尚未提交其事务的任务读取的行的范围中插入新行或删除现有行。带有未提交事务的任务由于该范围中行数的更改而无法重复其原始读取。如果某个连接设置其事务隔离级别为可串行，则 SQL Server 使用键范围锁定以防止幻像。

恢复间歇 (recovery interval)

数据库引擎恢复一个数据库所需的最大时间量。数据库引擎确保数据库日志的活动部分足够小，以在为恢复间歇指定的时间量内恢复数据库。

恢复日志文件 (redo log file)

参见定义： 备份文件

回滚 (roll back)

删除由一个或多个部分完成的事务执行的更新。为在应用程序、数据库或系统错误后还原数据库的完整性，需要使用回滚。

请参见： 提交

回写 (write back)

更新多维数据集单元值、成员或成员属性值。

请参见： 写启用

会话 (session)

English Query 中由 English Query 引擎执行的操作序列。会话在用户登录时开始，在用户注销时结束。会话期间的所有操作构成一个事务作用域，并受由登录用户名和密码决定的权限的支配。

混合模式 (Mixed Mode)

将 Windows 身份验证和 SQL Server 身份验证相组合。混合模式使用户既可以通过 Windows NT 4.0 或 Windows 2000 用户帐户，又可以通过 SQL Server 登录连接到 SQL Server 的实例。

混合 OLAP (HOLAP) (hybrid OLAP (HOLAP))

使用多维数据结构和关系数据库表的组合来存储多维数据的存储模式。Analysis Services 以多维结构存储 HOLAP 分区的聚合，而以关系数据库存储事实。

请参见： 多维 OLAP (MOLAP), 关系 OLAP (ROLAP)

活动语句 (active statement)

一种 SQL 语句，该语句已执行，但其结果集尚未取消或完全处理。

活锁 (livelock)

由于一系列交叠共享锁不断干扰而被重复拒绝的对排它锁的请求。SQL Server 检测四次拒绝后的状况，并拒绝更多的共享锁。当读事务独占某个表或页（强制写事务无限等待）时也将发生活锁。

请参见： 死锁

I

IEC (IEC)

参见定义： 国际电子技术委员会 (IEC)

image 数据类型 (image data type)

一种 SQL Server 可变长度的二进制数据类型，其最大长度为 2^31 - 1 (2,147,483,647) 个字节。

int (integer) 数据类型 (int (integer) data type)

一种 SQL Server 系统数据类型，存放从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整数。

IPC (IPC)

参见定义： 进程间通讯 (IPC)

ISO (ISO)

参见定义： 国际标准化组织 (ISO)

ISQL (ISQL)

参见定义： 交互式结构化查询语言 (ISQL)

J

结果 (result)

English Query 中向 English Query 应用程序提出的问题的英文答案。

级 (rank)

对于全文和 SQL Server 联机丛书搜索，表示行或主题与指定的搜索条件接近的程度的值。对于 Meta Data Services 和 Analysis Services，表示元素（如维度成员、层次结构级别或集合中的元组）的相对位置的值。

基本数据类型 (base data type)

任意系统提供的数据类型，例如 char 、varchar 、binary 和 varbinary 。用户定义的数据类型由基本数据类型导出。

请参见： 数据类型, 用户定义的数据类型

基表 (base table)

数据库中永久存储的表。基表由视图、游标、SQL 语句和存储过程引用。

请参见： 基础表

级别 (level)

维度层次结构中成员集合的名称，该集合的所有成员距层次结构的根的距离相同。例如，Time 层次结构可能包含级别 Year、Month 和 Day。

请参见： 维度, 层次结构

级别层次结构 (level hierarchy)

参见定义： 维度层次结构

集成安全性 (integrated security)

参见定义： Windows 身份验证

基础表 (underlying table)

由视图、游标或存储过程引用的表。

请参见： 基表

级联更新 (cascading update)

更新主键值的操作，该值由其它表的现有行中的外键列引用。在级联更新中，更新所有外键值以与新的主键值相匹配。

级联删除 (cascading delete)

删除包含主键值的行的操作，该值由其它表的现有行中的外键列引用。在级联删除中，还删除其外键值引用删除的主键值的所有行。

记录 (record)

视作一个单元的信息的一组相关字段（列）。在 SQL 数据库中记录更经常被称作行。

记录集 (recordset)

用于包含结果集的 ActiveX 数据库对象 (ADO) 对象。它还展示基于应用程序设置的记录集属性的游标行为。ADO 记录集映射到 OLE DB 行集。

机器 DSN (machine DSN)

在系统注册表中存储数据库的连接信息。连接信息由 ODBC 驱动程序管理器用来建立连接的参数和相应的值组成。

即时更新 (immediate updating)

快照复制和事务复制可用的一个选项，允许在订阅服务器上对已复制数据进行数据修改。然后使用两相提交协议 (2PC) 将数据修改立即传播到发布服务器。

即时更新订阅 (immediate updating subscriptions)

对快照或事务发布的一种订阅，用户能够在订阅服务器上修改数据。然后使用两相提交协议 (2PC) 将数据修改立即传播到发布服务器。

即时更新订阅服务器 (immediate updating Subscribers)

参见定义： 即时更新订阅

计算公式 (calculation formula)

一种多维表达式 (MDX) 的表达式，用于为计算子多维数据集中的单元提供值（依照应用的计算条件）。

请参见： 求解次序

计算列 (calculated column)

表中显示表达式结果而不是存储的数据的列。例如 CalculatedCostColumn = Price * Quantity 。

计算列 (computed column)

表中的虚拟列，其值在运行时计算得到。该列中的值并未存储在表中，而是基于定义该列的表达式计算得到。计算列的定义的一个例子如下：Cost 为 Price * Quantity 。

计算成员 (calculated member)

维度的一个成员，其值是使用表达式在运行时计算的。计算成员的值可能从其它成员的值导出。计算成员是任何非输入成员的成员。例如，计算成员 Profit 可以通过从成员 Sales 的值中减去成员 Cost 的值来确定。

请参见： 输入成员

计算字段 (calculated field)

查询中定义的一种字段，它显示表达式的结果而不是存储的数据。

计算子多维数据集 (calculation subcube)

多维数据集单元的集合，用于创建计算单元定义。单元的集合由多维表达式 (MDX) 集合表达式的组合定义。

请参见： 求解次序

计算传递 (calculation pass)

多维数据集中的一个计算阶段，在该阶段中对适用的计算进行评估。完成全部计算可能需要多个传递。

请参见： 求解次序

计算条件 (calculation condition)

一种多维表达式 (MDX) 的逻辑表达式，用于确定计算公式是否要应用于计算子多维数据集中的某个单元。

请参见： 求解次序

架构 (schema)

SQL-92 标准中数据库对象的一个集合，这些对象由单个用户所有并构成单个命名空间。命名空间是不能具有重复名称的一组对象。例如，仅当两个表位于彼此独立的架构中时才可以具有相同的名称，同一个架构中不可以有名称相同的表。在 Transact-SQL 中，与架构相关联的许多功能均通过数据库用户 ID 实现。在数据库工具中，架构也指描述架构或数据库中的对象的目录信息。在 Analysis Services 中，架构是对多维数据集和维度之类的多维对象的一种描述。

架构行集 (schema rowset)

一种特殊的 OLE DB 或 Analysis Services 行集，报告数据库或多维数据集中对象的目录信息。例如，OLE DB 架构行集 DBSCHEMA_COLUMNS 描述表中的列，而 Analysis Services MDSCHEMA_MEASURES 架构行集描述多维数据集中的度量值。

加密 (encryption)

通过将数据更改为不可读形式而使敏感信息得以保密的方法。

加密触发器 (encrypted trigger)

使用可选加密参数创建的触发器，该参数对定义文本加密且不能解密。加密使得信息不可破译，以保护其不会遭到未授权的查看或使用。

加载项 (add-in)

一种自定义扩展，可以使用支持组件对象模型 (COM) 的任何语言（通常为 Visual Basic）编写，它与 Analysis Manager 交互，并提供特定功能。加载项使用 Analysis 加载项管理器进行注册。它们由 Analysis 加载项管理器调用，以响应用户界面中的用户操作。

键 (key)

唯一标识行 (PRIMARY KEY)、定义两表之间的关系 (FOREIGN KEY) 或用于生成索引的一个列或一组列。

请参见： 键列

检查点 (checkpoint)

一种事件，在该事件中数据库引擎将脏缓冲区页写入磁盘。脏页是已修改但所做修改尚未写入磁盘的页。每个检查点将在上个检查点是脏的且仍未写入磁盘的所有页写入磁盘。检查点基于由数据修改生成的日志记录的数目定期发生，或当用户请求或系统关机时发生。

键范围锁 (key range lock)

用于锁定表中记录之间的范围的锁，以防止记录集中的幻像插入或删除。确保可串行事务。

键集驱动游标 (keyset-driven cursor)

一种游标，打开时显示由其他用户更新其成员行的效果，但不显示插入或删除的效果。

间接宾语 (indirect object)

指称动词的动作所间接影响的一个（或一些）实体的一个（或一些）词。例如“Emily sliced me some cheese”（Emily 为我切了一些干酪），Me 是间接宾语。

键列 (key column)

由主键、外键或索引键引用的列。

请参见： 键

脚本 (script)

用于执行某项操作的 Transact-SQL 语句的集合。Transact-SQL 脚本存储为文件，通常带有 .sql 扩展名。

交叉表查询 (crosstab query)

显示来自某个字段或表的汇总值的数据，然后按照两组事实将它们分组：一个沿数据表的左侧向下，一个沿数据表的顶端向右。

交互式结构化查询语言 (ISQL) (interactive structured query language (ISQL))

SQL Server 提供的交互式命令提示实用工具，使用户可以从服务器或工作站执行 Transact-SQL 语句或批处理并查看返回的结果。

介词 (preposition)

一种词性，它将一个名词或名词替代物与句子中的另一个词链接并联系起来。例如，在句子 """"the dancers leaped across the stage""""（舞者跃过舞台）中，across 便是介词。常用作介词的词有 about 、after 、among 、before 、between 、but 、during 、for 、from 、in 、into 、near 、of 、on 、over 、to 、until 、with 等等。

介词句式 (preposition phrasing)

以英文表达关系的一种方式，该方式中一个实体作为主语，一个实体作为对象，二者由一个介词链接起来。例如，在句子“stories are about subjects”（故事是关于主题的）中，stories 是主语实体，about 是介词，而 subjects 是对象。

结构化查询语言 (SQL) (Structured Query Language (SQL))

用于插入、检索、修改和删除关系数据库中的数据的一种语言。SQL 还包含用于定义和管理数据库中对象的语句。SQL 是大多数关系数据库所支持的语言，且是由国际标准化组织 (ISO) 和美国国家标准学会 (ANSI) 发布的标准的主题。SQL Server 2000 使用称为 Transact-SQL 的 SQL 语言版本。

结构化存储文件 (structured storage file)

参见定义： COM 结构化存储文件

结果集 (result set)

从 SELECT 语句返回的行的集合。结果集中行的格式由 SELECT 语句的列的列表定义。

接口 (interface)

属性、方法和集合的定义集，构成行为和数据的一个逻辑分组。类由其所实现的接口定义。一个接口可能由许多不同的类实现。

接口含义 (interface implication)

如果一个接口暗示另一个接口，则实现第一个接口的任何类也必须实现第二个接口。接口含义用在信息模型中以获取多重继承的某些效果。

进程间通讯 (IPC) (interprocess communication (IPC))

一种机制，操作系统进程和线程通过它交换数据和消息。IPC 包括本地机制（如 Windows 共享内存）或网络机制（如 Windows 套接字）。

近似搜索 (proximity search)

搜索指定的词彼此接近的情况的全文查询。

静态游标 (static cursor)

以游标打开时刻的当时状态显示结果集的游标。静态游标在游标打开时不反映对基础数据进行的更新、删除或插入。有时称它们为快照游标。

警报 (alert)

用户定义的对 SQL Server 事件的响应。警报既可以执行定义的任务，又可以向指定的操作员发送电子邮件和/或呼叫消息。

精度 (precision)

指定小数点左边和右边可以存储的十进制数字的最大总数。

静态 SQL 语句 (static SQL statements)

在用于 C 语言的嵌入式 SQL 中，在编译应用程序时生成的 SQL 语句。当编译应用程序时将它创建为存储过程，而当应用程序运行时执行该存储过程。

镜像 (mirroring)

通过在单独的磁盘上维护数据的完全冗余复本来保护因磁盘错误而引起的数据丢失的进程。镜像可以在下列几个级别上实现：在 SQL Server 2000 中、在操作系统中以及在磁盘控制器硬件中。

局部变量 (local variable)

用户定义的变量，具有已赋的值。局部变量使用 DECLARE 语句定义，使用 SELECT 或 SET 语句赋以初始值，并在声明该变量的语句批或过程内使用。

聚合 (aggregation)

包含预先计算好的多维数据集数据的表或结构。

聚合 (aggregation)

构成整体的各个对象的集合。聚合可以是对象之间整体与部分关系的一个具体的或概念上的集合。

聚合包装 (aggregation wrapper)

将一个 COM 对象封装在另一个 COM 对象中的包装。

聚合查询 (aggregate query)

一种查询（SQL 语句），它通过包含一个聚合函数（如 Sum 或 Avg ）来汇总来自多个行的信息。

聚合函数 (aggregate function)

一种函数，它对一组行中的某个列执行计算，并返回单个值。

聚合前缀 (aggregation prefix)

一个字符串，它与系统定义的 ID 相组合，以便为分区的聚合表创建唯一的名称。

聚集 (clustering)

一种数据挖掘技术，它对数据进行分析，根据记录在多维特性空间中的位置对记录进行分组。聚集是一种自学习技术。

请参见： 分段

聚集索引 (clustered index)

一种索引，该索引中键值的逻辑顺序决定了表中相应行的物理顺序。

拒绝 (deny)

从某用户帐户删除权限并防止该帐户通过权限内的组或角色的成员资格获取权限。

句式 (phrasing)

以英文表达某种关系的一种方式。句式的类型包括名称句式、形容词句式、子集句式、介词句式、动词句式和特征句式。例如，department names are names of departments （部门名称是部门的名称）是名称句式的一个例子。

巨型维度 (huge dimension)

Analysis Services 中包含的成员数多于约一千万的维度。巨型维度必须使用关系 OLAP (ROLAP) 存储模式。

请参见： 超大型维度

决策树 (decision tree)

由某些数据挖掘方法生成的数据的树状模型。决策树可用于预测。

请参见： 预测

角色 (role)

一种 SQL Server 安全帐户，它是管理权限时可以视为单个单元的其它安全帐户的集合。角色可以包含 SQL Server 登录、其它角色以及 Windows 登录或组。

角色 (role)

在 Analysis Services 中，角色使用 Windows 安全帐户来限制用户访问数据库、多维数据集、维度和数据挖掘模型时的访问的作用域和权限。

请参见： 规则

决策支持 (decision support)

为支持发现业务趋势所需的复杂分析而设计的系统。从这些系统检索的信息使管理者得以根据对业务趋势的及时准确的分析作出经营决策。

均衡层次结构 (balanced hierarchy)

一种维度层次结构，其中所有的叶节点与根节点的距离相同。

K

开放式数据服务 (ODS) (Open Data Services (ODS))

SQL Server 数据库引擎层，该引擎层将客户端请求传输到数据库引擎中的适当函数。开放式数据服务表现扩展的存储过程 API，该 API 用于编写可以从 Transact-SQL 语句调用的 DLL 函数。

开放式数据库连接 (ODBC) (Open Database Connectivity (ODBC))

一种数据访问应用程序接口 (API)，支持对可使用 ODBC 驱动程序的任何数据源的访问。ODBC 与美国国家标准学会 (ANSI) 和国际标准化组织 (ISO) 的用于数据库调用级接口 (CLI) 的标准一致。

开放信息模型 (OIM) (Open Information Model (OIM))

由元数据合并 (MDC) 发布并由软件供应商广泛支持的一种信息模型。OIM 是对由主题区组织的元数据结构的正式描述。

可串行 (serializable)

最高事务隔离级别。可串行事务锁定其读取或修改的所有行，以确保事务在与其它任务完全隔离的情况下完成。这保证一系列可串行事务在按照相同的序列运行时将始终生成相同的结果。

可更改维度 (changing dimension)

具有可变的成员结构的维度。可更改维度旨在支持对结构和数据的频繁更改。

客户端应用程序 (client application)

一种应用程序，它从分析服务器检索数据，并在本地对来自关系数据库或多维数据库的数据进行分析和展示。客户端应用程序通过 PivotTable 服务组件连接到分析服务器。

客户端游标 (client cursor)

在客户端实现的游标。整个结果集首先传输到客户端，接着客户端应用程序接口 (API) 软件从这个已被缓存的结果集实现游标功能。

可再次使用的书签 (reusable bookmark)

可以从给定表的某个行集使用并用在同一个表的不同行集上以定位到相应行的书签。

可支持 Internet 的 (Internet-enabled)

启用到 Internet 订阅服务器的复制的发布设置。

可转换订阅 (transformable subscription)

允许复制期间的数据转换服务 (DTS) 的数据移动、转换映射和筛选功能的订阅。

空闲时间 (idle time)

一种 SQL Server 2000 代理程序条件，定义构成空闲状态的 SQL Server 2000 数据库引擎对 CPU 的占用程度。然后可以创建 SQL Server 2000 代理程序作业，以便每当数据库引擎 CPU 的占用程度降至空闲时间定义中定义的等级以下时，运行这些作业。这使得 SQL Server 代理作业对其它访问数据库的任务可能造成的影响减到最小。

控制流语言 (control-of-flow language)

控制触发器、存储过程和批处理中的 SQL 语句和语句块的执行流的 Transact-SQL 关键字。

控制中断报表 (control-break report)

以用户定义的组或分割方式汇总数据的报表。当遇到不同的数据时将触发一个新组。

库 (library)

Analysis Services 中包含共享对象（如共享维度）的文件夹，可以由数据库内的多个对象使用。

块 (blocks)

在 BEGIN 和 END 之间的一系列 Transact-SQL 语句。可以将 BEGIN...END 块嵌套于其它 BEGIN...END 块内。

快照代理程序 (Snapshot Agent)

准备快照文件，其中包含已发布表的架构和数据，然后将这些文件存储在快照文件夹中，并在发布数据库中插入同步作业。

快照代理程序实用工具 (Snapshot Agent utility)

配置和触发快照代理程序，该代理程序准备快照文件，其内包含已发布表和数据库对象的架构和数据。

快照复制 (snapshot replication)

一种复制类型，将数据以特定时刻的当时状态分发，不监视对数据的修改。

请参见： 合并复制, 事务复制

快照游标 (snapshot cursor)

参见定义： 静态游标

扩展盘区 (extent)

每当 SQL Server 对象（如表或索引）需要更多空间时分配给该对象的空间所属的单元。在 SQL Server 2000 中，一个扩展是八个邻接的页。

扩展存储过程 (extended stored procedure)

动态链接库 (DLL) 中的一种函数，它使用 SQL Server 2000 扩展存储过程 API 进行编码。然后可以使用与用于执行 Transact-SQL 存储过程的相同的语句从 Transact-SQL 调用该函数。可以生成扩展存储过程来实现用 Transact-SQL 存储过程无法实现的功能。

L

来宾 (guest)

所有 SQL Server 2000 数据库中均提供的一种特殊用户帐户，它不能从任何数据库中删除。如果使用未指派给数据库中的某个用户帐户的登录来进行连接，并且该连接引用此数据库中的对象，那么它仅具有指派给该数据库中的 guest 帐户的权限。

LCID (LCID)

参见定义： 区域设置标识符 (LCID)

粒度 (granularity)

数据元素中包含的信息的确切性程度。具有细粒度的事实数据表包含许多离散的事实，如各个销售事务。具有粗粒度的表存储的事实是各个元素的汇总，如每天的销售合计。

联邦信息处理标准 (FIPS) (Federal Information Processing Standard (FIPS))

适用于美国政府购买的计算机系统的标准。每个 FIPS 标准均由国家标准与技术学会 (NIST) 定义。SQL 产品的当前标准是 FIPS 127-2，它基于 ANSI SQL-92 标准。ANSI SQL-92 与 ISO/IEC SQL-92 一致。

连词 (conjunction)

一种词性（如 and 或 although），用于连接单词、短语、子句或句子。并列连词（and、but、or、nor、for、so、yet）连接并说明具有相同语法分类的词和词组的关系。

联合查询 (Union query)

通过执行等同于将一个表追加到另一个表的操作来组合两个表的查询。

联接 (join)

作为动词，是指组合两个或多个表的内容，并生成合并了每个表的行和列的结果集。通常使用各个表共有的数据联接这些表。作为名词，是指联接表的进程或结果，就象在术语“内联接”中指联接表的一种特定方法一样。

请参见： 联接列

联机重做日志 (online redo log)

参见定义： 事务日志

联机分析处理 (OLAP) (online analytical processing (OLAP))

使用多维结构为分析提供对数据的快速访问的技术。OLAP 的源数据通常存储在关系数据库的数据仓库中。

联机事务处理 (OLTP) (online transaction processing (OLTP))

为在机构的全部业务事务发生时进行记录而设计的数据处理系统。OLTP 系统的特征是许多并发用户动态地添加和修改数据。

连接 (connection)

在 SQL Server 2000 应用程序和 SQL Server 2000 实例之间建立的进程间通讯 (IPC) 链接。如果应用程序位于与 SQL Server 2000 实例不同的计算机上，则该连接是网络链接。如果应用程序和 SQL Server 2000 实例在同一台计算机上，则链接通过本地 IPC 机制构成，如共享内存。应用程序使用 IPC 链接将 Transact-SQL 语句发送到 SQL Server，并从 SQL Server 接收结果集、错误和消息。

联接表 (join table)

参见定义： 连接表

连接表 (junction table)

建立其它表之间的关系的表。连接表包含引用构成该关系的表的外键。例如，OrderParts 连接表可以通过具有 Orders 表和 Parts 表的外键来展示每个订单运送的部件。

链接表 (linked table)

由 OLE DB 数据源表现的 OLE DB 行集，已定义为链接服务器以供在 SQL Server 2000 分布式查询中使用。由链接服务器表现的行集可以在分布式查询中作为表加以引用。

链接表 (linking table)

已与其它两个表相关联并间接用作这两个表之间的关联的表。

链接多维数据集 (linked cube)

基于在另一台分析服务器上定义的多维数据集的多维数据集。

请参见： 发布服务器, 源多维数据集, 订阅服务器

链接服务器 (linked server)

由 SQL Server 2000 分布式查询使用的 OLE DB 数据源的定义。链接服务器定义指定访问数据所需的 OLE DB 提供程序，并包括足够的寻址信息以供 OLE DB 提供程序用来连接数据。然后由 OLE DB 数据源表现的任意行集可以在 SQL Server 2000 分布式查询中作为表（称为链接表）加以引用。

请参见： 本地服务器

联接列 (join column)

联接条件中引用的列。

请参见： 联接

联接路径 (join path)

指出两个表的联系方式的一系列联接。例如 Sales.SalesRepIDSalesReps.ID、SalesReps.BranchIDBranches.ID。

联接筛选 (join filter)

合并复制中使用的一种行筛选，它定义两个表之间的关系，该关系将在同步过程中加以强制，这与指定两个表之间的联接类似。

联接条件 (join condition)

指定表根据其联接列而联系起来的方式的比较子句。

联接运算符 (join operator)

联接条件中的一种比较运算符，确定条件两侧的评估方式以及返回哪些行。

联接字段 (join field)

参见定义： 联接列

两相提交 (two-phase commit)

确保应用于不止一个服务器的事务在所有的服务器上都完成或都未完成的进程。

列 (column)

SQL 表中每一行中的区域，存储用该表制作模型的某个对象特性的数据值。例如，Northwind 示例数据库中的 Employees 表建立 Northwind Traders 公司职员的模型。Employees 表的每个行中的 LastName 列存储该行所代表的职员的姓氏，就象窗口或表单中的 Last Name 字段包含姓氏一样。

请参见： 行

列级排序规则 (column-level collation)

SQL Server 2000 支持在单个实例中采用多个排序规则。数据库可以具有与实例的默认排序规则不同的默认排序规则。可以为单个列和变量指派与实例或数据库的默认排序规则不同的排序规则。表中的每个列可具有不同的排序规则。

列级约束 (column-level constraint)

当表创建或改变时在列定义内指定的约束定义。该约束只应用于相关的列。

请参见： 约束

列筛选 (column filter)

列筛选限制要包含在快照发布、事务发布或合并发布中的列。

临时表 (temporary table)

放置在临时数据库 tempdb 中的表，在会话结束时清除该表。

临时存储过程 (temporary stored procedure)

放置在临时数据库 tempdb 中的一个过程，在会话结束时清除该过程。

浏览模式 (browse mode)

一种函数，使您可以扫描数据库行并逐行更新其值。一些浏览模式函数返回的信息可供应用程序用来检查复杂特殊查询的结构。

流水游标 (firehose cursor)

默认结果集的一个过时的术语。

流水游标 (firehose cursors)

默认结果集的过时的术语。

请参见： 默认结果集

逻辑名称 (logical name)

SQL Server 用来标识文件的名称。文件的逻辑名称必须符合标识符的规则，且最多可以具有 30 个字符（例如 ACCOUNTING 或 LIBRARY）。

逻辑运算符 (logical operators)

运算符 AND、OR 和 NOT。用于连接 WHERE 子句中的搜索条件。

M

MAPI (MAPI)

参见定义： 消息应用程序接口 (MAPI)

master 数据库 (master database)

控制 SQL Server 的各个实例的操作的数据库。它自动与 SQL Server 的各个实例一起安装，并跟踪用户帐户、远程用户帐户及每个实例可与之交互的远程服务器。它还跟踪正在进行的进程、可配置的环境变量、系统错误信息、系统上可用的磁带和磁盘以及活动锁。

MDX (MDX)

参见定义： 多维表达式 (MDX)

枚举 (enumeration)

属性的一种数据类型。它指定属性值应支持不变的字符串或整型值的固定集合。

媒体集 (media set)

备份操作中涉及的所有媒体。

请参见： 媒体描述, 媒体家族

媒体家族 (media family)

由单个设备写入的集合中的所有媒体（例如一个初始媒体和全部延续媒体，如果有的话）。

请参见： 媒体集

媒体描述 (media description)

描述媒体集的文本。

请参见： 媒体集

媒体名称 (media name)

整个备份媒体集的描述性名称。

媒体首部 (media header)

提供有关备份媒体的信息。

密度 (density)

多维结构中包含数据的单元所占的百分比。Analysis Services 只存储包含数据的单元。密集的多维数据集比结构设计相同的稀疏的多维数据集需要更多的存储空间。

请参见： 数据爆炸, 稀疏度

美国国家标准学会 (ANSI) (American National Standards Institute (ANSI))

为美国建立商业和通讯标准的美国工商团体组织。ANSI 利用其在国际标准化组织 (ISO) 和国际电子技术委员会 (IEC) 的成员资格，在美国标准与相应的国际标准之间起协调作用。

名称句式 (name phrasing)

某种关系的英文描述，该关系中一个实体是另一个实体的名称。例如，在句子“Custnames are the names of Customers”（Custnames 是客户的名称）中，Custnames 和 Customers 都是实体。

名词 (noun)

一种词性，它为人、地点、事物、想法、动物、质量或动作命名。英文中名词通常变化形式以表示复数和所有格。

命令关系 (command relationship)

使用自然语言问题或命令向硬件发布指令。例如“Play the album with song XXX on it.”（播放带有歌曲 XXX 的曲集。）

命名别名 (aliasing)

允许对象、属性或关系的名称在新的上下文中重新使用，而同时保持其它特性不变。

命名管道 (named pipe)

一种进程间通讯 (IPC) 机制，SQL Server 用它来提供客户端和服务器之间的通讯。命名管道允许对共享网络资源的访问。

命名关系 (naming relationship)

一种命名规则，根据名称标识该关系的目的对象。

命名集 (named set)

维度成员集或为重复使用而创建的集合表达式，例如多维表达式 (MDX) 查询。

命名实例 (named instance)

SQL Server 2000 的一个安装，给予它一个名称以与其它命名实例及同一台计算机上的默认实例区分。命名实例由计算机名和实例名标识。

请参见： 默认实例, 多实例

模块 (module)

工程中的一组对象。可以在工程中的模块之间移动对象，从而为分散开发环境组织这些对象。

默认成员 (default member)

当未对维度指定成员时查询中所使用的维度成员。如果存在“（全部）”级别则维度的默认成员是“全部”成员，否则是最高级别的任意一个成员。还可以在维度安全性的自定义规则中设置各个角色的默认成员。

请参见： “全部”成员

默认结果集 (default result set)

SQL Server 用来将结果集返回到客户端的默认模式。行按照其放置在结果集中的顺序发送到客户端，且应用程序必须按此顺序对行进行处理。在执行连接中的某 SQL 语句之后，应用程序除了检索结果集中的行以外不能在连接上执行任何其它操作，直到已检索了所有的行。在结果集检索结束之前应用程序可以执行的唯一的其它操作是取消结果集的剩余部分。这是客户端从 SQL Server 获取行的最快方法。

请参见： 流水游标

默认实例 (default instance)

SQL Server 的复本，使用其所安装于的计算机的名称作为自己的名称。

请参见： 命名实例, 多实例

默认数据库 (default database)

用户登录到 SQL Server 后立即连接到的数据库。

默认语言 (default language)

用户未指定语言时 SQL Server 2000 用于错误和消息的语言。每个 SQL Server 2000 登录都具有一种默认语言。

默认约束 (DEFAULT constraint)

为表列定义的属性，指定将一个常量用作该列的默认值。如果任何后续的 INSERT 或 UPDATE 语句将该列指定为 NULL 值，或未指定该列的值，则将 DEFAULT 约束中定义的常量值放置在该列内。

默认 (default)

当用户未指定时由系统自动指派的数据值、选项设置、排序规则或名称。当用户未指定某些事件发生后要采取的操作时所自动采取的操作。

模型 (model)

在 English Query 中，模型是在 English Query 应用程序中已知的有关这些对象的所有信息的集合。该信息包括：指定的数据库对象（如表、字段和联接）、语义对象（如实体、实体间的关系、附加字典条目）和全局域默认选项。

模型相关性 (model dependency)

两个或多个模型之间的关系，该关系中一个模型依赖另一个模型的信息。

model 数据库 (model database)

与 SQL Server 一起安装的数据库，为新的用户数据库提供模板。SQL Server 2000 通过复制 model 数据库中的内容，然后将它扩充到所请求的大小来创建新数据库。

MOLAP (MOLAP)

参见定义： 多维 OLAP (MOLAP)

money 数据类型 (money data type)

一种 SQL Server 系统数据类型，存储从 -2^63 (-922,337,203,685,477.5808) 到 2^63 - 1 (+922,337,203,685,477.5807) 之间的货币值，精度为货币单位的千分之十。

目的对象 (destination object)

知识库中的对象，它参与一种关系，是这种关系的目的。例如，组件 是关系工程拥有组件 中的目的对象。

请参见： 起始对象

目标对象 (target object)

参见定义： 源和目标

目标分区 (target partition)

一种 Analysis Services 分区，将另一个分区合并到该分区中，且合并之后包含两个分区的数据。

请参见： 源分区

N

nchar 数据类型 (nchar data type)

固定长度的 Unicode 数据类型，最大长度为 4,000 个字符。Unicode 字符每个字符使用两个字节，并支持所有国际化字符。

内部标识符 (internal identifier)

知识库中对象标识符的更精简形式。内部标识符只保证在单个知识库中唯一。

请参见： 对象标识符

内联接 (inner join)

通过比较源表间共享的列的值从多个源表检索行的操作。内联接排除来自不具有与其它源表中的行匹配的行的源表的行。

内置函数 (built-in functions)

一组预定义的函数，这些函数作为 Transact-SQL 和多维表达式 (MDX) 语言的部分而提供。

Net-Library (Net-Library)

一种 SQL Server 通讯组件，它将 SQL Server 客户端软件和数据库引擎与网络 API 隔离。SQL Server 客户端软件和数据库引擎向 Net-Library 发送常规网络请求，Net-Library 将请求转换为用户所选协议的特定网络命令。

匿名订阅 (anonymous subscription)

匿名订阅是请求订阅的一种，有关该订阅和订户的详细信息将不进行保存。

niladic 函数 (niladic functions)

没有输入参数的函数。大多数 niladic SQL Server 函数返回系统信息。

ntext 数据类型 (ntext data type)

一种可变长度 Unicode 数据类型，最多可以存放 2^30 - 1 (1,073,741,823) 个字符。ntext 列在数据行中存储一个 16 位的指针，而数据单独存储。

NULL (NULL)

没有显式赋给的值的条目。NULL 不等于零或空格。NULL 值不视作大于、小于或等于任何其它值，包括另一个 NULL 值。

nvarchar 数据类型 (nvarchar data type)

一种可变长度 Unicode 数据类型，最多可有 4,000 个字符。Unicode 字符每个字符使用两个字节，并支持所有国际化字符。sysname 是一种系统提供的用户定义的数据类型，该类型是 nvarchar(128) 的同义词，用于引用数据库对象名。

O

ODBC (ODBC)

参见定义： 开放式数据库连接 (ODBC)

ODBC 驱动程序 (ODBC driver)

一种动态链接库 (DLL)，支持 ODBC 的应用程序（如 Excel）可以用它来访问 ODBC 数据源。每个 ODBC 驱动程序针对一个数据库管理系统 (DBMS)，如 SQL Server、Access 等等。

ODBC 数据源 (ODBC data source)

一组数据的位置，可以使用 ODBC 驱动程序访问该位置。也是一种存储的定义，包含 ODBC 应用程序连接到数据源所需的全部连接信息。

请参见： 数据源

ODS (ODS)

参见定义： 开放式数据服务 (ODS)

OIM (OIM)

参见定义： 开放信息模型 (OIM)

OLAP (OLAP)

参见定义： 联机分析处理 (OLAP)

OLE DB (OLE DB)

用于访问数据的基于 COM 的应用程序接口 (API)。对于以可使用 OLE DB 提供程序的任意格式（数据库、电子表格、文本文件等等）存储的数据，OLE DB 都支持对其进行访问。

请参见： 用于 OLAP 的 OLE DB

OLE DB 使用者 (OLE DB consumer)

调用和使用 OLE DB 应用程序接口 (API) 的任何软件。

OLE DB? 提供程序 (OLE DB provider)

表现 OLE DB 接口的软件组件。每个 OLE DB 提供程序表现来自特定类型的数据源（例如 SQL Server 数据库、Access 数据库或 Excel 电子表格）的数据。

OLE 自动化对象 (OLE Automation objects)

提供可兼容自动化的接口的组件对象模型 (COM) 对象。

OLE 自动化服务器 (OLE Automation server)

向其它应用程序（称为“自动化客户端”）表现可编程自动化对象的应用程序。表现可编程对象使客户端可以通过直接访问这些对象并使用因它们而可用的服务“自动处理”某些函数。例如，字处理器可以表现其拼写检查功能以便其它程序可以使用该功能。

OLE 自动化控制器 (OLE Automation controller)

可以驱动自动化对象的编程环境（如 Visual Basic）。

OLTP (OLTP)

参见定义： 联机事务处理 (OLTP)

P

排它锁 (exclusive lock)

一种锁，它防止任何其它事务获取资源上的锁，直到在事务的末尾将资源上的原始锁释放为止。在更新操作（INSERT、UPDATE 或 DELETE）过程中始终应用排它锁。

排序次序 (sort order)

排序规则中规则的集合，定义字符在比较运算中评估的方式和其排序顺序。

排序规则 (collation)

一组规则，决定数据比较、排序和表现的方式。字符数据使用排序规则信息（包括区域设置、排序次序和区分大小写）进行排序。

请参见： 区域设置, SQL 排序规则

培训数据集 (training data set)

一组已知的和可预测的数据，用于培训数据挖掘模型。

请参见： 挖掘模型培训

批处理 (batch)

一组 SQL 语句，它们作为一个组一起提交并加以执行。脚本通常是逐个提交的一系列批处理。

批注属性 (annotational property)

由 Meta Data Services 作为字符串数据进行维护的属性，该字符串数据可以附加到表现 IAnnotationalProps 接口的任意知识库对象。

平展行集 (flattened rowset)

表现为二维行集的多维数据集，其中多个维度的元素的唯一组合在一个轴上进行组合。有关更多信息，请参见 OLE DB 文档。

平展界面 (flattened interface)

创建来组合多个界面的成员的界面。

PK (PK)

参见定义： 主键 (PK)

pubs 数据库 (pubs database)

与 SQL Server 一起提供的一个示例数据库。

Q

起始对象 (origin object)

知识库中作为定向关系起点的对象。例如，工程 是关系工程具有组件 中的起始对象。

请参见： 目的对象, 顺序关系

前滚 (roll forward)

应用数据库或日志备份中的全部已完成事务，以将数据库恢复到某个时间点或错误点（例如在磁盘丢失之类的事件之后）。

嵌套表 (nested table)

一种数据挖掘模型配置，该配置中某个表的一个列包含一个表。

嵌套查询 (nested query)

包含一个或多个子查询或者子查询的另一个术语的 SELECT 语句。

前缀长度 (prefix length)

bcp 本机格式数据文件中每个非字符字段前的前缀字符的数目。

前缀搜索 (prefix search)

搜索列的全文查询，这些列中指定的基于字符的文字、词或短语是前缀。当使用短语时，该短语内的每个单词都被看作是一个前缀。例如，指定短语“sport fish*”与“sport fishing”、“sportsman fishing supplies”等相匹配的前缀搜索。

前缀字符 (prefix characters)

1 到 4 个字节的集合，为本机格式大容量复制数据文件中的每个数据字段加上前缀。前缀字符记录字段中数据值的长度，当值为 NULL 时则为 -1。

强制订阅 (push subscription)

在发布服务器上创建和管理的订阅。存储有关发布和订阅服务器的信息。

请参见： 请求订阅

切片 (slice)

多维数据集中数据的一个子集，由维度的成员限制一个或多个维度来指定。例如，特定年份的事实构成多年数据的一个切片。

请参见： 轴

请求订阅 (pull subscription)

在订阅服务器上创建和管理的订阅。存储有关发布和订阅服务器的信息。

请参见： 强制订阅

求解次序 (solve order)

多维数据集的单个计算传递中的计算成员、自定义成员、自定义汇总公式和计算单元的评估次序（从最高求解次序到最低求解次序）和计算次序（从最低求解次序到最高求解次序）。求解次序用于在计算多维数据集中的单元的值时确定公式优先级，但这只在单个计算传递内。

请参见： 传递顺序, 计算子多维数据集, 计算传递, 计算条件, 计算公式

区域设置 (locale)

定义与语言有关的某些行为的 Windows 操作系统特性。区域设置定义用于存储字符数据的代码页或位模式，以及字符排序的顺序。它还定义语言特定的项目，如用于日期和时间的格式以及用于分隔数字中的小数的字符。每个区域设置由一个唯一的数字标识，称为区域设置标识符或 LCID。SQL Server 2000 排序规则与区域设置类似，因为排序规则定义 SQL Server 2000 实例的语言特定的行为类型。

请参见： 排序规则, 区域设置标识符 (LCID)

区域设置标识符 (LCID) (locale identifier (LCID))

标识基于 Windows 的区域设置的编号。

请参见： 区域设置

全局变量 (global variable)

SQL Server 中可以由多个数据转换服务 (DTS) 任务引用的变量。在 SQL Server 的早期版本中，该术语指那些名称以两个 at 符号 (@@) 开始的 Transact-SQL 系统函数。

全局订阅 (global subscriptions)

对合并发布的订阅，该发布带有一个赋给的优先级值以用于冲突检测和解决。

全局规则 (global rule)

为特定数据库定义而由不同表的列共享的规则。

全局默认值 (global default)

为特定数据库定义而由不同表的列共享的默认值。

全局属性 (global properties)

English Query 应用程序的常规属性，如默认年份设置或财政年度的起始日期。

全文查询 (full-text query)

与 SELECT 语句一样在基于字符的列（数据类型为 char 、varchar 、text 、ntext 、nchar 或 nvarchar ）内搜索词、短语或者词或短语的多个形式的查询。SELECT 语句返回满足搜索条件的行。

全文服务 (full-text service)

执行全文查询的 SQL Server 组件。

全文目录 (full-text catalog)

存储数据库内表的全部全文索引。

全文启用 (full-text enabling)

允许当前数据库上发生全文查询的进程。

全文索引 (full-text index)

存储给定表的所有全文词及其位置的全文目录部分。

R

RDBMS (RDBMS)

参见定义： 关系数据库管理系统 (RDBMS)

real 数据类型 (real data type)

一种 SQL Server 系统数据类型，具有 7 个数字的精度。从 -3.40E + 38 到 3.40E + 38 之间的浮点精度数字数据。存储大小为 4 个字节。

任务 (task)

参见定义： 作业

任务对象 (task object)

一种数据转换服务 (DTS) 对象，定义要作为数据转换进程的一部分执行的工作块。例如，任务可以执行一条 SQL 语句或使用 DTS 数据抽取从 OLE DB 源将异类数据移动和转换到 OLE DB 目的。

RI (RI)

参见定义： 引用完整性 (RI)

日志文件 (log file)

包含数据库中所进行修改的记录的文件或文件集合。

请参见： 数据文件

ROLAP (ROLAP)

参见定义： 关系 OLAP (ROLAP)

RTIM (RTIM)

参见定义： 知识库类型信息模型 (RTIM)

S

SELECT (SELECT)

用于将数据返回给应用程序或另一个 Transact-SQL 语句、或者用以填充游标的 Transact-SQL 语句。SELECT 语句返回一个表格格式的结果集，它通常由从一个或多个表中析取的数据组成。结果集只包含与 WHERE 或 HAVING 子句中指定的搜索条件匹配的行中的数据。

SELECT (SELECT)

在 Analysis Services 中，用于查询多维数据集并返回多维数据的记录集的多维表达式 (MDX) 语句。

筛选 (filter)

控制作为结果集返回的记录集合的一组准则。筛选还可以定义行以怎样的序列返回。

筛选 (filtering)

基于 SQL 语句的 WHERE 子句中设置的准则限制数据的功能。对于复制，筛选发生在发布中定义的表项目上。结果是可以发布到订阅服务器的数据分区。

请参见： 分区, 垂直筛选

删除查询 (Delete query)

从一个或多个表删除行的查询（SQL 语句）。

设备 (device)

参见定义： 文件

深化/浅化 (drill down/drill up)

用于浏览各种级别的数据的一种技术，数据范围为从最概要的（浅化）到最详细的（深化）。例如，当查看根据年份的销售数据的详细信息时，用户可以深化以显示根据季度的销售数据，以及进一步深化以显示根据月份的数据。

身份验证 (authentication)

验证试图连接到 SQL Server 的用户是否有权进行连接操作的进程。

请参见： SQL Server 身份验证

生成表查询 (Make Table query)

创建一个新表然后通过从现有表复制行来在新表中创建行的查询（SQL 语句）。

声明引用完整性 (DRI) (declarative referential integrity (DRI))

作为表定义的一部分定义的 FOREIGN KEY 约束，在表间实施正确的关系。这些约束确保当 DELETE、INSERT 和 UPDATE 语句删除、添加或修改主键或外键值时进行正确的操作。由 FOREIGN KEY 约束强制的 DRI 操作，可以通过表上的触发器中定义的其它引用完整性逻辑加以补充。

使非规范化 (denormalize)

将冗余引入表中，以从相关表合并数据。然后可以消除相关表。非规范化可以通过降低数据仓库架构中的复杂性来提高效率和性能。

请参见： 星型架构

时间维度 (time dimension)

将时间划分为 Year、Quarter、Month 和 Day 之类的级别的维度。Analysis Services 中从日期/时间列创建的一种特殊维度。

事例 (case)

数据挖掘中由特性和与其它事例的关系描绘的数据的摘要视图。事例是事例集的独立成员，且一个事例可以是多个事例集的成员。

请参见： 事例键, 事例集, 特性

实例 (instance)

计算机上运行的 SQL Server 的复本。一台计算机可以运行 SQL Server 2000 的多个实例。但只可以运行 SQL Server 7.0 版或更早版本的一个实例，尽管在某些情况下它还可以运行 SQL Server 2000 的多个实例。

事例集 (case set)

数据挖掘中事例的集合。

请参见： 事例

事例键 (case key)

数据挖掘中事例的元素，通过它在事例集内引用该事例。

请参见： 事例

示例数据 (sample data)

当在处理多维数据集之前对其进行查询时，代替实际数据而提供的人工生成的数据。示例数据使您可以查看修改多维数据集时结构更改的效果。

事实 (fact)

数据仓库内事实数据表中的一行。事实包含定义数据事件（如销售事务）的值。

事实数据表 (fact table)

数据仓库架构中的中央表，它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务（如银行事务或产品销售）内特定事件的数据。

请参见： 数据仓库, 维度表, 星型架构, 星型联接

实体 (entity)

在 English Query 中，实体是现实世界的对象，是由名词（人、地点、事物或想法）指代的人、产品、货物、城市等等。实体是语义对象。

实体完整性 (entity integrity)

这样一种状态：数据库中的所有行都具有一个非空的主键值，所有表都具有主键，且没有具有重复的主键值的表。这确保数据库中所代表的任何事物均不存在重复的条目。

视图 (view)

可以使用与表相同的方式在 SQL 语句中引用的数据库对象。视图使用 SELECT 语句定义，类似于包含该语句的结果集的对象。

视图生成 (view generation)

用于创建基于类、接口和信息模型中的关系的关系视图的知识库引擎功能。

事务 (transaction)

组合到工作的一个逻辑单元中的一组数据库操作，或者完全提交，或者回滚。事务是原子的、一致的、隔离的和持久的。

事务处理 (transaction processing)

用于有效记录某机构感兴趣的业务活动（称为事务）的数据处理（例如销售、供货的定购或货币传输）。通常，联机事务处理 (OLTP) 系统执行大量的相对较小的事务。

事务回滚 (transaction rollback)

将用户指定的事务回滚到事务内上一个保存点或事务的起始。

事务日志 (transaction log)

记录对数据库的所有更改的数据库文件。它由 SQL Server 在自动恢复过程中使用。

实用工具 (utility)

从命令提示符运行以执行公用任务的 SQL Server 应用程序。

授权 (authorization)

验证授权给用户的权限和访问权的操作。

授权 (grant)

将权限应用于用户帐户，以允许帐户执行某项活动或使用数据。

数据爆炸 (data explosion)

由于聚合数据的存储而引起的多维结构（如多维数据集）大小的指数级增长。

请参见： 密度, 稀疏度

数据仓库 (data warehouse)

为查询和分析特别构造的数据库。数据仓库通常包含代表某机构业务历史的数据。

请参见： 事实数据表, 数据集市

数据操作语言 (DML) (data manipulation language (DML))

SQL 语句的子集，用于检索和操作数据。

数据成员 (data member)

为父子维度中的非叶成员生成的子成员。数据成员包含与非叶成员直接相关的值，该值独立于由该成员的后代计算得到的汇总值。例如，数据成员可以包含某个经理的薪水，以便既可以显示单份薪水又可以显示汇总的薪水。

数据抽取 (data pump)

一种 OLE DB 服务提供程序，它提供一种基本结构，以便可以使用数据转换服务 (DTS) 在异类数据存储之间导入、导出和转换数据。

数据定义 (data definition)

指定数据库中的特性、属性和对象。

数据定义查询 (data-definition query)

包含数据定义语言 (DDL) 语句的 SQL 查询。有一些语句使您可以创建或改变数据库中的对象（如表、索引、视图等等）以及从 Microsoft Access 迁移数据库对象。

数据定义语言 (DDL) (data definition language (DDL))

一种语言，通常是数据库管理系统的一部分，用于定义数据库的所有特性和属性，尤其是行布局、列定义、键列（有时是选键方法）、文件位置和存储策略。

数据关系图 (database diagram)

数据库中对象的图形表示。数据库关系图可以是数据库结构的整体或部分图片；它包括表的对象、表所包含的列和它们之间的关系。

数据集 (dataset)

用于 OLAP 的 OLE DB 中的多维数据集合，是执行多维表达式 (MDX) 的 SELECT 语句后得到的结果。有关数据集的更多信息，请参见 OLE DB 文档。

数据集市 (data mart)

数据仓库内容的子集。数据集市往往包含针对部门级或特定业务领域的数据。

请参见： 数据仓库

数据控制语言 (DCL) (Data Control Language (DCL))

用于控制对数据库对象的权限的 SQL 语句的子集。使用 GRANT 和 REVOKE 语句来控制权限。

数据库 (database)

为特定目的（如搜索、排序和重新组织数据）而组织和提供的信息、表和其它对象的集合。数据库存储在文件中。

数据库语言 (database language)

用于访问、查询、更新和管理关系数据库系统中的数据的语言。SQL 是一种广泛使用的数据库语言。SQL 的 Microsoft SQL Server 实现称为 Transact-SQL。

数据库对象 (database object)

一种数据库组件。数据库中的表、索引、触发器、视图、键、约束、默认、规则、用户定义的数据类型或存储过程。也可能指的是数据库。

数据库对象 (database object)

用于 English Query 应用程序中以响应查询的对象（表、字段和联接）。

数据库架构 (database schema)

数据库的表名、字段、数据类型、主键和外键。也称作数据库结构。

数据库工程 (database project)

一个或多个数据连接（数据库以及访问该数据库所需的信息）的集合。当创建数据库工程时，可以通过 ODBC 连接到一个或多个数据库并通过可视用户界面（带有用于设计和创建数据库的数据库设计器，以及用于为遵从 ODBC 的任意数据库创建 SQL 语句的查询设计器）查看它们的组件。

数据库脚本 (database script)

用于创建数据库对象的语句的集合。Transact-SQL 脚本保存为文件，文件名通常以 .sql 结尾。

数据库角色 (database role)

对某个 Analysis Services 数据库具有相同访问权限的用户和组的集合。可以将数据库角色指派给数据库中的多个多维数据集，从而将该角色的用户访问权限授予这些多维数据集。

请参见： 多维数据集角色, 自定义规则

数据库目录 (database catalog)

包含数据库中所有对象的定义以及数据库的定义的数据库部分。

请参见： 系统目录

数据库所有者 (database owner)

数据库的数据库管理员角色的成员。只有一个数据库所有者。所有者拥有数据库中的全部权限，并决定提供给其他用户的访问权限和功能。

数据库文件 (database file)

构成数据库的物理文件之一。

数据块 (data block)

在 text 、ntext 和 image 数据中，数据块是应用程序和 SQL Server 2000 实例之间一次传输的数据单元。该术语还适用于这些数据类型的存储单元。在磁带备份文件中，数据块是物理 I/O 的单元。

数据类型 (data type)

指定哪种类型的信息可以存储在列、参数或变量中的特性。SQL Server 提供系统提供的数据类型；还可以创建用户定义的数据类型。

请参见： 基本数据类型

数据连接 (data connection)

访问特定数据库所需要的信息的集合。该集合包括数据源名称和登录信息。数据连接存储在工程中，当用户执行需要访问数据库的操作时这些连接被激活。例如，SQL Server 数据库的数据连接由数据库的名称、数据库所驻留于的服务器的位置、用于访问该服务器的网络信息以及用户 ID 和密码组成。

数据清理 (data scrubbing)

用来自多个联机事务处理 (OLTP) 系统的数据生成数据仓库的进程的一部分。该进程必须解决不正确的拼写、两个系统之间冲突的拼写规则和冲突的数据（如对于相同的部分具有两个编号）之类的错误。

数据透视 (pivot)

在交叉表格式数据浏览器中将行旋转为列和将列旋转为行。

从多维数据结构中的可用维度集合中选择维度以在交叉表格式结构的行和列中显示。

数据完整性 (data integrity)

存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值，则该数据库称为已丧失数据完整性。

数据文件 (data file)

在大容量复制操作中，将数据从向外大容量复制操作传输到向内大容量复制操作的文件。在 SQL Server 2000 数据库中，数据文件存放着在数据库中存储的数据。每个 SQL Server 2000 数据库至少有一个主要数据文件，可以有多个次要数据文件以存放不适合在主要数据文件中放置的数据。

请参见： 日志文件

数据修改 (data modification)

使用 INSERT、DELETE 和 UPDATE 之类的 Transact-SQL 语句在数据库中添加、删除或更改信息的操作。

数据沿袭 (data lineage)

由数据转换服务 (DTS) 与 Meta Data Services 一起使用的信息，记录每块数据的包执行和数据转换的历史。

数据源 (data source)

ADO 和 OLE DB 中 OLE DB 提供程序所表现的数据源的位置。

请参见： ODBC 数据源

数据源 (data source)

多维数据集或维度等对象的数据的源。它还是访问源数据所必要的信息规范。有时它指 ClassType clsDataSource 的一个对象。

数据字典视图 (data dictionary view)

一种系统表。

数据字典 (data dictionary)

存储在目录中的一组系统表，包括数据库结构和相关信息的定义（如权限）。

输入成员 (input member)

值直接从数据源装载而不是由其它数据计算得到的成员。

请参见： 计算成员

输入集 (input set)

提供给多维表达式 (MDX) 值表达式的数据的集合，表达式在这些数据上运行。有关设置值表达式的更多信息，请参见 OLE DB 文档。

输入源 (input source)

用作查询的信息源的任何表、视图或架构关系图。

事务复制 (transactional replication)

复制的一种类型，在订阅服务器上应用数据的初始快照，然后当发布服务器上发生数据修改时，捕获个别的事务并传播到订阅服务器。

请参见： 合并复制, 快照复制

属性 (property)

控件、字段或数据库对象的一种命名特性，设置该特性以定义对象的特性之一（如大小、颜色或屏幕位置）或其行为的一个方面（如是否隐藏）。

属性页 (property pages)

一个具有选项卡的对话框，在该对话框中标识表、关系、索引、约束和键的特性。数据库关系图中的每个对象都具有一组属性，它们确定数据库对象的定义。每组选项卡只显示针对所选对象的属性。如果选择了多个对象，则属性页显示所选的第一个对象的属性。

数值表达式 (numeric expression)

评估为数字的任意表达式。该表达式可以是变量、常量、函数和运算符的任意组合。

刷新数据 (refresh data)

清除多维数据集中的数据、用来自数据仓库的新数据装载多维数据集以及计算聚合的一系列操作。当数据仓库中的多维数据集的基础数据变化但多维数据集的结构和聚合定义保持不变时使用刷新数据。多维数据集的三个处理选项之一。

请参见： 增量更新, 处理

双字节字符集 (DBCS) (double-byte character set (DBCS))

一般使用两个字节代表一个字符的字符集，允许代表的字符多于 256 个。DBCS 通常用于使用表意书写系统（如日文、韩文和中文）的环境中。

水平分区 (horizontal partitioning)

将单个表基于选定的行分段为多个表。多个表中的每一个都具有相同的列，但具有的行较少。

请参见： 分区

数据源名称 (DSN) (data source name (DSN))

指派给 ODBC 数据源的名称。应用程序可以使用 DSN 来请求与系统 ODBC 数据源的连接，此连接指定了计算机名称和（可选）DSN 映射到的数据库。

顺序关系 (sequenced relationship)

知识库中的一种关系，指定目的对象集合内的每个目的对象的显式位置。

请参见： 关系对象, 起始对象, 顺序集合

顺序集合 (sequenced collection)

顺序关系对象的目的对象的集合。

请参见： 顺序关系

死锁 (deadlock)

当各自拥有一块数据上的锁的两个用户试图获取对方数据块上的锁时的情况。每个用户都将无限期地等待另一个用户释放锁，除非用户进程之一终止。SQL Server 检测死锁并终止其中一个用户进程。

请参见： 活锁

SID (SID)

参见定义： 安全标识号 (SID)

smalldatetime 数据类型 (smalldatetime data type)

从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据，精确到分钟。

smallint 数据类型 (smallint data type)

从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的 SQL Server 系统整型数据。

smallmoney 数据类型 (smallmoney data type)

一种 SQL Server 系统数据类型，存储从 -214,748.3648 到 +214,748.3647 的货币值，精确到货币单位的千分之十。存储大小为 4 个字节。当显示 smallmoney 值时，将其舍入成两位。

搜索条件 (search condition)

WHERE 或 HAVING 子句中指定源行要包括在 SQL 语句中而必须满足的条件的谓词。例如，语句 SELECT * FROM Employees WHERE Title = 'Sales Representative' 只返回与以下搜索条件匹配的行：Title = 'Sales Representative'。

SQL (SQL)

参见定义： 结构化查询语言 (SQL)

SQL 表达式 (SQL expression)

评估为单个值的运算符、常量、字面值、函数、表名称与字段名称的任意组合。例如，使用表达式来定义查询中的计算字段。

SQL 查询 (SQL query)

一条 SQL 语句，如 SELECT、INSERT、UPDATE、DELETE 或 CREATE TABLE。

SQL 排序规则 (SQL collation)

一组 SQL Server 2000 排序规则，其特性与 SQL Server 早期版本的常用代码页和排序次序组合的特性相匹配。SQL 排序规则是使站点可以选择与其早期系统的行为相匹配的排序规则的兼容功能。

请参见： 排序规则

SQL Server 登录 (SQL Server login)

SQL Server 中存储的帐户，使用户可以连接到 SQL Server。

SQL Server 角色 (SQL Server role)

参见定义： 角色

SQL Server 身份验证 (SQL Server Authentication)

验证连接到 SQL Server 实例的尝试的两种机制之一。用户连接时必须指定一个 SQL Server 登录 ID 和密码。SQL Server 实例确保登录 ID 和密码组合有效才允许连接成功。Windows 身份验证是首选的身份验证机制。

请参见： 身份验证, Windows 身份验证

SQL Server 事件转发服务器 (SQL Server Event Forwarding Server)

SQL Server 的中央实例，管理由其它实例转发给它的 SQL Server 代理事件。启用 SQL Server 事件的集中管理。

SQL Server 用户 (SQL Server user)

参见定义： 用户（帐户）

SQL 数据库 (SQL database)

基于结构化查询语言 (SQL) 的数据库。

SQL 邮件 (SQL Mail)

SQL Server 的一个组件，使 SQL Server 可以通过内置的 Windows NT 或 Windows 2000 消息应用程序接口 (MAPI) 发送和接收邮件。邮件可以由短文本字符串、查询的输出或附件组成。

SQL 语句 (SQL statement)

对数据执行某操作的 SQL 或 Transact-SQL 命令（如 SELECT 或 DELETE）。

sql_variant 数据类型 (sql_variant data type)

存储各种 SQL Server 支持的数据类型（text 、ntext 、timestamp 和 sql_variant 除外）的值的数据类型。

SQL-92 (SQL-92)

1992 年发布的 SQL 标准的版本。国际标准是 ISO/IEC 9075:1992 数据库语言 SQL。美国国家标准学会 (ANSI) 也发布了相应的标准（数据语言 SQL X3.135-1192），因此在美国有时称 SQL-92 为 ANSI SQL。

碎片 (fragmentation)

发生在进行数据修改时。可以通过除去和重新创建聚集索引来减少碎片和改善预读性能。

锁 (lock)

对多用户环境中的资源的访问权限的限制。SQL Server 自动将用户锁在特定行、列或文件外，以维护安全性或防止并发数据修改问题。

锁升级 (lock escalation)

将众多细粒度锁转换为较少的粗粒度的锁以削减系统开销的进程。

索引 (index)

关系数据库中基于键值提供对表的行中数据的快速访问的数据库对象。索引还可以在表的行上强制唯一性。SQL Server 支持聚集索引和非聚集索引。对表的主键自动进行索引。在全文检索中，全文索引存储关于重要词和这些词在给定列中的位置的信息。

索引 OR 运算 (index ORing)

一种执行策略，包括使用几个索引查找单个表的行，然后生成结果（通过将各部分结果合并在一起）。通常对应于 WHERE <search_conditions> 中的 OR。例如，使用列 R.a 和 R.b 上的索引的 WHERE R.a = 6 OR R.b = 7。

索引页 (index page)

包含索引行的数据库页。

所有格 (possessive case)

一种语法格，表示所有关系或类似于所有关系的关系，例如 Mary's blood type（Mary 的血型）或 John's movie（John 的电影）。

T

table 数据类型 (table data type)

一种特殊的数据类型，存储供以后处理的结果集。

填充因子 (fill factor)

索引的一个特性，定义该索引每页上的可用空间量。FILLFACTOR 适应以后表数据的扩展并减小了页拆分的可能性。FILLFACTOR 是从 1 到 100 之间的某个值，指定索引页保留为空的百分比。

TDS (TDS)

参见定义： 表格格式数据流 (TDS)

特殊连接器名称 (ad hoc connector name)

查询的 FROM 子句中的 OpenRowset 函数，它允许每当必须访问数据时都发布外部服务器和数据源的所有连接信息。

特性 (attribute)

数据挖掘中事例的单个特性。特性用于提供有关事例的信息。例如，重量可以是涉及运输容器的事例的一个特性。

请参见： 事例

特征 (trait)

描述实体的一个特性。例如，血型是病人的一个特征。

特征句式 (trait phrasing)

以英文描述表达关系的一种方式，该方式中次要实体描述主要实体。例如，在短语“ages of customers”（客户的年龄）中，“ages”是特征（或次要实体），“customers”是主要实体。

tempdb 数据库 (tempdb database)

为临时表、临时存储过程和其它临时工作存储需要提供存储区域的数据库。

text 数据类型 (text data type)

一种 SQL Server 系统数据类型，指定可变长度的非 Unicode 数据，最长可有 2^31 -1 (2,147,483,647) 个字符。text 数据类型不能用于存储过程中的变量或参数。

theta 联接 (theta join)

基于标量值的比较（=、>、>=、<、<=、< >、!<、!>）的联接。

提供程序 (provider)

一种 OLE DB?提供程序。

提供对数据库的访问的一种进程内动态链接库 (DLL)。

提交 (commit)

保存自事务开始时起对数据库、多维数据集或维度进行的所有更改的操作。提交保证事务的所有修改在数据库、多维数据集或维度中都永久有效。提交还释放事务所使用的资源（如锁）。

请参见： 回滚

提取 (fetch)

从游标检索行或行块的操作。Transact-SQL 批处理、存储过程和触发器使用 FETCH 语句从 Transact-SQL 游标进行提取。应用程序使用应用程序接口 (API) 提取函数。

timestamp 数据类型 (timestamp data type)

一种 SQL Server 系统数据类型，它是一个单调增加的计数器，其值在数据库内始终唯一。

tinyint 数据类型 (tinyint data type)

一种 SQL Server 系统数据类型，存放从 0 到 255 的整数。其存储大小为 1 个字节。

同步 (synchronization)

复制中在发布服务器上和订阅服务器上维护相同的架构和数据的进程。

请参见： 初始快照

同等联接 (equijoin)

对所联接的列中的值进行同等性比较的联接，所有列都包括在结果中。

同类数据 (homogeneous data)

来自由相同的软件管理的多个数据源的数据（例如，来自几个 Exchange 电子表格的数据，或来自几个 SQL Server 2000 实例的数据）。如果某 SQL Server 2000 分布式查询的所有数据均来自 SQL Server 2000 实例，则这个查询是同类的。

通配符搜索 (wildcard search)

使用占位符（如 * 或 ?）执行表或字段中的数据搜索。例如，使用 Smith* 搜索数据库中的 Last Name 字段，将找到姓以 Smith 打头的所有记录，包括 Smith、Smithson、Smithlin 等等。

通配符字符 (wildcard characters)

与 LIKE 关键字一起使用以进行模式匹配的字符，包括下划线 (_)、百分比 (%) 和方括号 ([ ])。

同义词 (synonym)

指的是与另一个词所指的相同的事物的词。例如，员工 和职员 是同义词。

Transact-SQL (Transact-SQL)

包含用于管理 SQL Server 实例，创建和管理 SQL Server 实例中的所有对象，以及插入、检索、修改和删除 SQL Server 表中的所有数据的命令的语言。Transact-SQL 是由国际标准化组织 (ISO) 和美国国家标准学会 (ANSI) 发布的 SQL 标准中定义的语言的扩展。

Transact-SQL 游标 (Transact-SQL cursor)

使用 Transact-SQL DECLARE CURSOR 语法定义的服务器游标。Transact-SQL 游标用于 Transact-SQL 批处理、存储过程和触发器中。

U

Unicode (Unicode)

Unicode 定义一组字母、数字和符号，SQL Server 可在 nchar 、nvarchar 和 ntext 数据类型中识别它们。它与字符集相关，但独立于字符集。Unicode 具有 65,000 多个可能值（相比之下字符集只有 256 个值），并且存储空间是字符集的两倍。Unicode 包括大多数语言的字符。

Unicode 格式 (Unicode format)

使用 Unicode 字符存储在大容量复制数据文件中的数据。

Unicode 排序规则 (Unicode collation)

这作为 Unicode 数据的排序次序。它是确定 SQL Server 响应数据库查询而比较、整理和提供 Unicode 数据的方式的规则集合。

UNIQUE 约束 (UNIQUE constraints)

强制非主键上的实体完整性的约束。UNIQUE 约束确保未输入重复值，并创建一个索引以增强性能。

uniqueidentifier 数据类型 (uniqueidentifier data type)

包含以 16 个字节的二进制字符串存储的唯一标识号的数据类型，用于存储全局唯一标识符 (GUID)。

V

varbinary 数据类型 (varbinary data type)

一种 SQL Server 系统数据类型，最多可存放 8,000 个字节的可变长度二进制数据。

varchar 数据类型 (varchar data type)

一种 SQL Server 系统数据类型，存放可变长度的非 Unicode 数据，最多可有 8,000 个字符。

W

挖掘模型 (mining model)

一种对象，其中包含数据挖掘进程的定义和培训活动的结果。例如，数据挖掘模型可以指定输入、输出、算法及进程的其它属性，并存放培训活动中收集的信息（如决策树）。

挖掘模型培训 (mining model training)

数据挖掘模型用以通过评估一组已知的和可预测的数据估计模型参数的进程。也是导致挖掘模型评估培训数据的操作。

请参见： 培训数据集

外表 (foreign table)

包含外键的表。

外键 (FK) (foreign key (FK))

列或列的组合，其值与同一个表或另一个表中的主键 (PK) 或唯一键相匹配。也称作参照键。

外联接 (outer join)

一种联接，包括满足搜索条件的联接表的所有行，甚至包括在所联接的表中没有匹配行的表中的行。对于当一个表中的行与另一个表中的行不匹配时所返回的结果集行，将为解析到没有相应行的表中的所有结果集列提供 NULL 值。

完整外部联接 (full outer join)

外部联接的一种类型，在该联接中包括所有联接的表中的所有行，而无论这些行是否匹配。

完整性约束 (integrity constraint)

表中定义的一个属性，防止可能创建无效数据的数据修改。

谓词 (predicate)

句子的基本语法部分，由对主语的描述组成。例如，在句子“The voters elected the incumbent”（投票人选举了现任者）中，主语是voters ，谓词是elected the incumbent 。

维度 (dimension)

多维数据集的一种结构特性，是描述事实数据表中的数据的类别（级别）的有组织的层次结构。这些类别通常描述相似成员的集合，用户要根据它们进行分析。例如，某个地理维度可能包括国家、地区、州或省以及城市的级别。

请参见： 度量值, 虚拟维度, 级别, 成员组

维度表 (dimension table)

数据仓库中的表，其条目描述事实数据表中的数据。维度表包含创建维度所基于的数据。

请参见： 事实数据表, 主维度表

维度层次结构 (dimension hierarchy)

维度的层次结构之一。

请参见： 层次结构

为空性 (nullability)

列、参数或变量的一种特性，指定其是否允许空数据值。

未强制关系 (unenforced relationship)

表之间的一种链接，一个表中的外键引用另一个表中的主键，且在 INSERT 和 UPDATE 事务中不检查引用完整性。未强制关系在数据库关系图中由虚线表示。

唯一索引 (unique index)

一种索引，不允许具有索引值相同的行，从而禁止重复的索引或键值。系统在创建该索引时检查是否有重复的键值，并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查。

位置 (position)

游标中处理的当前位置。例如，在某应用程序从游标提取了前 10 行之后，当前位置定位在游标的第十行。数据库 API 还有一些函数（如 ODBC SQLSetPos 函数）允许应用程序在未执行提取的情况下直接移动到游标中的某个特定位置。

文件存储类型 (file storage type)

定义数据文件中使用的存储格式，该文件将数据从向外大容量复制操作传输到向内大容量复制操作。在本机模式文件中，所有数据均使用与 SQL Server 2000 用来在数据库中存储数据的相同的内部结构进行存储。在字符模式文件中，所有数据均转换为字符串。

文件 DSN (file DSN)

在保存在计算机上的文件中存储数据库的连接信息。该文件是带有扩展名 .dsn 的文本文件。连接信息由参数和相应的值组成，ODBC 驱动程序管理器使用它们来建立连接。

文件组 (filegroup)

SQL Server 中一个或多个文件的命名集合，它构成分配或用于数据库管理的单个单元。

问题 (question)

English Query 中查询的英文形式，例如“How many customers bought products last year?”（去年有多少客户购买产品？）问题还可以以陈述的形式向 English Query 应用程序提出，例如“List the customers that bought products last year.”（列出去年购买产品的客户）。

问题模板 (question template)

描述一组问题的一种结构，这些问题可使用某个特定关系或一组关系进行询问。

问题生成器 (Question Builder)

支持用户了解有关域对象的更多信息以构造问题的需要的工具。他们可以查明域对象包含的内容，域中代表了哪些基本关系，以及可以使用哪些英文短语来询问这些关系。

问题文件 (.eqq) (question file (.eqq))

一种 ASCII 文本文件，包含准备使用 English Query 引擎测试的问题（一行一个）。问题文件以 .eqq 扩展名表示。问题可以使用测试工具自动提交给问题文件，或者开发人员可以创建问题列表。

文件 (file)

SQL Server 数据库中数据库存储的基本单元。一个数据库可以存储在几个文件中。SQL Server 使用三种类型的文件：数据文件（存储数据）、日志文件（存储事务日志）和备份文件（存储数据库的备份）。

WHERE 子句 (WHERE clause)

SQL 语句指定要检索哪些记录的部分。

Windows 排序规则 (Windows collation)

确定 SQL Server 对字符数据排序的方式的一组规则。它由 Windows“控制面板”中的名称和在 SQL Server 2000 安装过程中指定。

Windows 身份验证 (Windows Authentication)

验证连接到 SQL Server 实例的尝试的两种机制之一。用户连接时以其 Windows 用户或组标识。Windows 身份验证是连接到 SQL Server 的最安全机制。

请参见： SQL Server 身份验证, 信任连接

无 DSN 连接 (DSN-less connection)

一种数据连接类型，该连接基于数据源名称 (DSN) 创建，但作为工程或应用程序的一部分进行存储。无 DSN 连接对于 Web 应用程序尤其有用，因为它们使您可以将应用程序在服务器间移动而不会在新的服务器上重新创建 DSN。

物理读取 (physical reads)

对数据库页的请求，该请求中 SQL Server 必须将所请求页从磁盘传输到 SQL Server 缓冲区池。所有读取页的尝试都称作逻辑读取。如果该页已在缓冲区中，则不存在由逻辑读取生成的相关物理读取。物理读取的数目从不会超过逻辑读取的数目。在调整良好的 SQL Server 实例中，逻辑读取的数目通常远高于物理读取的数目。

物理名称 (physical name)

文件或镜像文件位于的路径。默认物理名称是 Master.dat 文件的路径缀上文件逻辑名称的前八个字符。例如，如果 Accounting 是逻辑名称，而 Master.dat 文件位于 Sql\Data，则默认物理名称是 Sql\Data\Accounti.dat。对于镜像文件，默认物理名称是 Master.mir 文件的路径缀上镜像文件逻辑名称的前八个字符。例如，如果 Maccount 是镜像文件的名称，而 Master.mir 文件位于 Sql\Data，则默认物理名称是 Sql\Data\Maccount.mir。

X

稀疏度 (sparsity)

不包含数据的多维结构的单元的相对百分比。Analysis Services 只存储包含数据的单元。稀疏的多维数据集比具有相同的结构设计的密集的多维数据集需要的存储要少。

请参见： 数据爆炸, 密度

系统表 (system tables)

构成 SQL Server 的系统目录的内置表。系统表存储 SQL Server 实例的所有元数据，包括实例的配置信息及其所有数据库和数据库对象的定义。用户不应直接修改任何系统表。

系统存储过程 (system stored procedures)

一组 SQL Server 提供的存储过程，可以用于执行一些操作，如从系统目录检索信息或执行管理任务。

系统管理员 (system administrator)

负责管理 SQL Server 的实例的人或一组人。系统管理员具有在 SQL Server 的实例中执行所有操作的全部权限。系统管理员是 sysadmin 固定服务器角色的成员，或是使用 sa 登录 ID 的登录。

系统函数 (system functions)

一组内置函数，对 SQL Server 中的值、对象和设置执行操作，并返回有关它们的信息。

系统目录 (system catalog)

描述 SQL Server 实例的所有功能的一组系统表。系统目录记录元数据（如所有用户、所有数据库、每个数据库中的所有对象的定义）以及系统配置信息（如服务器和数据库选项设置）。

请参见： 数据库目录

系统数据库 (system databases)

SQL Server 的所有实例中都存在的一组四个数据库，用于存储系统信息：

master 数据库存储所有的实例级别元数据，并记录所有其它数据库的位置。

tempdb 数据库存储暂时对象，这些对象只在单个语句或连接期间存在，如工作表和临时的表或存储过程。

model 数据库用作创建所有用户数据库的模板。

msdb 数据库由 SQL Server 代理用来记录有关作业、警报和备份历史的信息。

请参见： 用户数据库

线程 (thread)

一种操作系统组件，允许多用户应用程序的逻辑以几个单独的异步执行路径执行。SQL Server 关系数据库引擎执行多个线程，以利用多个处理器。线程的使用还有助于确保当某些用户连接被阻塞时为其它用户连接执行工作（例如，当等待磁盘读或写操作完成时）。

显示计划 (Showplan)

显示 SQL 语句的执行计划的报表。SET SHOWPLAN_TEXT 和 SET SHOWPLAN_ALL 生成文本化的显示计划输出。SQL Query 分析器和 SQL Server 企业管理器可以将显示计划信息显示为图形树。

显式事务 (explicit transaction)

包围在事务分隔符内的一组 SQL 语句。第一个分隔符必须为 BEGIN TRANSACTION 或 BEGIN DISTRIBUTED TRANSACTION，而结束分隔符必须为下列之一：

COMMIT TRANSACTION

COMMIT WORK

ROLLBACK TRANSACTION

ROLLBACK WORK

SAVE TRANSACTION。

相关子查询 (correlated subquery)

在 outer 语句中引用列的子查询。在 outer 语句中为每个候选行执行内层查询。

相关性 (dependencies)

依靠指定的表或视图的视图和过程。

项目 (article)

为复制指定的对象。项目是发布中的一个组件，可以是一个表、指定的列（使用列筛选）、指定的行（使用行筛选）、存储过程或视图定义、存储过程的执行、视图、索引视图或用户定义函数。

消息编号 (message number)

标识 SQL Server 2000 错误信息的编号。

消息应用程序接口 (MAPI) (Messaging Application Programming Interface (MAPI))

一种电子邮件应用程序接口 (API)。

写启用 (write enable)

更改多维数据集或维度，以便对该多维数据集或维度具有读/写访问权限的多维数据集角色中的用户可以更改其数据。

请参见： 回写

信任连接 (trusted connection)

一种 Windows 网络连接，只能由已通过网络的身份验证的用户打开。用户由其 Windows 登录 ID 标识，且不必输入单独的 SQL Server 登录 ID。

请参见： Windows 身份验证

信息模型 (information model)

一种面向对象的架构，定义用于指定应用程序、进程、组件或软件制品的结构和行为的元数据结构。

星型架构 (star schema)

一种关系数据库结构，该结构中在位于架构中心的单个事实数据表中维护数据，其它维度数据存储在维度表中。每个维度表与事实数据表直接相关，且通常通过一个键列联接到事实数据表。星型架构用在数据仓库中。

请参见： 使非规范化, 事实数据表, 雪花架构

星型联接 (star join)

一个事实数据表（通常为大型事实数据表）和至少两个维度表之间的联接。事实数据表在一个维度键上与每个维度表联接。SQL Server 考虑这些查询中的特殊索引操作策略以使对事实数据表的访问减到最小。

参与星型联接查询的架构的一个例子是一个销售表（包含数百万行的事实数据表）、一个产品表（包含对几百个产品的描述）和一个商店表（包含几十个商店名称）。在本示例中，产品表和商店表是维度表。星型查询优化的一个理想候选方式是选择一小组商店和产品的一个子集（由销售数据库中所没有的特性限制）的销售数据的查询。

请参见： 事实数据表

形容词句式 (adjective phrasing)

一种用英语表达关系的方式，其中一个实体由一个形容词（单个词或包含形容词的另一个实体）描述。例如，在句子“The cities are hot”（城市很炎热）中，“hot”（炎热）是形容词，“cities”（城市）是所描述的实体。

兄弟 (sibling)

维度层次结构中的一个成员，它的父代与指定成员的父代相同。例如，在带有 Year 和 Month 级别的 Time 维度中，成员 January 1997 和 February 1997 为兄弟。

请参见： Ancestor, 子代, 后代, 父代

序列 (sequence)

参见定义： 标识列

虚拟多维数据集 (virtual cube)

基于一个或多个常规多维数据集或链接多维数据集的逻辑多维数据集。

虚拟维度 (virtual dimension)

基于物理维度成员的属性值的逻辑维度。例如，包含红色、绿色和蓝色的虚拟维度可以基于产品维度的 Color 成员属性。

请参见： 成员属性, 维度, 成员

选择查询 (Select query)

将行返回到来自一个或多个表的结果集中的查询。选择查询可以包含要返回的列、要选择的行、放置行的顺序和如何将信息分组（汇总）的规范。

选择列表 (select list)

定义 SELECT 语句返回的结果集的列的 SELECT 语句子句。选择列表是逗号分隔的表达式（如列名、函数或常量）的列表。

雪花架构 (snowflake schema)

星型架构的一个扩展，由多个表定义一个或多个维度。在雪花架构中，只将主维度表与事实数据表联接。其它维度表联接到主维度表。

请参见： 星型架构, 主维度表

Y

延迟 (latency)

数据更改在一个服务器上完成与该更改出现在另一个服务器上之间所用的时间（例如在发布服务器上进行更改和该更改出现在订阅服务器上之间的时间）。

严重级别 (severity level)

表示由 SQL Server 数据库引擎生成的错误的相对重要性的数字。值的范围为从信息 (1) 到严重 (25)。

叶 (leaf)

树结构中没有从属元素的元素。例如，在 Analysis Services 中，叶是不具有后代的维度成员。

请参见： 非叶

页 (page)

虚拟存储系统中固定长度的邻接虚拟地址块，在分页操作中作为一个单元从内存复制到磁盘和从磁盘复制回内存。SQL Server 以页为单位分配数据库空间。在 SQL Server 中，一页的大小为 8 千字节 (KB)。

叶成员 (leaf member)

没有后代的维度成员。

页拆分 (page split)

将已满的数据页或索引页中的行或条目的一半移动到两个新页以便为新的行或索引条目腾出空间的进程。

叶级 (leaf level)

聚集索引或非聚集索引的底部级别。在聚集索引中，叶级包含表的实际数据页。在非聚集索引中，叶级指向数据页或指向聚集索引（如果存在的话），而不是本身包含数据。

业务规则 (business rules)

用于运行业务的逻辑规则。业务规则可以在组成 Windows DNA 系统中间层的 .com 对象中实施，还可以使用触发器、存储对象和约束在 SQL Server 数据库中实施。

已调度备份 (scheduled backup)

当作为作业定义和调度时由 SQL Server 代理完成的自动备份。

一对多关系 (one-to-many relationship)

关系数据库中两个表之间的一种关系，该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关，但第二个表中的一个行只可以与第一个表中的一个行相关。

一对一关系 (one-to-one relationship)

关系数据库中两个表之间的一种关系，该关系中第一个表中的单个行只可以与第二个表中的一个行相关，且第二个表中的一个行也只可以与第一个表中的一个行相关。

已发布数据 (published data)

发布服务器上已复制的数据。

异类数据 (heterogeneous data)

以多种格式存储的数据。例如存储在 SQL Server 数据库、文本文件和 Excel 电子表格中的数据。

取模 (modulo)

一种算术运算符，提供两个整数相除之后的整数余数。

意向锁 (intent lock)

放置在资源层次结构的一个级别上的锁，以保护较低级别资源上的共享或排它锁。例如，在 SQL Server 2000 数据库引擎任务应用表内的共享或排它行锁之前，在该表上放置意向锁。如果另一个任务试图在该表级别上应用共享或排它锁，则受到由第一个任务控制的表级别意向锁的阻塞。第二个任务在锁定该表前不必检查各个页或行锁，而只需检查表上的意向锁。

隐性事务 (implicit transaction)

一种连接选项，该选项下连接执行的每个 SQL 语句都视为单独的事务。

引用键 (referenced key)

由外键引用的主键或唯一键。

引用完整性 (RI) (referential integrity (RI))

数据库中的所有外键值都有效的状态。为使外键有效，它必须包含值 NULL 或来自该外键所引用的主键或唯一键列的现有键值。

应用程序接口 (API) (application programming interface (API))

应用程序（如 ADO）中可用例程的集合，供软件程序员设计应用程序接口时使用。

应用程序角色 (application role)

一种 SQL Server 角色，创建该角色以支持应用程序的安全性需要。

用户定义函数 (user-defined function)

Analysis Services 中，在 Microsoft ActiveX 库中定义、使用组件对象模型 (COM) 自动化语言（如 Visual Basic 或 Visual C++）创建的函数。这类库可以使用 Analysis Services 注册，其函数可以从多维表达式 (MDX) 查询调用。

用户定义函数 (user-defined function)

在 SQL Server 中，由用户定义的 Transact-SQL 函数。函数将频繁执行的逻辑封装到一个命名实体中，该实体可以由 Transact-SQL 语句调用，而不必在每个语句中重新编写该逻辑的代码。

用户定义事件 (user-defined event)

由用户定义的一种消息，可以由 SQL 事件探查器跟踪或用于启动自定义警报。通常，该用户是系统管理员。

用户定义数据类型 (user-defined data type)

由用户创建、用于自定义数据存储、基于 SQL Server 数据类型的一种数据类型。规则和默认值可以绑定到用户定义的数据类型（但不能绑定到系统数据类型）。

请参见： 基本数据类型

用户数据库 (user database)

由 SQL Server 用户创建的数据库，用于存储应用程序数据。连接到 SQL Server 实例的大多数用户只引用用户数据库，而不引用系统数据库。

请参见： 系统数据库

用户（帐户） (user (account))

SQL Server 安全帐户或标识符，表示数据库中的特定用户。每个用户的 Windows 帐户或 SQL Server 登录都映射于数据库中的一个用户帐户。然后，将适当的权限授予用户帐户。每个用户帐户只可以访问已授予使用权限的数据。

用于 OLAP 的 OLE DB (OLE DB for OLAP)

以前指 OLAP 扩展针对 OLE DB 而订的单独规范。从 OLE DB 2.0 开始，OLAP 扩展并入 OLE DB 规范。

请参见： OLE DB

游标 (cursor)

映射结果集并在结果集内的单个行上建立一个位置的实体。在将游标放置到某行之后，可以在该行或从该位置开始的行块上执行操作。最常见的操作是提取（检索）当前行或行块。

游标库 (cursor library)

ODBC 和 DB-Library 应用程序接口 (API) 的一部分，它实现客户端游标。在当前系统中游标库不常用，而使用服务器游标。

优化程序 (optimizer)

参见定义： 查询优化器

优化同步 (optimize synchronization)

一个合并复制选项，当要确定最近的更改是否已导致某行移入或移出发布到订阅服务器的分区时，该选项使您可以将网络数据流量减到最小。

右向外联接 (right outer join)

外联接的一种，在该联接中包括 JOIN 子句中最右边的表中的所有行。当右表中的行与左表中的行不匹配时，来自左表的所有结果集列被赋以值 NULL。

有序集 (ordered set)

按照特定顺序返回的成员的集合。多维表达式 (MDX) 查询中的 ORDER 函数返回一个有序集。

域 (domain)

在 Windows 2000 安全性中，为查看和管理目的将共享一个公用安全数据库的计算机组织在一起所形成的计算机集合。关系数据库中某列允许的有效值的集合。

预测 (prediction)

一种数据挖掘技术，分析现有数据并使用其结果来预测新记录的特性值或现有记录中缺少的特性值。例如，现有的信用卡应用数据可以用于预测新应用的信用风险。

请参见： 决策树

语句权限 (statement permission)

控制用户是否可以执行 CREATE 或 BACKUP 语句的特性。

域完整性 (domain integrity)

强制给定列的条目有效性的完整性机制。CHECK 约束之类的机制可以通过数据类型、格式或允许的值的范围限制可能的数据值。

预写日志 (write-ahead log)

一种事务日志记录方法，该方法中日志总在数据之前写入。

语义对象 (semantic object)

可以由一个数据库对象或其它现实世界的对象表示的对象。例如，实体和关系便是语义对象。

远程表 (remote table)

存储在 OLE DB 数据源中、独立于 SQL Server 的当前实例的表。通过建立链接服务器定义或使用特殊连接器名称来访问该表。

远程存储过程 (remote stored procedure)

位于 SQL Server 的一个实例上、由 SQL Server 的另一个实例上的语句执行的存储过程。在 SQL Server 2000 中支持远程存储过程，但分布式查询提供的功能更好。

远程登录标识 (remote login identification)

指派给用户以访问远程服务器上的远程过程的登录标识（登录 ID）。

远程分发服务器 (remote Distributor)

配置为分发服务器的服务器，且该服务器独立于配置为发布服务器的服务器。

请参见： 分发服务器, 本地分发服务器

远程分区 (remote partition)

其数据存储在非用于存储分区的元数据的分析服务器上的分区。

远程服务器 (remote server)

由远程存储过程调用使用的 SQL Server 实例的定义。SQL Server 2000 仍支持远程服务器，但链接服务器提供的功能更好。

请参见： 本地服务器

远程数据 (remote data)

存储在独立于 SQL Server 的当前实例的 OLE DB 数据源中的数据。该数据通过建立链接服务器定义或使用特殊连接器名称来访问。

源对象 (source object)

特定集合中的所有对象通过关系（全部为相同的关系类型）的方式与其连接的单个对象。对于目的集合，源对象是目的对象。对于起点集合，源对象是起点对象。

源多维数据集 (source cube)

链接多维数据集所基于的多维数据集。

请参见： 链接多维数据集

源分区 (source partition)

一种 Analysis Services 分区，将它合并到另一个分区，并在合并进程结束时将它自动删除。

请参见： 目标分区

源和目标 (source and target)

一种浏览技术，使用源对象检索其目标对象或其关系内的对象。

元数据 (meta data)

有关数据属性的信息，如列中数据的类型（数字、文本等等）或列的长度。它还可以是有关数据结构的信息或指定对象设计的信息（如多维数据集或维度）。

源数据库 (source database)

参见定义： 发布数据库

源数据库 (source database)

数据仓储中，从中析取数据以用于数据仓库的数据库。

原形 (root form)

单词的最基本形式。例如，generating 的原形是 generate。对于其它动词，当定义 English Query 中的字典条目时应使用现在时、不定式形式（使用 run，而不是 ran 或 runs）。对于名词，使用单数形式作为基词，而不是复数形式（animal，而不是 animals）。

延续媒体 (continuation media)

当初始媒体装满时所使用的备份媒体，使备份操作可以延续。

原子的 (atomic)

或者执行全部的事务数据修改，或者全部不执行。

元组 (tuple)

来自不同维度的成员的有序集合。例如，(Boston, [1995]) 是由两个维度的成员组成的元组：Geography 和 Time。单个成员是元组的退化事例，可以作为不带括号的表达式使用。

请参见： 轴

跃点 (hop)

数据通讯中地理分散的网络上的路由器之间的路径的一段。跃点可比拟为旅程（包括出发点和目的地之间的中间车站）的一“段”。那些车站（路由器）彼此之间的距离将是一个通讯跃点。

约束 (constraint)

指派给表列的属性，用于防止将某些类型的无效数据值放置在该列中。例如，UNIQUE 或 PRIMARY KEY 约束防止插入重复的当前值，CHECK 约束防止插入与搜索条件不匹配的值，而 NOT NULL 防止插入 NULL 值。

请参见： 列级约束

Z

再次发布 (republish)

当订阅服务器将接收自发布服务器的数据发布到另一个订阅服务器时。

再次发布者 (republisher)

发布接收自发布服务器的数据的订阅服务器。

脏读 (dirty read)

包含未提交数据的读。例如，事务1 更改了某行。事务2 在事务1 提交更改之前读取已更改的行。如果事务1 回滚更改，则事务2 便读取了逻辑上从未存在过的行。

脏页 (dirty pages)

包含尚未写入磁盘的修改的缓冲区页。

增量更新 (incremental update)

向现有多维数据集或维度添加新成员或向分区添加新数据的操作的集合。多维数据集或分区的三个处理选项之一。维度的两个处理选项之一。

请参见： 刷新数据, 处理

证书 (certificate)

数据的集合，用于不安全的网络（如 Internet）上的身份验证和信息的安全交换。证书将公用加密键安全地绑定到存放相应的专用加密键的实体。证书由证书颁发机构进行数字签名，并可以为用户、计算机或服务进行管理。

整型 (integer)

SQL Server 2000 中的一种数据类型分类，包括 bigint 、int 、smallint 和 tinyint 数据类型。

值表达式 (value expression)

返回一个值的多维表达式 (MDX) 表达式。值表达式可以在集合、元组、成员、级别、数字或字符串上操作。例如，集合值表达式在成员、元组和集合元素上操作以生成其它集合。

自动恢复 (automatic recovery)

每当 SQL Server 重新启动时发生的恢复。自动恢复在发生系统错误时对您的数据库提供保护。

直观合计 (visual total)

维度成员显示、聚合的单元值，它与其显示的子代的显示单元值一致。如果单元的某些子代隐藏，则单元的直观合计可以与实际合计不同。例如，如果聚合函数是 SUM，Spain 的显示单元值是 1000，而 Portugal 的显示单元值是 2000，那么 Iberia 的直观合计是 3000。

直接传递查询 (pass-through query)

不间断的传递给外部服务器以供评估的查询。由直接传递查询返回的结果集可以象普通的基表一样用于查询的 FROM 子句中。

直接传递语句 (pass-through statement)

直接传递给源数据库而没有修改或延迟的 SELECT 语句。在 PivotTable 服务中，PASSTHROUGH 选项是 INSERT INTO 语句的一部分。

直接对象 (direct object)

命名及物动词之后的人或物的名词（连同其修饰成分一起）。例如客户购买产品（产品即是直接对象）。

直接连接 (direct connect)

连接到后端数据库的状态，因而当保存关系图或选择其内项目时对数据库关系图所做的任何更改将自动更新数据库。

直接响应模式 (direct response mode)

SQL Server 统计收集与 SQL Server 统计显示分开的默认模式。数据对于 SQL Server 性能监视器立即可用，但是所显示统计滞后于所检索统计一段时期。

只进游标 (forward-only cursor)

不能滚动的游标；只能按照从第一行到最后一行的次序读取行。

知识库 (repository)

由 Analysis Services 使用的元数据的存储容器。元数据存储在关系数据库的表中，用于定义分析服务器对象的参数和属性。

知识库 (repository)

包含信息模型的数据库，这些信息模型与可执行软件一起管理该数据库。该术语也指 Meta Data Services 的一个安装。

知识库对象 (repository object)

代表存储在知识库类型库中的一种数据结构的 COM 对象。

知识库类型信息模型 (RTIM) (Repository Type Information Model (RTIM))

一种核心对象模型，代表 Meta Data Services 的知识库类型定义。该对象模型由信息模型的实例所基于的抽象类组成。

知识库 SQL 架构 (Repository SQL schema)

一组标准表，由知识库引擎用来管理所有的知识库对象、关系和集合。知识库 SQL 架构将信息模型元素映射到 SQL 架构元素。

知识库引擎 (repository engine)

面向对象的软件，提供对知识库数据库的管理支持和客户访问。

轴 (axis)

元组的集合。每个元组是成员的一个矢量。一组轴定义一个多维数据集的坐标。有关轴的更多信息，请参见 OLE DB 文档。

请参见： 切片, 元组

主表 (primary table)

一对多关系的两个相关表中的一方。主表应具有一个主键，且每个记录都应唯一。主表的一个例子是由 CustomerID 主键字段唯一标识的客户名的表。

主定义位置 (master definition site)

参见定义： 发布服务器

主动语态 (active voice)

表示句子的主语是执行动词所描述的操作的实体。例如，客户购买产品 为主动语态，而产品被客户买走 为被动语态。

请参见： 被动语态

主键 (PK) (primary key (PK))

唯一标识表中的所有行的一个列或一组列。主键不允许空值。不能存在具有相同的主键值的两个行，因此主键值总是唯一标识单个行。表中可以有不止一个键唯一标识行，每个键都称作候选键。只有一个候选键可以选作表的主键，所有其它候选键称作备用键。尽管表不要求具有主键，但定义主键是很好的做法。 在规范化的表中，每行中的所有数据值都完全依赖于主键。例如，在以 EmployeeID 作为主键的规范化的 employee 表中，所有列都应包含与某个特定职员相关的数据。该表不具有 DepartmentName 列，因为部门的名称依赖于部门 ID，而不是职员 ID。

主维度表 (primary dimension table)

数据仓库中的雪花架构中，与事实数据表直接相关并通常联接到事实数据表的维度表。完成维度定义的其它表联接到主维度表，而不联接到事实数据表。

请参见： 维度表, 雪花架构

主位置 (master site)

参见定义： 分发服务器

主文件 (master file)

随 SQL Server 的早期版本一起安装的文件，用于存储 master 、model 和 tempdb 系统数据库和事务日志以及 pubs 示例数据库和事务日志。

祖先 (ancestor)

维度层次结构中较高级别的成员，通过沿袭而与维度层次结构内的当前成员相关。例如，在包含 Quarter、Month 和 Day 级别的 Time 维度中，Qtr1 是 January 1 的祖先。

请参见： 父代, 子代, 后代, 兄弟

主语 (subject)

句子的一个基本语法部分。主语是一个名词或名词子句，是谓词（通常在主语后面）声称或询问的对象。例如，在句子 """"The employee placed the order""""（职员下订单）中，单词 employee 是句子的主语。

转储 (dump)

参见定义： 备份

转储文件 (dump file)

参见定义： 备份文件

转换 (transformation)

数据仓储中，将从数据源系统析取的数据更改为与数据仓库的架构一致的排列和格式的进程。

转义符 (escape character)

用于表示表达式中的另一个字符表示字面意义而不是运算符的字符。例如，在 SQL 中，字符 "%" 用作通配符，以表示 "该位置中任意个数的字符"。但是，如果希望搜索 "10%"（百分之十）之类的字符串，则不能只指定 "10%" 作为搜索字符串，因为 "%" 将解释为 "除 10 以外还有任意个数的字符"。通过指定转义符，可以标记 "%" 特指百分号的实例。例如，如果指定转义符 "#"，则可以指定搜索字符串 "10#%" 表示 "百分之十"。

专用维度 (private dimension)

为特定多维数据集创建并供其使用的维度。与共享维度不同，专用维度只对其所创建于的多维数据集可用。

请参见： 共享维度

专有名词 (proper noun)

英文中大写的名词；特定的名称（如 John Smith）。

子查询 (subquery)

嵌套在另一个 SELECT、INSERT、UPDATE 或 DELETE 语句或者另一个子查询内的 SELECT 语句。

子代 (child)

层次结构中紧邻的较低级别中的成员，与当前成员直接相关。例如，在包含 Quarter、Month 和 Day 级别的 Time 维度中，January 是 Qtr1 的一个子代。

请参见： Ancestor, 父代, 后代, 兄弟

字典条目 (dictionary entry)

English Query 字典中定义的词。可以通过 English Query 域编辑器向字典添加条目，方法是指定词、其词性以及一个可选的不规则形式。

自定义规则 (custom rule)

一种规范，用于限制一个角色中的用户所允许访问的维度成员或多维数据集单元。

请参见： 多维数据集角色, 数据库角色

自定义汇总 (custom rollup)

一种为维度级别或成员自定义的聚合计算，将替代多维数据集的度量值的聚合函数。

字段 (field)

存储单个数据值的窗口或记录中的某个区域。某些数据库（如 Microsoft Access）将字段用作列的同义词。

字段长度 (field length)

大容量复制中，代表大容量复制字符格式数据文件中的一个数据项目所需的最大字符个数。

字段终止符 (field terminator)

大容量复制中标记字段或行的末尾的一个或多个字符，它将数据文件中的字段或行彼此分隔开。

字符串 (string)

一组邻接的字节，包含单个基于字符的数据值或二进制数据值。在字符串中，每个字节或每对字节代表单个字母、特殊字符或数字。在二进制字符串中，整个值视作不具有任何固有模式的单个位流。例如，常量 'I am 32.' 是一个 8 个字节的字符串，而常量 0x0205efa3 是一个 4 个字节的二进制字符串。

字符串函数 (string functions)

在字符或二进制字符串上执行操作的函数。内置的字符串函数返回对字符数据进行操作通常所需的值。

字符集 (character set)

字符集决定了 SQL Server 在 char 、varchar 和 text 数据类型中识别的字符的类型。每个字符集都是一个国家/地区或语言所使用的 256 个字母、数字和符号的集合。前 128 个值的可打印字符对于所有的字符集是相同的。后 128 个字符（有时称作扩展字符）是每个字符集所独有的。字符集与 Unicode 字符相关，但独立于 Unicode 字符。

字符格式 (character format)

使用文字字符存储在大容量复制数据文件中的数据。

请参见： 本机格式

子集 (subset)

表及表之间的关系线的一个选集，它是大型数据库关系图的一部分。该选集可以复制到新的数据库关系图中。这称作对关系图划分子集。

子集句式 (subset phrasing)

以英文表达关系的一种方式，该关系中一个实体或单词是另一个实体的子集。例如，在句子 """"Some mountains are volcanoes""""（一些山是火山）中，volcanoes（火山）是 mountains（山）的子集。

子句 (clause)

在 English Query 中，句子内相关词组成的序列，具有主语和谓词，并作为独立或非独立单元使用。在 Transact-SQL 中，SQL 语句的子单元。子句以关键字开始。

自联接 (self-join)

当联接的字段中有匹配的值时来自一个表的记录与来自同一个表的其它记录组合的联接。自联接可以是内联接或外联接。在数据库关系图中，自联接称为自反关系。

字生成 (word generation)

确定指定的一个（或一些）词的其它形式的进程。Microsoft 搜索服务目前已实现通过词尾变化来生成单词。例如，如果指定单词 swim ，则 SQL Server 也搜索 swim 、swam 和 swimming 。

组合键 (composite key)

由两个或多个列组成的键。

组合索引 (composite index)

使用表中的不止一个列对数据进行索引的索引。

组件对象模型 (COM) (Component Object Model (COM))

用于开发组件软件的一种 Microsoft 规范。一些 SQL Server 和数据库应用程序接口 (API) 即基于 COM，如 SQL-DMO、OLE DB 和 ADO。某些 SQL Server 组件（如 Analysis Services 和 English Query）将对象存储为 COM 对象。

请参见： 方法

钻取 (drill through)

检索详细数据，多维数据集单元中的数据根据它们进行汇总。

最高级 (superlative form)

英文中副词或形容词的一种形式，表示一种比较或最高程度。较短的形容词和一些副词通常通过添加 -est 来构成其最高级，如“youngest”或“strongest”。

左向外联接 (left outer join)

外联接的一个类型，在该联接中包括 JOIN 子句中的最左边的表的所有行。当右表中的行与左表中的行不匹配时，对来自右表的所有结果集列赋以 NULL 值。

作业 (job)

由 SQL Server 代理连续执行的指定的一系列操作（称为步骤）。

符号

“全部”成员 (All member)

“（全部）”级别的单个成员。在默认情况下，“全部”成员的名称由单词 All 后接一个空格再加上维度的名称构成。

请参见： 默认成员

“（全部）”级别 ((All) level)

维度的可选最高级别。“（全部）”级别包含单一成员，该成员是直接从属级别的所有成员的汇总。


(All) level | “（全部）”级别
action | 操作
active statement | 活动语句
active voice | 主动语态
ActiveX Data Objects | ActiveX 数据对象
ActiveX Data Objects (Multidimensional) (ADO MD) | ActiveX 数据对象（多维）(ADO MD)
ad hoc connector name | 特殊连接器名称
add-in | 加载项
adjective phrasing | 形容词句式
ADO | ADO
ADO MD | ADO MD
adverb | 副词
aggregate function | 聚合函数
aggregate query | 聚合查询
aggregation | 聚合
aggregation prefix | 聚合前缀
aggregation wrapper | 聚合包装
alert | 警报
alias | 别名
aliasing | 命名别名
All member | “全部”成员
American National Standards Institute (ANSI) | 美国国家标准学会 (ANSI)
Analysis server | 分析服务器
ancestor | Ancestor
annotational property | 批注属性
anonymous subscription | 匿名订阅
ANSI | ANSI
ANSI to OEM conversion | ANSI 到 OEM 转换
API | API
API server cursor | API 服务器游标
application programming interface (API) | 应用程序接口 (API)
application role | 应用程序角色
archive file | 存档文件
article | 项目
atomic | 原子的
attribute | 特性
authentication | 身份验证
authorization | 授权
automatic recovery | 自动恢复
autonomy | 独立
axis | 轴
backup | 备份
backup device | 备份设备
backup file | 备份文件
backup media | 备份媒体
backup set | 备份集
balanced hierarchy | 均衡层次结构
base data type | 基本数据类型
base table | 基表
batch | 批处理
bcp files | bcp 文件
bcp utility | bcp 实用工具
bigint data type | bigint 数据类型
binary data type | binary 数据类型
binary large object | 二进制大对象
binding | 绑定
bit data type | bit 数据类型
bitwise operation | 按位运算
BLOB | BLOB
blocks | 块
Boolean | 布尔型
browse mode | 浏览模式
built-in functions | 内置函数
business rules | 业务规则
cache aging | 高速缓存老化数据清除
calculated column | 计算列
calculated field | 计算字段
calculated member | 计算成员
calculation condition | 计算条件
calculation formula | 计算公式
calculation pass | 计算传递
calculation subcube | 计算子多维数据集
call-level interface (CLI) | 调用级接口 (CLI)
candidate key | 候选键
cascading delete | 级联删除
cascading update | 级联更新
case | 事例
case key | 事例键
case set | 事例集
cell | 单元
cellset | 单元集
certificate | 证书
change script | 更改脚本
changing dimension | 可更改维度
char data type | char 数据类型
character format | 字符格式
character set | 字符集
CHECK constraints | CHECK 约束
checkpoint | 检查点
child | 子代
classification | 分类
clause | 子句
CLI | CLI
client application | 客户端应用程序
client cursor | 客户端游标
clustered index | 聚集索引
clustering | 聚集
code page | 代码页
collation | 排序规则
column | 列
column filter | 列筛选
column-level collation | 列级排序规则
column-level constraint | 列级约束
COM | COM
command relationship | 命令关系
commit | 提交
comparative form | 比较级
Component Object Model (COM) | 组件对象模型 (COM)
composite index | 组合索引
composite key | 组合键
computed column | 计算列
COM-structured storage file | COM 结构化存储文件
concatenation | 串联
concurrency | 并发
conjunction | 连词
connection | 连接
constant | 常量
constraint | 约束
continuation media | 延续媒体
control-break report | 控制中断报表
control-of-flow language | 控制流语言
correlated subquery | 相关子查询
CPU busy | CPU 忙
crosstab query | 交叉表查询
cube | 多维数据集
cube file | 多维数据集文件
cube role | 多维数据集角色
cursor | 游标
cursor data type | cursor 数据类型
cursor library | 游标库
custom rollup | 自定义汇总
custom rule | 自定义规则
data block | 数据块
data connection | 数据连接
Data Control Language (DCL) | 数据控制语言 (DCL)
data definition | 数据定义
data definition language (DDL) | 数据定义语言 (DDL)
data dictionary | 数据字典
data dictionary view | 数据字典视图
data explosion | 数据爆炸
data file | 数据文件
data integrity | 数据完整性
data lineage | 数据沿袭
data manipulation language (DML) | 数据操作语言 (DML)
data mart | 数据集市
data member | 数据成员
data modification | 数据修改
data pump | 数据抽取
data scrubbing | 数据清理
data source | 数据源
data source name (DSN) | 数据源名称 (DSN)
data type | 数据类型
data warehouse | 数据仓库
database | 数据库
database catalog | 数据库目录
database diagram | 数据关系图
database file | 数据库文件
database language | 数据库语言
database object | 数据库对象
database owner | 数据库所有者
database project | 数据库工程
database role | 数据库角色
database schema | 数据库架构
database script | 数据库脚本
data-definition query | 数据定义查询
dataset | 数据集
datetime data type | datetime 数据类型
DBCS | DBCS
DCL | DCL
DDL | DDL
deadlock | 死锁
decimal data type | decimal 数据类型
decision support | 决策支持
decision tree | 决策树
declarative referential integrity (DRI) | 声明引用完整性 (DRI)
default | 默认值
DEFAULT constraint | 默认约束
default database | 默认数据库
default instance | 默认实例
default language | 默认语言
default member | 默认成员
default result set | 默认结果集
Delete query | 删除查询
delimiter | 分隔符
denormalize | 使非规范化
density | 密度
deny | 拒绝
dependencies | 相关性
descendant | 后代
destination object | 目的对象
device | 设备
dictionary entry | 字典条目
differential database backup | 差异数据库备份
dimension | 维度
dimension hierarchy | 维度层次结构
dimension table | 维度表
direct connect | 直接连接
direct object | 直接对象
direct response mode | 直接响应模式
dirty pages | 脏页
dirty read | 脏读
distribute | 分发
distributed query | 分布式查询
distribution database | 分发数据库
distribution retention period | 分发保持期
Distributor | 分发服务器
DML | DML
domain | 域
domain integrity | 域完整性
double-byte character set (DBCS) | 双字节字符集 (DBCS)
DRI | DRI
drill down/drill up | 深化/浅化
drill through | 钻取
DSN | DSN
DSN-less connection | 无 DSN 连接
DTS package | DTS 包
DTS package template | DTS 包模板
dump | 转储
dump file | 转储文件
dynamic cursor | 动态游标
dynamic filter | 动态筛选
dynamic locking | 动态锁定
dynamic recovery | 动态恢复
dynamic snapshot | 动态快照
dynamic SQL statements | 动态 SQL 语句
encrypted trigger | 加密触发器
encryption | 加密
English Query | English Query
English Query application | English Query 应用程序
entity | 实体
entity integrity | 实体完整性
enumeration | 枚举
equijoin | 同等联接
error log | 错误日志
error state number | 错误状态号
escape character | 转义符
exclusive lock | 排它锁
explicit transaction | 显式事务
expression | 表达式
extended stored procedure | 扩展存储过程
extent | 扩展
fact | 事实
fact table | 事实数据表
Federal Information Processing Standard (FIPS) | 联邦信息处理标准 (FIPS)
fetch | 提取
field | 字段
field length | 字段长度
field terminator | 字段终止符
file | 文件
file DSN | 文件 DSN
file storage type | 文件存储类型
filegroup | 文件组
fill factor | 填充因子
filter | 筛选
filtering | 筛选
FIPS | FIPS
firehose cursor | 流水游标
firehose cursors | 流水游标
fixed database role | 固定数据库角色
fixed server role | 固定服务器角色
FK | FK
flattened interface | 平展界面
flattened rowset | 平展行集
float data type | float 数据类型
foreign key (FK) | 外键 (FK)
foreign table | 外表
forward-only cursor | 只进游标
fragmentation | 碎片
full outer join | 完整外部联接
full-text catalog | 全文目录
full-text enabling | 全文启用
full-text index | 全文索引
full-text query | 全文查询
full-text service | 全文服务
function | 函数
global default | 全局默认值
global properties | 全局属性
global rule | 全局规则
global subscriptions | 全局订阅
global variable | 全局变量
grant | 授权
granularity | 粒度
guest | 来宾
heterogeneous data | 异类数据
hierarchy | 层次结构
HOLAP | HOLAP
homogeneous data | 同类数据
hop | 跃点
horizontal partitioning | 水平分区
HTML | HTML
huge dimension | 巨型维度
hybrid OLAP (HOLAP) | 混合 OLAP (HOLAP)
Hypertext Markup Language (HTML) | 超文本标记语言 (HTML)
identifier | 标识符
identity column | 标识列
identity property | 标识属性
idle time | 空闲时间
IEC | IEC
image data type | image 数据类型
immediate updating | 即时更新
immediate updating Subscribers | 即时更新订阅服务器
immediate updating subscriptions | 即时更新订阅
implicit transaction | 隐性事务
implied permission | 暗示性权限
incremental update | 增量更新
index | 索引
index ORing | 索引 OR 运算
index page | 索引页
indirect object | 间接宾语
information model | 信息模型
initial media | 初始媒体
initial snapshot | 初始快照
inner join | 内联接
input member | 输入成员
input set | 输入集
input source | 输入源
insensitive cursor | 不感知游标
Insert query | 插入查询
Insert Values query | 插入值查询
instance | 实例
int (integer) data type | int (integer) 数据类型
integer | 整型
integrated security | 集成安全性
integrity constraint | 完整性约束
intent lock | 意向锁
interactive structured query language (ISQL) | 交互式结构化查询语言 (ISQL)
interface | 接口
interface implication | 接口含义
internal identifier | 内部标识符
International Electrotechnical Commission (IEC) | 国际电子技术委员会 (IEC)
International Organization for Standardization (ISO) | 国际标准化组织 (ISO)
Internet-enabled | 可支持 Internet 的
interprocess communication (IPC) | 进程间通讯 (IPC)
IPC | IPC
irregular form | 不规则形式
irregular form type | 不规则形式类型
irregular noun | 不规则名词
irregular verb | 不规则动词
ISO | ISO
isolation level | 隔离级别
ISQL | ISQL
job | 作业
join | 联接
join column | 联接列
join condition | 联接条件
join field | 联接字段
join filter | 联接筛选
join operator | 联接运算符
join path | 联接路径
join table | 联接表
junction table | 连接表
kernel | 核心
key | 键
key column | 键列
key range lock | 键范围锁
keyset-driven cursor | 键集驱动游标
keyword | 关键字
large level | 大级别
latency | 延迟
LCID | LCID
leaf | 叶
leaf level | 叶级
leaf member | 叶成员
left outer join | 左向外联接
level | 级别
level hierarchy | 级别层次结构
library | 库
linked cube | 链接多维数据集
linked server | 链接服务器
linked table | 链接表
linking table | 链接表
livelock | 活锁
local cube | 本地多维数据集
local Distributor | 本地分发服务器
local group | 本地组
local login identification | 本地登录标识
local server | 本地服务器
local subscription | 本地订阅
local variable | 局部变量
locale | 区域设置
locale identifier (LCID) | 区域设置标识符 (LCID)
lock | 锁
lock escalation | 锁升级
log file | 日志文件
logical name | 逻辑名称
logical operators | 逻辑运算符
login (account) | 登录（帐户）
login security mode | 登录安全模式
lookup table | 查找表
machine DSN | 机器 DSN
Make Table query | 生成表查询
many-to-many relationship | 多对多关系
many-to-one relationship | 多对一关系
MAPI | MAPI
master database | master 数据库
master definition site | 主定义位置
master file | 主文件
master site | 主位置
MDX | MDX
measure | 度量值
measurement | 度量
media description | 媒体描述
media family | 媒体家族
media header | 媒体首部
media name | 媒体名称
media set | 媒体集
member | 成员
member delegation | 成员委派
member group | 成员组
member key column | 成员键列
member name column | 成员名列
member property | 成员属性
member variable | 成员变量
memo | 备注
merge | 合并
merge replication | 合并复制
message number | 消息编号
Messaging Application Programming Interface (MAPI) | 消息应用程序接口 (MAPI)
meta data | 元数据
method | 方法
mining model | 挖掘模型
mining model training | 挖掘模型培训
mirroring | 镜像
Mixed Mode | 混合模式
model | 模型
model database | model 数据库
model dependency | 模型相关性
module | 模块
modulo | 取模
MOLAP | MOLAP
money data type | money 数据类型
Multidimensional Expressions (MDX) | 多维表达式 (MDX)
multidimensional OLAP (MOLAP) | 多维 OLAP (MOLAP)
multidimensional structure | 多维结构
multiple inheritance | 多重继承
multiple instances | 多实例
multithreaded server application | 多线程服务器应用程序
multiuser | 多用户
name phrasing | 名称句式
named instance | 命名实例
named pipe | 命名管道
named set | 命名集
naming relationship | 命名关系
native format | 本机格式
nchar data type | nchar 数据类型
nested query | 嵌套查询
nested table | 嵌套表
Net-Library | Net-Library
nickname | 别名
niladic functions | niladic 函数
noise word | 干扰词
nonclustered index | 非聚集索引
nonleaf | 非叶
nonleaf member | 非叶成员
nonrepeatable read | 不可重复读取
normalization rules | 规范化规则
noun | 名词
ntext data type | ntext 数据类型
NULL | NULL
nullability | 为空性
numeric expression | 数值表达式
nvarchar data type | nvarchar 数据类型
object | 对象
object dependencies | 对象相关性
object identifier | 对象标识符
object owner | 对象所有者
object permission | 对象权限
object variable | 对象变量
ODBC | ODBC
ODBC data source | ODBC 数据源
ODBC driver | ODBC 驱动程序
ODS | ODS
OIM | OIM
OLAP | OLAP
OLE Automation controller | OLE 自动化控制器
OLE Automation objects | OLE 自动化对象
OLE Automation server | OLE 自动化服务器
OLE DB | OLE DB
OLE DB consumer | OLE DB 使用者
OLE DB for OLAP | 用于 OLAP 的 OLE DB
OLE DB provider | OLE DB? 提供程序
OLTP | OLTP
one-to-many relationship | 一对多关系
one-to-one relationship | 一对一关系
online analytical processing (OLAP) | 联机分析处理 (OLAP)
online redo log | 联机重做日志
online transaction processing (OLTP) | 联机事务处理 (OLTP)
Open Data Services (ODS) | 开放式数据服务 (ODS)
Open Database Connectivity (ODBC) | 开放式数据库连接 (ODBC)
Open Information Model (OIM) | 开放信息模型 (OIM)
optimize synchronization | 优化同步
optimizer | 优化程序
ordered set | 有序集
origin object | 起始对象
outer join | 外联接
overfitting | 过适
page | 页
page split | 页拆分
parent | 父代
partition | 分区
partitioning | 分区
parts of speech | 词性
pass order | 传递顺序
passive voice | 被动语态
pass-through query | 直接传递查询
pass-through statement | 直接传递语句
persistence | 持续性
phantom | 幻像
phrase | 短语
phrasing | 句式
physical name | 物理名称
physical reads | 物理读取
pivot | 数据透视
PK | PK
position | 位置
positioned update | 定位更新
possessive case | 所有格
precision | 精度
predicate | 谓词
prediction | 预测
prefix characters | 前缀字符
prefix length | 前缀长度
prefix search | 前缀搜索
preposition | 介词
preposition phrasing | 介词句式
primary dimension table | 主维度表
primary key (PK) | 主键 (PK)
primary table | 主表
private dimension | 专用维度
procedure cache | 过程缓存
process | 处理
producer | 发生器
project | 工程
pronoun | 代词
proper noun | 专有名词
property | 属性
property pages | 属性页
provider | 提供程序
proximity search | 近似搜索
publication | 发布
publication database | 发布数据库
publication retention period | 发布保持期
published data | 已发布数据
Publisher | 发布服务器
publishing server | 发布服务器
publishing table | 发布表
pubs database | pubs 数据库
pull subscription | 请求订阅
push subscription | 强制订阅
query optimizer | 查询优化器
question | 问题
Question Builder | 问题生成器
question file (.eqq) | 问题文件 (.eqq)
question template | 问题模板
queue | 队列
ragged hierarchy | 不齐整层次结构
range query | 范围查询
rank | 级
RDBMS | RDBMS
real data type | real 数据类型
record | 记录
recordset | 记录集
recovery interval | 恢复间歇
recursive partitioning | 递归分区
redo log file | 恢复日志文件
referenced key | 引用键
referencing key | 参照键
referential integrity (RI) | 引用完整性 (RI)
reflexive relationship | 反身关系
refresh data | 刷新数据
regular cube | 常规多维数据集
regular dimension | 常规维度
relational database | 关系数据库
relational database management system (RDBMS) | 关系数据库管理系统 (RDBMS)
relational OLAP (ROLAP) | 关系 OLAP (ROLAP)
relationship | 关系
relationship object | 关系对象
relationship type | 关系类型
remote data | 远程数据
remote Distributor | 远程分发服务器
remote login identification | 远程登录标识
remote partition | 远程分区
remote server | 远程服务器
remote stored procedure | 远程存储过程
remote table | 远程表
replicated data | 复制的数据
replication | 复制
Replication Conflict Viewer | 复制冲突查看器
Replication Monitor | 复制监视器
replication scripting | 编写复制脚本
replication topology | 复制拓扑
repository | 知识库
repository engine | 知识库引擎
repository object | 知识库对象
Repository SQL schema | 知识库 SQL 架构
Repository Type Information Model (RTIM) | 知识库类型信息模型 (RTIM)
republish | 再次发布
republisher | 再次发布者
resolution strategy | 冲突解决策略
restatement | 复述
result | 结果
result set | 结果集
return parameters | 返回参数
reusable bookmark | 可再次使用的书签
revoke | 废除
RI | RI
right outer join | 右向外联接
ROLAP | ROLAP
role | 角色
roll back | 回滚
roll forward | 前滚
root form | 原形
row | 行
row aggregate function | 行聚合函数
row filter | 行筛选
row lock | 行锁
rowset | 行集
RTIM | RTIM
rule | 规则
sample data | 示例数据
savepoint | 保存点
scalar aggregate | 标量聚合
scheduled backup | 已调度备份
schema | 架构
schema rowset | 架构行集
script | 脚本
scroll | 滚动
search condition | 搜索条件
Security Identifier (SID) | 安全标识号 (SID)
segmentation | 分段
SELECT | SELECT
select list | 选择列表
Select query | 选择查询
self-join | 自联接
semantic object | 语义对象
semiadditive measure | 半加法度量
sensitive cursor | 感知游标
sequence | 序列
sequenced collection | 顺序集合
sequenced relationship | 顺序关系
serializable | 可串行
server cursor | 服务器游标
server name | 服务器名称
session | 会话
Setup initialization file | 安装程序初始化文件
severity level | 严重级别
shared dimension | 共享维度
shared lock | 共享锁
Showplan | 显示计划
sibling | 兄弟
SID | SID
single-user mode | 单用户模式
slice | 切片
smalldatetime data type | smalldatetime 数据类型
smallint data type | smallint 数据类型
smallmoney data type | smallmoney 数据类型
Snapshot Agent | 快照代理程序
Snapshot Agent utility | 快照代理程序实用工具
snapshot cursor | 快照游标
snapshot replication | 快照复制
snowflake schema | 雪花架构
solve order | 求解次序
sort order | 排序次序
source and target | 源和目标
source cube | 源多维数据集
source database | 源数据库
source object | 源对象
source partition | 源分区
sparsity | 稀疏度
SQL | SQL
SQL collation | SQL 排序规则
SQL database | SQL 数据库
SQL expression | SQL 表达式
SQL Mail | SQL 邮件
SQL query | SQL 查询
SQL Server Authentication | SQL Server 身份验证
SQL Server Event Forwarding Server | SQL Server 事件转发服务器
SQL Server login | SQL Server 登录
SQL Server role | SQL Server 角色
SQL Server user | SQL Server 用户
SQL statement | SQL 语句
sql_variant data type | sql_variant 数据类型
SQL-92 | SQL-92
standard security | 标准安全机制
star join | 星型联接
star schema | 星型架构
statement permission | 语句权限
static cursor | 静态游标
static SQL statements | 静态 SQL 语句
step object | 步骤对象
store-and-forward database | 保存与转发数据库
stored procedure | 存储过程
string | 字符串
string functions | 字符串函数
Structured Query Language (SQL) | 结构化查询语言 (SQL)
structured storage file | 结构化存储文件
subject | 主语
subquery | 子查询
subscribe | 订阅
Subscriber | 订阅服务器
subscribing server | 订阅服务器
subscription | 订阅
subscription database | 订阅数据库
subset | 子集
subset phrasing | 子集句式
superlative form | 最高级
synchronization | 同步
synonym | 同义词
system administrator | 系统管理员
system catalog | 系统目录
system databases | 系统数据库
system functions | 系统函数
system stored procedures | 系统存储过程
system tables | 系统表
table | 表
table data type | table 数据类型
table lock | 表锁
table scan | 表扫描
table-level constraint | 表级约束
tabular data stream (TDS) | 表格格式数据流 (TDS)
tape backup | 磁带备份
target object | 目标对象
target partition | 目标分区
task | 任务
task object | 任务对象
TDS | TDS
tempdb database | tempdb 数据库
temporary stored procedure | 临时存储过程
temporary table | 临时表
text data type | text 数据类型
theta join | theta 联接
thread | 线程
time dimension | 时间维度
timestamp data type | timestamp 数据类型
tinyint data type | tinyint 数据类型
tool | 工具
trace file | 跟踪文件
training data set | 培训数据集
trait | 特征
trait phrasing | 特征句式
transaction | 事务
transaction log | 事务日志
transaction processing | 事务处理
transaction rollback | 事务回滚
transactional replication | 事务复制
Transact-SQL | Transact-SQL
Transact-SQL cursor | Transact-SQL 游标
transformable subscription | 可转换订阅
transformation | 转换
trigger | 触发器
trusted connection | 信任连接
tuple | 元组
two-phase commit | 两相提交
unbalanced hierarchy | 不均衡层次结构
underlying table | 基础表
unenforced relationship | 未强制关系
Unicode | Unicode
Unicode collation | Unicode 排序规则
Unicode format | Unicode 格式
Union query | 联合查询
UNIQUE constraints | UNIQUE 约束
unique index | 唯一索引
uniqueidentifier data type | uniqueidentifier 数据类型
update | 更新
update lock | 更新锁
Update query | 更新查询
update statistics | 更新统计
user (account) | 用户（帐户）
user database | 用户数据库
user-defined data type | 用户定义的数据类型
user-defined event | 用户定义事件
user-defined function | 用户定义函数
utility | 实用工具
value expression | 值表达式
varbinary data type | varbinary 数据类型
varchar data type | varchar 数据类型
variables | 变量
verb | 动词
verb phrasing | 动词句式
vertical filtering | 垂直筛选
vertical partitioning | 垂直分区
very large dimension | 超大型维度
view | 视图
view generation | 视图生成
virtual cube | 虚拟多维数据集
virtual dimension | 虚拟维度
visual total | 直观合计
WHERE clause | WHERE 子句
wildcard characters | 通配符字符
wildcard search | 通配符搜索
Windows Authentication | Windows 身份验证
Windows collation | Windows 排序规则
word generation | 字生成
write back | 回写
write enable | 写启用
write-ahead log | 预写日志