2007年11月23日金曜日

回答メールにつかれはて。。。

前に、Inside SQL Server 2005の誤字情報をメールしました。
内容はこんな感じ。


インサイド Microsoft SQL Server 2005 ストレージエンジン編(初版)
を購入しました。△△と申します。

読み進めるうちに誤字や分かりにくい表現など目につきましたので、
7章からチェックしながら読んでみました。
以下の点で間違いと思われる記述と理解ができない記述があります。

特に以下の点の6),8)10),11),13)が理解できませんでしたのでご回答お願いします。

1)P.347 l.11「varchar(1000)」ではなく「varchar(100)」ではないでしょうか?

2)P.373 l.26「安価ですがが、」ではなく「安価ですが、」です。

3)P.404 l.15 「第88ペーに、」ではなく、「第88ページに、」です。

4)P.413 l.7「accessing(読み取り)およびreading(アクセス)」ではなく
「accessing(アクセス)およびreading(読み取り)」ではないでしょうか?

5)P.434 l.11「インデックスキーがある場合、FrenchとFriedlandのキーは」ではなく、
「インデックスキーがある場合、FredericksenとFriedlandのキーは」ではないでしょうか?

6)P.434 表8-4 キー範囲ロックの種類の説明列で、「範囲末尾のキー」とある、
”範囲末尾の”の部分が必要でしょうか?必要であれば何を指しているかが不明確。
(ノードではなくリーフという意味なら範囲末尾はいらないよね?)

7)P.434 表8-4 説明列のRangeS_SロックとRangeS_Uロックが略称列のRangeS-SとRangeS-Uとの
違いが不明確。同じであれば名称も合せてほしい。

8)P.486 表8-14 時間5の部分 「-- このDDLは不正です。」不正の理由が本文から読み取れない。
誤字なのか?あっているなら不正の理由が不明。

9)P.486 表8-14 時間7にある、CREATE INDEXとONの行の間の罫線が間違い。

10)P.488 表8-16 のREAD COMMITED SNAPSHOT分離の説明:「このオプションが有効なときには、
データベース内にアクティブなセッションは他に存在しません。」とありますが、これはどういう
ことでしょうか?
納得しがたいのですが、このオプションを有効にすると、DBがシングルユーザモードでしか立ち上
げられない、という理解でよいのでしょうか?

11) P.488 表8-16 のREAD COMMITED SNAPSHOT分離の説明:「RCSIはテーブルレベルのオプショ
ンなので、~」とありますが、直前の説明では、データベースレベルの設定と読み取れます。
これは何を言おうとしているのでしょうか?
曲解して、分散トランザクション環境における各DBの設定を合わせる必要がない…っていうことを
この説明でいっているわけではないですよね?

12)P.491 l.1 「UPDATE NewProduct」の部分、後の説明を読むと「UPDATE Product」の間違いではな
いでしょうか?

13)P.492 l.6「バージョニング情報の14バイトを協調して示しました。」は「強調して」ではないでしょうか?
ただ、強調されている14バイトが見つからないため、どこかの部分を強調していただきたく。

14)P.495 l.8「SQL Serverの再帰同時に」ではなく、「SQL Serverの再起動時」の間違い。

15)P.501 l.23「SQL Server 2005で行行のバージョン管理が」ではなく、「SQL Server 2005で行のバージ
ョン管理が」の間違い。

16)P.505 表8-17の時間6の部分、「」ではなく「」の間違い。

17)P.505 表8-17の時間6の間の罫線が間違い。これでは、操作とコメントが罫線で分離されてしまう。
(つけるならの直前に付け これを時間7とする?)


よろしくお願いします。


と出したのですが、
回答が返ってきました。5)と16)が修正の必要がないというのが、まったく理解できないので、全力で1時間かけて返信したのですが、相当疲れました。

4 件のコメント:

匿名 さんのコメント...

回答はのせないの?△△さん!仕事忙しいのにがんばってますねー。

wgd さんのコメント...

回答は、、、



△△さま

お世話になっております。
先日メールにていただいた、残りのご質問への回答が監修者から届きました。
以下に回答を列記します。ご確認お願いします。
引き続き、弊社発行書籍をよろしくお願いいたします。

日経BPソフトプレス


-----ここから-----

5)P.434 l.11「インデックスキーがある場合、FrenchとFriedlandのキーは」ではなく、「インデックスキーがある場合、FredericksenとFriedlandのキーは」ではないでしょうか?

→Where条件で、‘Freller’と’Freund’ が指定されていますから、
’Fredericksen’ は‘Freller’ より小さく検索条件の範囲に含まれません。
したがって修正は不要です。

6)P.434 表8-4 キー範囲ロックの種類の説明列で、「範囲末尾のキー」とある、”範囲末尾の”の部分が必要でしょうか?必要であれば何を指しているかが不明確。
(ノードではなくリーフという意味なら範囲末尾はいらないよね?)

→英語の表現を正しく翻訳してあります。
ただBOLには’ 共有範囲。共有リソース ロック。シリアル化可能範囲スキャン。
’と表現しており、範囲末尾のキーという表現はありません。
このケースも修正は不要です。

7)P.434 表8-4 説明列のRangeS_SロックとRangeS_Uロックが略称列のRangeS-Sと
RangeS-Uとの違いが不明確。同じであれば名称も合せてほしい。

→RangeS_SロックとRangeS-S、RangeS_UロックとRangeS-Uはそれぞれ、
共有キー範囲ロック、更新キー範囲ロック、の意味で同じです。


8)P.486 表8-14 時間5の部分 「-- このDDLは不正です。」不正の理由が本文から読
み取れない。
誤字なのか?あっているなら不正の理由が不明。

→これは原文がlegalでしたので、明らかに誤訳です。
「このDDLは正しく動作します。」に訂正します。

10)P.488 表8-16 のREAD COMMITED SNAPSHOT分離の説明:「このオプションが有効なときには、データベース内にアクティブなセッションは他に存在しません。」とありますが、これはどういうことでしょうか?
納得しがたいのですが、このオプションを有効にすると、DBがシングルユーザモード
でしか立ち上げられない、という理解でよいのでしょうか?


→少し言葉足らずのようです。以下のように修正します。
「このオプションが有効なときには、データベース内に他の更新中のアクティブなセッションは存在しません。」


11) P.488 表8-16 のREAD COMMITED SNAPSHOT分離の説明:「RCSIはテーブルレベルのオプションなので、~」とありますが、直前の説明では、データベースレベルの設定と読み取れます。
これは何を言おうとしているのでしょうか?
曲解して、分散トランザクション環境における各DBの設定を合わせる必要がない…っ
ていうことをこの説明でいっているわけではないですよね?

→このケースも少し言葉足らずのようです。
設定はデータベースレベルで、実際の動作はテーブル単位です。
「RCSIの動作はテーブルレベルのオプションなので、~」
に修正します。


12)P.491 l.1 「UPDATE NewProduct」の部分、後の説明を読むと「UPDATE Product」
の間違いではないでしょうか?

→これは、このT-SQLの前のコードサンプルで、
select * INTO NewProduct
FROM Production.Product
という記述がありますので、このままで結構です。


13)P.492 l.6「バージョニング情報の14バイトを協調して示しました。」は「強調し
て」ではないでしょうか?
ただ、強調されている14バイトが見つからないため、どこかの部分を強調していただ
きたく。

→これは、強調してが正しいです。
Memory Dump
00000010: 00fc0000 00000000 00000290d 00000000
をゴジック体で表してください。


16)P.505 表8-17の時間6の部分、「<return ROW5>」ではなく、<return ROW6>」の間
違い。

→これは正しい表現です。
修正の必要はありません。
-----ここまで-----


No virus found in this incoming message.
Checked by AVG.
Version: 7.5.503 / Virus Database: 269.16.2/1143 - Release Date: 2007/11/21 10:01







という感じで、、、、こちらからの再返信は、

回答ありがとうございます。

5)について、
TRANSACTION ISOLATION LEVEL がSERIALIZABLEであったとしても、
SELECT * FROM Person.contact WHERE LastName BETWEEN 'Feller' AND 'Freund'
と行った際、キーロックの範囲は、FrenchとFriedlandであり、Fremlichは挿入可
となるのですね。
つまり、SQL SERVER 2005は、たとえトランザクション分離レベルがSERIALIZABLE
だとしても、ファントムの発生が防止できないのではないでしょうか?
ロックの範囲は「より狭く」ではなく「より広く」だと思うので、このように
SQL Server 2005が作られているのであれば設計不具合と思いますが、それはおいて
おいてこの箇所付近の記述の意味がとおらなくなると思います。
以下に記述しますと、
---P434---
1.
LastName列のインデックスにFredericksen、French、およびFriedlandという
シーケンシャルなリーフレベルのインデックスキーがある場合、FrenchとFriedland
のキーはキー範囲ロックを取得します。
2.
キー範囲ロックによってこの2つのキー範囲ロックで終了する範囲への挿入がすべ
て阻止されます(ただし、Frenchに関する1行だけが結果セットで返されます)。
3.
Fredeicksenよりも大きくFrench以下の値を挿入することができません。
4.
また、Frenchよりも大きくFriedland以下の値を挿入することができません。
5.
これら2つのキー範囲ロックとは、前のシーケンシャルキーを開始点とする、
開区間と、ロックが設定されているキーを終了点とする閉区間を示すことに注
意してください。
6.
これら2つのキー範囲ロックによって、他からFremlichやFrenkinを挿入することが阻止
されます。


とあり、上の文1.と2.と5.より、
キー範囲ロックがFrench>x>=Friedlandである。といっていることと、3.の言っていること
と矛盾しているように思います。また6.もFremlichを挿入することが阻止される理由が
記述されていないと思われます。
こちらからの質問5)については、こちらで再考しますので、メールにての回答は不要です。
-----



6)について、
→英語の表現を正しく翻訳してあります。
もしよろしければ、この部分の1文の説明の翻訳前の英文を教えてはいただけないでしょうか?



7)について、
こちらの質問意図としては、RangeS_SロックとRangeS-Sに違いがあるのか(つまり'_'と'-'に
筆者の意図した違いがあるのか?という単純なものでした。誤解がありましたら申し訳ありません。
また、回答から違いがないと理解しました。
回答ありがとうございました。



10)について、回答ありがとうございました。
回答の内容はまだ理解できておりませんが、それはたぶん私のDBに対する認識不足が原因だと思います。



11)について、回答ありがとうございました。
「設定はデータベースレベルで、実際の動作はテーブル単位です。」
納得しました。



12)について、回答ありがとうございました。
おっしゃる通りです。失礼しました。



13)について、回答ありがとうございました。
納得しました。



16)について、回答ありがとうございました。
なぜ、バッチ1でselect ... From MyBigTableの発行で、
ROW1
ROW2
ROW3
ROW4
ROW5
ROW5


・ROW5だけを2行返すのか、
・時間4のコメントの仕方
(>return<文の下にリターン文のコメント)と、時間6の
次のコメントの仕方(コメントの下にコメントに対応す
る>return<文の記述)とかえるのか、
・凝ったバッチをなぜ例題に上げるか、
・バッチ2で削除したROW6のデータをバッチ1の出
力で明示しないのか
などなど、
筆者の意図はさっぱりわかりませんが、了解しました。


以上回答ありがとうございました。


-----Original Message-----
From: nsp
Sent: Thursday, November 22, 2007 3:38 PM
To: △△
Subject: Re: 書籍「インサイド Microsoft SQL Server2005 ストレージエンジン編」の誤字と質問事項

△△さま

お世話になっております。
先日メールにていただいた、残りのご質問への回答が監修者から届きました。
以下に回答を列記します。ご確認お願いします。
引き続き、弊社発行書籍をよろしくお願いいたします。

日経BPソフトプレス


-----ここから-----

5)P.434 l.11「インデックスキーがある場合、FrenchとFriedlandのキーは」ではなく、「インデックスキーがある場合、FredericksenとFriedlandのキーは」ではないでしょうか?

→Where条件で、‘Freller’と’Freund’ が指定されていますから、
’Fredericksen’ は‘Freller’ より小さく検索条件の範囲に含まれません。
したがって修正は不要です。

6)P.434 表8-4 キー範囲ロックの種類の説明列で、「範囲末尾のキー」とある、”範囲末尾の”の部分が必要でしょうか?必要であれば何を指しているかが不明確。
(ノードではなくリーフという意味なら範囲末尾はいらないよね?)

→英語の表現を正しく翻訳してあります。
ただBOLには’ 共有範囲。共有リソース ロック。シリアル化可能範囲スキャン。
’と表現しており、範囲末尾のキーという表現はありません。
このケースも修正は不要です。

7)P.434 表8-4 説明列のRangeS_SロックとRangeS_Uロックが略称列のRangeS-Sと
RangeS-Uとの違いが不明確。同じであれば名称も合せてほしい。

→RangeS_SロックとRangeS-S、RangeS_UロックとRangeS-Uはそれぞれ、
共有キー範囲ロック、更新キー範囲ロック、の意味で同じです。


8)P.486 表8-14 時間5の部分 「-- このDDLは不正です。」不正の理由が本文から読
み取れない。
誤字なのか?あっているなら不正の理由が不明。

→これは原文がlegalでしたので、明らかに誤訳です。
「このDDLは正しく動作します。」に訂正します。

10)P.488 表8-16 のREAD COMMITED SNAPSHOT分離の説明:「このオプションが有効なときには、データベース内にアクティブなセッションは他に存在しません。」とありますが、これはどういうことでしょうか?
納得しがたいのですが、このオプションを有効にすると、DBがシングルユーザモード
でしか立ち上げられない、という理解でよいのでしょうか?


→少し言葉足らずのようです。以下のように修正します。
「このオプションが有効なときには、データベース内に他の更新中のアクティブなセッションは存在しません。」


11) P.488 表8-16 のREAD COMMITED SNAPSHOT分離の説明:「RCSIはテーブルレベルのオプションなので、~」とありますが、直前の説明では、データベースレベルの設定と読み取れます。
これは何を言おうとしているのでしょうか?
曲解して、分散トランザクション環境における各DBの設定を合わせる必要がない…っ
ていうことをこの説明でいっているわけではないですよね?

→このケースも少し言葉足らずのようです。
設定はデータベースレベルで、実際の動作はテーブル単位です。
「RCSIの動作はテーブルレベルのオプションなので、~」
に修正します。


12)P.491 l.1 「UPDATE NewProduct」の部分、後の説明を読むと「UPDATE Product」
の間違いではないでしょうか?

→これは、このT-SQLの前のコードサンプルで、
select * INTO NewProduct
FROM Production.Product
という記述がありますので、このままで結構です。


13)P.492 l.6「バージョニング情報の14バイトを協調して示しました。」は「強調し
て」ではないでしょうか?
ただ、強調されている14バイトが見つからないため、どこかの部分を強調していただ
きたく。

→これは、強調してが正しいです。
Memory Dump
00000010: 00fc0000 00000000 00000290d 00000000
をゴジック体で表してください。


16)P.505 表8-17の時間6の部分、「>return ROW5<」ではなく「>return ROW6<」の間
違い。

→これは正しい表現です。
修正の必要はありません。
-----ここまで-----


No virus found in this incoming message.
Checked by AVG.
Version: 7.5.503 / Virus Database: 269.16.2/1143 - Release Date: 2007/11/21 10:01


No virus found in this outgoing message.
Checked by AVG.
Version: 7.5.503 / Virus Database: 269.16.4/1145 - Release Date: 2007/11/22 11:49

こんな感じでした。

匿名 さんのコメント...

△△さん。ちゃんと買った本隅々まで読んでるんですね。ある程度流し読みして、本の上に印鑑を押して終わりかと思ってましたよ。見直しました。^ー^

wgd さんのコメント...

私にとっては、本当に流し読みだけする本と、普通に読む本と、熟読する本があります。今回も大半の本のとおり、普通に読む本で、500ページを通勤電車で1か月で読むペースです。ただ、翻訳本は「てにをは」や文内部の単語の配置の癖が強く、また翻訳者さんの当事者意識が薄いのが難点です。普通のコンピュータ系の翻訳本は普通に読めば1ページに1点ぐらいは、微妙な表現があるし、10ページに1件ぐらいは、誤字が見つかります。(大半の正誤表は情報を隠しているとしか思えないぐらい貧弱です。)それに引き替え翻訳本ではないコンピュータ本だと、見つけた誤字情報の半分ぐらいは正誤表に載っているのでまあ安心できますよね。

なお、流し読みの物も気になるところは見つけられるけど、立ち止まり考えたくないので、無視してます。
熟読する本は、質問するほど理解できていないものが大半なので、質問は理解できてから、、、と思っていると、どこが気になったのかっていうのも忘れてしまいます。
ま、今回みたいにチェックしながら読むっていうのは、やりたくないんだけどね。

、、、でお前が作るドキュメントはどうなんだ?なんて聞かないでね。別にドキュメント単体で稼いでるわけじゃないんだから。