INF: 更改为 SQL Server 6.5 影响 6.0 的应用程序

文章翻译 文章翻译
文章编号: 152032 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

概要

本文包含对 Microsoft SQL Server 6.5 版可能会影响您现有的 SQL Server 版本 6.0 应用程序所做的更改的列表。

内容:
  1. 系统表更改
  2. 系统存储过程更改和更改格式
  3. 新的默认安装
  4. 关键字
  5. FROM 子句和表名称
  6. DISTINCT SELECT 与 ORDER BY
  7. 创建外键所需的参考资源权限
  8. SELECT INTO 或 CREATE VIEW 没有列名称
  9. RAISERROR 集 @ @ ERROR 为 0,如果严重级别为 10 个或更少
  10. 启动过程: sp_sqlregister
  11. 仅向前型游标默认,动态游标以
  12. 缓存是在存储过程的游标计划
  13. 新的服务: MSDTC
  14. 在 $ 完成上的 EXECUTE 复位中 USE 语句
  15. ODBC 驱动程序设置
  16. JOIN 语法和跟踪标记 204
  17. 在事务中创建的对象
  18. SELECT INTO 现在是原子操作
  19. 截止到较大的数据包大小缩减 ISQL/W 连接
  20. 不允许在 CHECK 和默认约束中的全局变量
  21. 联机图书: 新的查看器
  22. VBSQL.ocx 替换 VBSQL.vbx
  23. 已删除的图形显示计划
  24. 扩展存储的过程
  25. 将来的注意事项

更多信息

1.系统表更改

已对系统表所做的某些更改: 已添加新列、 已更改的含义或某些列中的内容,和已添加了一些新的系统表。有关详细的信息请参阅 SQL Server 6.5 联机丛书,新增的 SQL Server 6.5 部件 4: 什么是新建的 TRANSACT-SQL。

2.系统存储过程更改和更改格式

没有对系统存储过程的多个更改。在许多情况下该功能已被扩展以包含 SQL Server 6.5 版的新功能。在某些种情况下的输出格式已经过修改,可以提供更清晰的演示文稿信息。有关详细的信息请参阅 SQL Server 6.5 联机丛书,新增的 SQL Server 6.5 部件 4: 什么是新建的 TRANSACT-SQL。

3.新的默认安装

在新安装默认根目录是 MSSQL 而不是 SQL60 (与 6.0) 中的或 SQL (如在 4.2 x)。当您升级 4.2 x 或 6.0 安装时, 将保留现有的目录名称。

4.关键字

下面的单词保留 SQL Server 6.0 中的是 SQL Server 6.5 中的关键字:
   AUTHORIZATION     FULL      OUTER          SCHEMA
   CASCADE           INNER     PRIVILEGES     WORK
   CROSS             JOIN      RESTRICT
   ESCAPE            LEFT      RIGHT
				

单词 DISTRIBUTED 也是 SQL Server 6.5 中的新关键字。

所有数据库对象会自动都检查通过运行 ChkUpg65.exe 与这些新的关键字冲突。

5.FROM 子句和表名称

在 SQL Server 6.5 时冗余的表名出现在 FROM 子句中报告错误。例如对于早期版本中支持下面给出的 SELECT 语句,但 SQL Server 6.5 中产生错误。在第一个 SELECT 语句中表被视为两个不同的表。在第二个 SELECT 语句中第二个作者的引用将被丢弃。
   SELECT * FROM pubs..authors, pubs.dbo.authors
   SELECT * FROM authors, authors
				

以前,SQL Server 使用字符串比较来确定是否两个表名称标识在同一个表。例如,pubs.dbo.authors 和 pubs创作者都被认为是不同的表。现在如果两个表名称不相同,则将数据库 id 和表 id 进行比较以确定它们是同一个表。以前更新语句 SQL Server 将只需查找匹配的非限定的列名的 FROM 子句中的第一个表,并假设这是在表中用户意味着。现在这种类型的查询将导致错误,因为它是不能确定应更新哪个表。跟踪标志 110 将禁用所有这些更改。

6 DISTINCT.选择使用 ORDER BY

以前版本的 SQL Server 允许包含未选择列表中的排序列在 ORDER BY 子句的 SELECT DISTINCT 查询。例如:
   SELECT DISTINCT au_id FROM authors ORDER BY au_lname
				

SQL Server 6.5 符合 ANSI 常用,从而导致错误 145:
如果指定了 DISTINCT SELECT 排序依据的项目必须出现在选择列表中。

跟踪标志 204 使旧的、 非 ANSI 行为 (以及其他非 ANSI 行为,涉及从 SQL Server 6.0 等的子查询)。

7.参考创建外键所需的权限

在 SQL Server 6.5 如果您不拥有的表创建一个外键必须在表上具有参考权限 ; 这符合 ANSI 标准。SQL Server 6.0 中,仅有 SELECT 权限需要引用的表上。跟踪标志 237 使旧行为。

8.SELECT INTO 或 CREATE VIEW 没有列名称

在 SQL Server 6.5 版,如果没有列名称给出由 SELECT INTO 或创建视图的语句创建的列,就会出错。例如对于 CREATE VIEW testview AS SELECT au_id,upper(au_lname) FROM 作者导致错误消息 4511:
创建失败,因为没有列名称指定为第 2 列的视图。
应为第二列指定一个列别名。

SQL Server 6.0 允许这样 ; 跟踪标志 246 使旧行为。

9.RAISERROR 集 @ @ ERROR 到严重性为十或小于零

RAISERROR 语句现在: 将 @ @ ERROR 设置为零,如果是介于 1 和 10 (含) 之间的严重程度 (邮件具有严重级别 10 并在不是错误,但它们提供的其他信息)。如果使用 WITH SETERROR 选项设置该 msg_id RAISERROR 语句赋予该 msg_id @ @ ERROR 的严重性而不考虑。

SQL Server 6.0 版,在 @ @ ERROR 设置为 50,000 的消息的严重级别 10 个和下。

若要恢复到 SQL Server 6.0 版行为,使用 $ SETERROR 选项或跟踪标记 2701年。

10.启动过程: sp_sqlregister

SQL Server 6.5 中该存储的过程 sp_sqlregister 安装为默认启动过程。在启动,sp_sqlregister 从操作系统、 网络和 SQL Server,收集基本配置信息,然后广播 SQL Server 的展示形式在网络上。执行 xp_sqlinventory 任何服务器可以向表中收集信息。若要删除作为启动存储过程的 sp_sqlregister 运行存储的过程 sp_unmakestartup。

11.仅向前型游标默认,动态游标以

在 SQL Server 6.5 仅向前型游标是动态默认,允许更快的游标打开且还通过结果设置为显示对基础表所做的更新。动态游标 6.5 版中快,并且不再需要唯一的索引。

跟踪标志 7501 禁用动态游标增强功能,并回复到 6.0 版行为。

12.计划游标的存储过程上都缓存

SQL Server 6.5 缓存的某些扩展存储过程的游标计划 ; 这提供了许多游标操作的性能改进。 但是它还将使用过程高速缓存以容纳这些计划可能会影响应用程序的缓存行为 (和性能)。跟踪标志 7502 禁用此缓存的游标计划。

13.新的服务: MSDTC

SQL Server 6.5 安装一个新的服务。MSDTC 服务是分布式事务处理协调器提供跨服务器事务功能 (自动两阶段提交)。通常情况下 MSDTC 服务应该不会影响现有的应用程序 (而不是在自动事务的一致性),但是,它需要一些内存和一些的处理时间使它可能会影响现有的应用程序。如果不需要它的功能,可以停止该服务。

14 在 $ 完成上的 EXECUTE 复位在.USE 语句

在 SQL Server 6.5 EXECUTEing 一个字符串,该字符串包含一个 USE 语句完成时"当前数据库"将自动被重置为在 EXECUTE 之前使用该数据库。SQL Server 6.0 中设置在"当前数据库"保持在 EXECUTE 后。

若要可作为 SQL Server 6.0 中相同的行为应使用的数据库中执行的每个语句必须执行字符串的形式使用 USE 语句前它。下面的批处理会输出 pubs SQL Server 6.0 中的 ; 在 SQL Server 6.5 中它将输出"母版:"
   GO
   USE master
   GO
   DECLARE @mydb VARCHAR(30)
   SELECT @mydb = 'pubs'
   EXECUTE('USE ' + @mydb)
   go
   SELECT db_name()
   go
				

若要获取 SQL Server 6.0 行为中 SQL Server 6.5,应使用以下批处理:
   GO
   USE master
   GO
   DECLARE @mydb VARCHAR(30)
   SELECT @mydb = 'pubs'
   EXECUTE('USE ' + @mydb + 'SELECT db_name()')
   go
				

该批处理执行 SELECT 中使用的数据库,但返回 master 数据库完成时。

15.ODBC 驱动程序设置

Microsoft 知识库文章 149921 讨论一些 Microsoft SQL Server 2.65.0201 ODBC 驱动程序可能会影响应用程序中的 ANSI 设置更改。通常,是所有引起这些强制 ANSI 法规遵从性的下列 SET 选项:
   SET TEXTSIZE 2147483647
   SET ANSI_DEFAULTS ON
   SET CURSOR_CLOSE_ON_COMMIT OFF
   SET IMPLICIT_TRANSACTIONS OFF
				

16.JOIN 语法和跟踪标记 204

尽管外部联接运算符 * = 和 = * 从早期版本的 SQL Server 支持,您不能在同一查询中使用外部联接运算符和 ANSI SQL 联接的样式表。

启用了跟踪标志 204,将允许仅从 SQL Server 版本 6.0 和早期的 SELECT 语句语法 ; 不允许使用联接的表、 派生的表和其他 ANSI 功能。

17.在事务中创建的对象

SQL Server 6.5 允许在事务内创建的对象。这些操作受保护的标准事务规则和可能被提交或回滚回在必要时。但是,创建在事务中的对象会导致以创建事务提交或回滚之前将其保留在数据库中的系统表上的锁。使用警告: 当您创建一个事务内的对象 ; 这包括将 tempdb 数据库中的临时对象的创建。

18.SELECT-INTO 现在是原子操作

SELECT INTO 现在是一个原子操作,如果在事务内的 SELECT INTO,或整个事务的持续时间持有排它锁 sysindexes、 系统对象,和 syscolumns。

19 截止到较大的数据包大小缩减.ISQL/W 连接

ISQL/w Win16 客户端上的连接数被受影响的 SQL Server 网络数据包大小配置值。越小,网络数据包大小 (最小 512 字节),多同时连接,网络数据包大小就越大,更多的系统资源上使用,因此您可以使从同一 db-library 客户端在 Windows 3.x 客户端。如果网络数据包大小,在服务器端被配置成 512,您应能够使您可以从同一客户端 SQL Server 6.0 中相同数目的连接。有关详细的信息,请参阅 Microsoft 知识库文章 150909"INF: SQL Server 6.5 Win16 客户端的连接数"

20.全局变量不允许在 CHECK 和默认约束

在 $ CHECK 或默认约束 (在 CREATE TABLE 或 ALTER TABLE 语句) 中,不能使用全局变量 (如 @ @ SPID 等)。 这有永远不会被记录为一个有效的选项,现在被标记为生成错误 112 的无效语法:
CREATE TABLE 语句中不允许使用变量。

内置函数继续在约束中工作。

21.联机图书: 新的查看器

若要查看该文本,而不是以前使用的 MSIN32.exe SQL Server 6.5 联机丛书使用 InfoView.exe 程序。

SQL Server 没有被安装为阅读丛书联机 ; 它们可以通过执行下列独立安装:
  1. 创建一个目录 (c:\sqlbks 可能)
  2. 将 \sqlbks65\sqlbooks.* 文件和 \i386\InfoView.exe 从 CD-ROM 复制到该目录中。从 6.0 MSIN32.EXE 在作为 sql server 6.5 的简介册的读取器将不起作用,您就需要的 InfoView.exe (它不需要任何 dll)。
  3. 创建一个带程序管理器项,请执行以下操作:

    命令行的 c:\sqlbks c:\sqlbks\infoview.exe sqlbooks.mvb A 工作目录
然后,您应该能够读取在联机手册。

22.VBSQL.ocx 替换 VBSQL.vbx

有关 vba VBSQL.vbx,使用该旧 16 位 db-library 的 Visual Basic 3.0 项目应能移植到 Visual Basic OLE 自定义控件,VBSQL.ocx 新 db-library。有关更多的信息请参阅 SQL Server 6.5 联机丛书,"vba 项目的移植旧的 DB 库"。

23 已删除图形显示计划

由于在 SHOWPLAN 输出中的更改以图形显示计划选项卡将不再可用在 SQL 企业管理器的查询工具和 ISQL/w 中。

24.扩展存储的过程

由于的基础结构的更改必须重新编译 C 源代码从并重新链接下 Microsoft SQL Server 到 OPENDS60.LIB 6.5 版中 C 编程语言编写的所有扩展存储的过程。

尽管 SQL Server 6.0 中您可能回叫服务器从一个 XP,这是不受支持。通过使用在其中几个连接可以共享相同的事务锁空间和 $ 在同一个事务,并可以处理而锁定冲突不相同的数据绑定连接的支持 SQL Server 6.5 这样"环回"的连接。

25 未来的注意事项

SQL Server 6.5 包括取代以前的一些功能的功能的新功能。尽管 SQL Server 6.0 中的所有功能将都继续支持 6.5 中,SQL Server 的将来版本可能不支持其中相同的功能可以是一些语句通过使用其他方法实现。例如对于以下功能中 6.5 支持,但可能会在将来的版本中将从停止:
  • 浏览模式: 尽管 SELECT FOR 浏览 6.5 中支持,FOR 浏览子句的 SELECT 语句中的功能可以现在实现更高效地使用游标。
  • 设备镜像中 SQL Server: 如果您安装的 SQL Server 当前正在使用 SQL Server 镜像,则建议使用镜像的 Windows NT 的功能或基于硬件的镜像。
  • 外部联接语法: 随 SQL Server 6.5,* = 和 = * 的外部联接中一个 WHERE 子句可以替换成 ANSI 标准语法加入 FROM 子句中的语法使用:

    LEFT OUTER JOIN、 向 OUTER JOIN,和完整外联接。
  • 双引用字符串: 双引号字符的使用应保留为带分隔符或引用的标识符。虽然仍可用于在双引号分隔字符字符串 (而不是一个对象名) 如果执行 SET QUOTED_IDENTIFIER ON,任何由双引号分隔的字符串将被认为是一个标识符。
  • 不等于 (! =): 的 ANSI 标准语法表示不等于是 < >。这应使用的位置! = 在所有情况下。
  • 空值的比较 (= NULL): 的 ANSI 标准是 IS NULL 和应在所有情况下使用。事实上,如果 SET ANSI_NULLS ON 有效,"= NULL"将返回 FALSE 在所有的情况中,因为 ANSI 指定的任何值 (本身甚至 NULL) 等于 NULL。
  • 跟踪标志: SQL 跟踪应该用于监视而不是使用跟踪标记 4030 和 4032 的接收缓冲区。

    根据要联机丛书跟踪标记应当用于临时解决问题,直到永久解决方案将放在的位置。尽管所提供的跟踪标志信息可以帮助您诊断问题,请记住跟踪标记不受支持的功能集的一部分。这意味着将来的兼容性或 $ 继续的使用不能保证。
此外应该考虑中止使用以下功能:
  • 段: 用户定义的段常常使用会导致数据库对象将其置于特定的设备由于性能方面的原因。multi-disk RAID 设备的使用通常将提供一个更好地提高性能与较低的相关管理成本。
  • 在 db-library Two-Phase 提交库: 的分布式事务协调器现在自动提供此功能。

属性

文章编号: 152032 - 最后修改: 2013年9月30日 - 修订: 3.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 6.5 标准版
关键字:?
kbnosurvey kbarchive kbmt KB152032 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 152032
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com