SQL Server 2008の空間型のWell-Known Text(WKT)への変換で、マシン間で一貫性のない動作が発生しています。データが同じに格納されているかのように見えます。しかし、WKTへの変換は、マシンによって異なる動作をします。ここでSQL空間型のWKT変換でのマシン間での矛盾
が、私は問題を特定するために一緒に入れて何か:
POINT(-124.95714099999999 39.326679)
:私が利用可能な様々なマシンではSET NOCOUNT ON; DECLARE @TestTable TABLE (TestPoint GEOGRAPHY); INSERT INTO @TestTable(TestPoint) VALUES (geography::STGeomFromText('POINT(-124.957140999999993 39.326679)',4326)); DECLARE @PointAsText NVARCHAR(max); SELECT @PointAsText = TestPoint.STAsText() from @TestTable; PRINT @PointAsText; DECLARE @PointAsBinary BINARY(22); SELECT @PointAsBinary = CAST(TestPoint AS BINARY(22)) from @TestTable; print @PointAsBinary; print @@version;
、私は2つの異なる結果を参照してください0xE6100000010C1EA5129ED0A94340492A53CC413D5FC0
Microsoft SQL Server 2008 R2(SP1) - 10.50.2500.0 (X64)
2011年6月17日0時54分03秒
のWindows NT 6.1上の著作権(c)マイクロソフトコーポレーション
デベロッパー版(64ビット)(7601をビルドします。サービスパック1)
又は
POINT(-124.957141 39.326679)
0xE6100000010C1EA5129ED0A94340492A53CC413D5FC0
のMicrosoft SQL Server 2008 R2(RTM) - 10.50.1600.1 (インテルX86)
2010年4月2日午後03時53分02秒
著作権(c)Microsoft Corporation
Devel Windows NT 6.0上のOPER版(ビルド6002:サービスパック2)(ハイパーバイザ)は
別のテストケース2008 R2(RTM)とX64マシンはが-124.95714099999999を与えることを示しています。したがって、確かにx86対x64を示します。
私は浮動小数点精度が不足していることに少なくとも少し慣れていますが、アーキテクチャー固有のことは認識していませんでした。 SQL空間ストレージで作業する場合、データがこれらのようなWKT変換を通過するように見えます。このデータを扱うより適切な戦略が見当たらないのですか?
ああ、豆!申し訳ありませんが、私はSQLサーバーからの出力にコピー貼り付けをしてしまいました。システムの1つはx86で、もう1つはx64です。マシンに再びアクセスできるときに、正しい@@バージョンのBLOBを取得します。 –
さて、コピー+貼り間違いを修正するための質問を更新しました。また、SELECT対PRINTのクイックチェックを行いましたが、違いはありません。 –