SQL Server 2000 与 SQL Server 7.0 版兼容性问题
 
Microsoft® SQL Server™ 2000 与 SQL Server 7.0 在大多数方面是兼容的。本文描述从 SQL Server 7.0 升级到SQL Server 2000 时的向后兼容性问题:

客户端网络实用工具和命名实例

当使用来自 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_configure。

恢复模型和数据库选项

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)中不会发生上述问题。