内部 Microsoft SQL Server 2005: T-SQL 查询注释和更正

文章翻译 文章翻译
文章编号: 920141 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文包含注释、 更正,和与微软出版社的书籍相关的已知错误的信息 内部 Microsoft SQL Server 2005: T-SQL 查询,0 7356 2313年 9。

包括以下主题:

  • 表键的页 8: 校正
  • 用来代替 <right_table_expression> 标记的页 20: <table_expression> 标记
  • 页面 43: 是缺少从图 2-7
  • 页面 51: 在 MoreInfo 框中的链接不正确
  • 在代码示例中 THEN 重复页 68:
  • 页面 73:"signal_wait_time"应为"signal_wait_time_ms"
  • 页面 81: 缺少空格表 3-3
  • 页面 101:"1000"来代替"1000000"
  • 页 102 103:"1000"来代替"1000000"
  • 页面 137: 订购扫描引用而不是无序的扫描
  • 页面 139: 不使用"应不"
  • 页面 140: 的第二个 orderid 应是 120 以下查询段落的第六个句子中
  • 引用,而索引查找的页面 141: 索引扫描
  • 页面 158: 一词"较大的增长"使用而不是,术语"获取更低"
  • 页面 162: 从顶部开始的第三行需要 UNIQUE 删除并替换 orderid orderdate
  • 页 163-166: 未排序的非聚集索引扫描称为无序列涵盖非聚集索引扫描
  • 页面 168:"扫描碎片"的应该是"页密度"
  • 引用而不是会话信息的页面 173: 客户信息
  • 页面 173: 列表 3-7 表名称应该是 BigSessions,而不是会话的
  • 页面 187:"是"应为"no"
  • 第四个段落的子查询的示例说明中的页面 192: 校正
  • 页面 203: 变量 b 引用,而变量 c
  • 页面 203:"EXISTS"应为非 EXISTS
  • "MIN(keycol) + 1"页面 206: 应为"MIN(keycol + 1)"
  • 页面 272:"秩函数"和"递归查询"引用而不是"旋转"和"UNPIVOT"
  • 页面 328:"运行"应"滑动"
  • 页 340: 按年数量引用而非年度订单标题中的表 6-16
  • 从属性中缺少的页面 356: 期
  • 页面 360: 查询不正确
  • 第二个和第三个列的表 6-24 的页 364: 不正确的标签
  • 第二个和第三个列的表 6-25 的页面 364: 不正确的标签
  • 页面 412:"2147483648"应为"-2147483648"
  • 页 431 和 432: #CustStage 引用而不是 #CustsStage
  • 页面 434: usp_AsyncSec 引用而非 usp_AsyncSeq
  • 在第一个代码示例中的页面 445: 不正确的 SET 语句
  • 页面 445:"许多"应为"one"
  • 页面 480: fn_subordinates2 引用,而 fn_subordinates1
  • 页面 485: < 应 < =
  • 页面 493:"SubsPath"应为"SubsSort"
  • 页面 494: @ 应 #
  • 页面 506: 不正确使用的撇号
  • 页面 513: 参考表 9-35 到应通过更特定的通信
  • 页面 533:"BOMCTE"应为"BOMTC"
  • 从列表上的灯的页面 562: 灯泡 36 丢失
  • 页面 567: Corretion 19 测验题答案

更多信息

表键的页 8: 校正

在底部的侧栏页 8,上没有出现错误。

更改:

开另一方面,UNIQUE 和 PRIMARY KEY 约束排序,和分组视 NULLs 为相等: 您不能插入到一个表在两行具有 UNIQUE 或 PRIMARY KEY 约束上定义的列中

若要:

上另一只手,一个 UNIQUE 约束排序,和分组将空值视为等于: 您不能插入到一个表在两行具有在其上定义一个 UNIQUE 约束的列中

用来代替 <right_table_expression> 标记的页 20: <table_expression> 标记

在页 20,第二个表运算符的第二行显示如下:

{CROSS | OUTER} APPLY <table_expression>


它应显示为:

{CROSS | OUTER} APPLY <right_table_expression>


页面 43: 是缺少从图 2-7

在页 43,在图 2-7 上, 应该有一个"是"箭头指向上方的"无法查询限定为并行计划?"到"阶段 1 并行计划"。

页面 51: 在 MoreInfo 框中的链接不正确

在页 51,第一句 MoreInfo 框内的包含需要更改的链接。

更改:
"从 XML 显示计划中析取数据的一个很好的示例可以找到在 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/xmlshowplans.asp"。

若要:
"从 XML 显示计划中析取数据的一个很好的示例可以找到在 http://msdn2.microsoft.com/en-us/library/ms345130.aspx"。

在代码示例中 THEN 重复页 68:

在第 68 页,在代码示例中的行 32-35 显示如下:

- CASE WHEN n % 10 = 0
	THEN THEN 1 + ABS(CHECKSUM(NEWID())) % 30
	ELSE 0
  END AS orderdate

它应显示为:

- CASE WHEN n % 10 = 0
	THEN 1 + ABS(CHECKSUM(NEWID())) % 30
	ELSE 0
  END AS orderdate


页面 73:"signal_wait_time"应为"signal_wait_time_ms"

在页 73,页上的最后一段包含不正确的 wait_time。

更改:
"DMV sys.dm_os_wait_stats 包含以下属性: wait_type ; waiting_tasks_count,这是对此的等待数等待类型 ; wait_time_ms,这是总等待时间中毫秒 (包括 signal_wait_time) ; max_wait_time_ms ; 和 signal_wait_time,等待线程已终止的时间区别是此等待类型和它开始运行时"

若要:
"DMV sys.dm_os_wait_stats 包含以下属性: wait_type ; waiting_tasks_count,这是对此的等待数等待类型 ; wait_time_ms,这是总等待时间中毫秒 (包括 signal_wait_time) ; max_wait_time_ms ; 和 signal_wait_time_ms,等待线程已终止的时间区别是此等待类型和它开始运行时"

页面 81: 缺少空格表 3-3

在页 81,"counter_name"列中的项阅读:

"Buffercachehitratio
缓冲区高速缓存命中率基数
Pagelookups/秒
Freeliststalls/秒
Freepages
Totalpages
Targetpages
Databasepages
Reservedpages
Stolenpages"

它们应显示为:

缓冲区高速缓存命中的比率
缓冲区高速缓存命中率基数
查找的页/秒
可用列表停止/秒
空闲页
总页数
目标页
数据库页
保留的页
被盗用的页"

页面 101:"1000"来代替"1000000"

在页 101,第二个和第四行中的代码示例显示如下:

CAST(AQ1.total_duration / 1000.

CAST(SUM(AQ2.total_duration) / 1000.

它应显示为:

CAST(AQ1.total_duration / 100000.

CAST(SUM(AQ2.total_duration) / 100000.


页 102 103:"1000"来代替"1000000"

102 和 103 页上, 第四个和第六行的代码示例读取:

CAST(AQ1.total_duration / 1000.

CAST(SUM(AQ2.total_duration) / 1000.

它应显示为:

CAST(AQ1.total_duration / 100000.

CAST(SUM(AQ2.total_duration) / 100000.


页面 137: 订购扫描引用而不是无序的扫描

在页 137,页上的第三个句子读取:

与没有碎片根本,性能的一个有序扫描"的"应该是索引的非常接近于性能的出现顺序扫描因为两者都最终会按顺序物理读取数据。

它应显示为:

与没有碎片根本,性能的一个有序扫描"的"应该是扫描的索引的非常接近于性能的一系列无序因为两者都最终会按顺序物理读取数据。

页面 139: 不使用"应不"

在页 139,第一句,在页上的不使用该单词是序列中。

更改:
仅在显式请求数据进行排序时不使用已排序的索引扫描 ; 而是,它时,也会使用该计划使用可以受益于排序后的输入数据的运算符。

若要:
显式请求数据进行排序时不只使用有序的索引扫描 ; 而是,它时,也会使用该计划使用可以受益于排序后的输入数据的运算符。

页面 140: 的 orderid 应是 120 以下查询段落的第六个句子中

在页 140,以下查询,该段落中句子 6 显示如下:

"访问方法的第二部分是从该范围中第一项叶级别中的有序部分进行扫描,直到最后一个 (orderid = 101)"

它应显示为:

"访问方法的第二部分是从该范围中第一项叶级别中的有序部分进行扫描,直到最后一个 (orderid = 120)"

引用,而索引查找的页面 141: 索引扫描

在页 141,读取的最后一段第一句:

请注意,在执行计划您显式 won’t 请参阅访问方法的部分扫描部分 ; 而是,索引扫描运算符中的隐藏。

它应显示为:

请注意,在执行计划您显式 won’t 请参阅访问方法的部分扫描部分 ; 而是,索引查找运算符中的隐藏。

页面 158: 一词"较大的增长"使用而不是,术语"获取更低"

图 3-49 后的页面 158,段落的第二句上显示如下:

"较大选择性随着越大量成本是查询的在查找此处。

它应显示为:

"为查询的选择性获取较低 (低选择性 = 高百分比的行),越大量的成本是在查找此处"

页面 162: 从顶部开始的第三行需要 UNIQUE 删除并替换 orderid orderdate

在页 162,从顶部在第三行显示如下:

"创建唯一聚集索引 idx_cl_od ON dbo.Orders(orderid) ;

它应显示为:

"创建聚集索引 idx_cl_od ON dbo.Orders(orderdate) ;

页 163-166: 未排序的非聚集索引扫描称为无序列涵盖非聚集索引扫描

在页 163,第二个和第三个行的表 3-16 中第一个单元格阅读:

"排序涵盖非聚集索引扫描

无序涵盖非聚集索引扫描 + 查找"

它们应显示为:

"无序非聚集索引扫描

无序的非聚集索引扫描 + 查找中"

在页 164,在左侧的图 3-55 键的第二个和第三个项目阅读:

"排序涵盖非聚集索引扫描

无序涵盖非聚集索引扫描 + 查找"

它们应显示为:

"无序非聚集索引扫描

无序的非聚集索引扫描 + 查找中"

在页 164,第二个和第三个行的表 3-17 中第一个单元格阅读:

"排序涵盖非聚集索引扫描

无序涵盖非聚集索引扫描 + 查找"

它们应显示为:

"无序非聚集索引扫描

无序的非聚集索引扫描 + 查找中"

在页 165,在左侧的图 3-56 项的第二个和第三个项目阅读:

"排序涵盖非聚集索引扫描

无序涵盖非聚集索引扫描 + 查找"

它们应显示为:

"无序非聚集索引扫描

无序的非聚集索引扫描 + 查找中"

在页 166 上, 为第二个和第三个列在图 3-57 标签阅读:

"排序涵盖非聚集索引扫描

无序涵盖非聚集索引扫描 + 查找"

它们应显示为:

"无序非聚集索引扫描

无序的非聚集索引扫描 + 查找中"

页面 168:"扫描碎片"的应该是"页密度"

在页 168,第二段的第三个句子包含一个不正确的引用,"扫描碎片"。

更改:
"逻辑扫描碎片永远不会是一件好事,平均扫描碎片有两个方面"。

若要:
"逻辑扫描碎片永远不会是一件好事,平均页密度有两个方面"。

引用而不是会话信息的页面 173: 客户信息

在页 173,第二个段落中的第二句读取:

理想情况下,您应会考虑不同的顺序日期的数量的客户数和等。

它应显示为:

"理想情况下,您应会考虑逼真的通讯组的会话开始时间、 会话工期等"。

页面 173: 列表 3-7 表名称应该是 BigSessions,而不是会话的

在页上 173 的列表 3-7 读取标题:

"填充不充分的示例数据与会话"

它应显示为:

"将 BigSessions 填充不充分的示例数据"

页面 187:"是"应为"no"

在页 187,第三个句子后图 3-66 包含不正确的字。

更改:
"如果是肯定的回答另一个查找操作调用索引以检查是否在所有存在订单针对"

若要:
"如果答案为无,另一个搜索索引以检查是否在所有存在订单针对调用操作"

第四个段落的子查询的示例说明中的页面 192: 校正

在页 192,第四个段落的子查询的示例说明将显示如下:

"三次例如,运行以下代码: 一次如下所示的第二次与 LIKE N’Kollar LIKE N’Davolio 的位置,并与 LIKE N 的第三次 'D %:"

它应显示为:

"三次例如,运行下面的代码: 一次如下所示的第二次 LIKE N’Kollar 与 LIKE N’Davolio 的位置,并与 LIKE N 的第三次 'D %:"

页面 203: 变量 b 引用,而变量 c

在页 203,页上的第三个句子读取:

"谓词 b 不 IN(a, b, NULL),因此返回不未知,等于未知,和客户 c 不会返回在查询,即使 c 未出现在客户列表中"

它应显示为:

"谓词 c 不 IN(a, b, NULL) 因此返回不未知,等于未知,和客户 c 不会返回在查询,即使 c 未出现在客户列表中"

页面 203:"EXISTS"应为非 EXISTS

在页 203,第一段的最后一个句子包含查询不正确。

更改:
"以使 NOT IN 查询逻辑上等效于 EXISTS 查询,声明为 NOT NULL (如果适用),或将筛选器添加到子查询中排除空值列:"

若要:
"以使 NOT IN 查询逻辑上等效于非 EXISTS 查询,声明为 NOT NULL (如果适用),或将筛选器添加到子查询中排除空值列:"

"MIN(keycol) + 1"页面 206: 应为"MIN(keycol + 1)"

在页 206,第三个句子第二个段落中的包含了不正确的表达式。

更改:
"如果 1 doesn’t 存在于表中 (也就是第二个 EXISTS 谓词始终是 FALSE),筛选器将生成一个空集和表达式 MIN(keycol) + 1 产生 NULL"

若要:
"如果 1 doesn’t 存在于表中 (也就是第二个 EXISTS 谓词始终是 FALSE),筛选器将生成一个空集和表达式 MIN(keycol + 1) 产生 NULL"

页面 272:"秩函数"和"递归查询"引用而不是"旋转"和"UNPIVOT"

在页 272,第一句的页面底部的注意读取:

将"数据库的兼容性模式更改为较早的版本会阻止您使用新的语言元素 (例如对于秩函数、 递归查询等)"。

它应显示为:

将"数据库的兼容性模式更改为较早的版本会阻止您使用新的语言元素 (例如对于旋转、 UNPIVOT,等等)"。

页面 328:"运行"应"滑动"

在页 328,第一句后注释框包含不正确的聚合。

更改:
该解决方案的累积合计和运行聚合的解决方案之间的区别是联接条件中 (或在子查询的筛选器的替代的解决方案使用子查询的情况下)。

若要:
该解决方案的累积合计和滑动聚合为解决方案之间的主要区别是联接条件中 (或在子查询的筛选器的替代的解决方案使用子查询的情况下)。

页 340: 按年数量引用而非年度订单标题中的表 6-16

在页 340,标题为表 6-16 将显示为:

"计数的每个客户的数量"

它应显示为:

"的每客户的订单计数"

从属性中缺少的页面 356: 期

在页 356,步骤 15 中的在第五个行都包含一个缺少一段的属性。

更改:
"本机序列化需要该 StructLayoutAttribute 指定为 StructLayout.LayoutKindSequential 如果 UDA 在一个类并不是一个结构中定义的。

若要:
"本机序列化需要该 StructLayoutAttribute 指定为 StructLayout.LayoutKind.Sequential 如果 UDA 在一个类并不是一个结构中定义的。

页面 360: 查询不正确

在页 360,在页的顶部查询不正确。

更改:
SELECT groupid,
CAST(ROUND(EXP(SUM(LOG(ABS(NULLIF(val,0)))))*
(1-SUM(1-SIGN(val))%4)*(1-SUM(1-SQUARE(SIGN(val)))),0) AS INT)
AS product
FROM dbo.Groups
GROUP BY groupid;

若要:
SELECT groupid,
CAST(ROUND(EXP(SUM(LOG(ABS(NULLIF(val,0)))))*
(1-SUM(1-SIGN(val))%4)*(1-MAX(1-SQUARE(SIGN(val)))),0) AS INT)
AS product
FROM dbo.Groups
GROUP BY groupid;


第二个和第三个列的表 6-24 的页 364: 不正确的标签

在页上 364,列标签的表 6-24:

"groupid agg_or"agg_or_binval

它们应显示为:

"groupid agg_and"agg_and_binval

第二个和第三个列的表 6-25 的页面 364: 不正确的标签

在页 364,列标签的表 6-25 阅读:

"groupid agg_or"agg_or_binval

它们应显示为:

"groupid agg_xor"agg_xor_binval

页面 412:"2147483648"应为"-2147483648"

在页 412,第二个到最后一个段落的第一句包含一个不正确的整数。

更改:
CHECKSUM 返回一个整数 2147483648 和 2147483647 之间。

若要:
CHECKSUM 返回一个整数,介于-2147483648 和 2147483647 之间。

页 431 和 432: #CustStage 引用而不是 #CustsStage

在页 431,第七个和 eigth 句子结尾的段落的阅读:

"更新对单个传递 #CustStage 中的行。有数据更新访问每个行它将存储 @ 键 + 1 的值,在 KeyCol 和 @ 键中。这意味着与访问过的每个新行,@ 密钥是增加 1,存储在 $ KeyCol 中。您基本上分发 #CustStage 中的各行之间的序列值的新的块"。

它们应显示为:

"更新对单个传递 #CustsStage 中的行。有数据更新访问每个行它将存储 @ 键 + 1 的值,在 KeyCol 和 @ 键中。这意味着与访问过的每个新行,@ 密钥是增加 1,存储在 $ KeyCol 中。您基本上分发 #CustsStage 中的各行之间的序列值的新的块"。

在页 432,第一句,在页上的显示如下:

"在前面的说明,将序列值重置为 0 之后, 的此代码 #CustStage 将包含七个的英国客户的 KeyCol 值范围从 1 到 7"。

它应显示为:

"在前面的说明,将序列值重置为 0 之后, 的此代码 #CustsStage 将包含七个的英国客户的 KeyCol 值范围从 1 到 7"。

在页 432,第二段的第一句读取:

专用的 T-SQL UPDATE 语句不是标准,doesn’t 保证它将访问 #CustStage 按任何特定顺序中的行。

它应显示为:

专用的 T-SQL UPDATE 语句不是标准,doesn’t 保证它将访问 #CustsStage 按任何特定顺序中的行。

页面 434: usp_AsyncSec 引用而非 usp_AsyncSeq

在页 434 后的注意, 第二句框读取:

回滚防止 AsyncSeq 表的增长。在实际上,它永远不会包含任何行从调用 usp_AsyncSec"。

它应显示为:

回滚防止 AsyncSeq 表的增长。在实际上,它永远不会包含任何行从调用 usp_AsyncSeq"。

在第一个代码示例中的页面 445: 不正确的 SET 语句

在页 445,最后两行的第一个代码示例读取:

	WHERE C.CustomerID = dbo.Orders.CustomerID);
WHERE C.Country = 'USA';


它们应显示为:

	WHERE C.CustomerID = dbo.Orders.CustomerID);
WHERE CustomerID IN
  (SELECT CustomerID FROM dbo.Customers WHERE Country = 'USA');


页面 445:"许多"应为"one"

在页上 445。第二句的最后一个段落中包含一个不正确的侧边引用。

更改:
"修改多方的一对多联接的表时, 最终结果可能与非确定性的更新"。

若要:
"修改一方的一对多联接的表时, 最终结果可能与非确定性的更新"。

页面 480: fn_subordinates2 引用,而 fn_subordinates1

在页上 480 之前列表 9-8 读取, 在最后一句:

"运行该代码在列表创建 fn_subordinates2 函数 fn_subordinates2 还支持一个级别的限制的修订版的 9-8。

它应显示为:

"运行该代码在列表创建 fn_subordinates2 函数 fn_subordinates1 还支持一个级别的限制的修订版的 9-8。

页面 485: < 应 < =

在页上第 485,在代码示例在第 12 行上的注释包含一个不正确的符号。

更改:
-- and previous level < @maxlevels

若要:
-- and previous level <= @maxlevels

页面 493:"SubsPath"应为"SubsSort"

页面应该是 496 上的页面上的代码示例的行 36 需要替换为"SubsSort"的 SubsPath。

更改:
-- #SubsPath is a temp table that will hold the final

为:
-- #SubsSort is a temp table that will hold the final

页面 494: @ 应 #

在页面上 494,在代码示例上面最后一个 INSERT 语句在第四个注释都包含一个不正确的符号。

更改:
-- Load the rows from #SubsPath to @SubsSort sorted by the binary

为:
-- Load the rows from #SubsPath to #SubsSort sorted by the binary

页面 506: 不正确使用的撇号

页上 506,第四个句子的第二个为上一次不正确的页面上的段落将单词员工之前的撇号。

更改:
"否则为其级别是父项的级别加 1,并且它的路径是: 父路径 + 员工 id +"

若要:
"否则为其级别是父项的级别加 1,并且它的路径是: 父路径 + 员工 id +"

页面 513: 参考表 9-35 到应通过更特定的通信

在页 513 前, 两个完整的句子,在阅读页上:

"为每个的请求可以提供它的输出 (显示在表 9-35) 后跟一个示例查询。 返回具有给定根的子树:"

它应显示为:

"为每个的请求可以提供跟其输出的示例查询。 返回具有生成输出显示在表 9-35 一个给定根的子树:"

页面 533:"BOMCTE"应为"BOMTC"

在页 533,第一句后表 9-50 包括的不正确的首字母缩写词。

更改:
此解决方案不通过应用外部查询中的 DISTINCT 子句在 BOMCTE 中找到的重复边缘。

若要:
此解决方案不通过应用外部查询中的 DISTINCT 子句在 BOMTC 中找到的重复边缘。

从列表上的灯的页面 562: 灯泡 36 丢失

在页 562,拼图 10 到答案的第一句读取:

"所有灯都是关闭的灯数字 1、 4、 9、 16、 25、 49、 64、 81 和 100 都上, 除外。

它应显示为:

"所有灯都是关闭的灯数字 1、 4、 9、 16、 25、 36、 49、 64、 81 和 100 都上, 除外。

页面 567: Corretion 19 测验题答案

在下页 567,"拼图 19: 在顺序中查找模式",在最后一个序列-4 中第一个数的句子-已被错误地添加。

更改:

"下面的几个其他的数字序列的第一部分: 4、 3、 3、 5、 4、 4、 3、 5、 5、 4、 3、 6、 6、 8、 8、 7、 7、 9、 8、 8、 6、 9、 9、 11、 10、 10、 9、 11、 11、 10 …"

若要:

"下面的几个其他的数字序列的第一部分: 3、 3、 5、 4、 4、 3、 5、 5、 4、 3、 6、 6、 8、 8、 7、 7、 9、 8、 8、 6、 9、 9、 11、 10、 10、 9、 11、 11、 10 …"

microsoft 致力于提供信息性的和准确的书籍。所有的批注和更正上面列出可为包含在未来 printings 的此简介册。如果您的这本书的更高版本打印它可能已经包含大多数或所有上面的更正。

属性

文章编号: 920141 - 最后修改: 2007年10月24日 - 修订: 1.14
这篇文章中的信息适用于:
  • Inside Microsoft SQL Server 2005: T-SQL Querying, ISBN 0-7356-2313-9
关键字:?
kbmt KB920141 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 920141
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