web-dev-qa-db-ja.com

リンクサーバーから読み取られたデータは、運用サーバーで異なるデータ型を返します

SQLサーバーがSP内のリンクされたOracleサーバーからデータを取得しています。

開発サーバーでは、EF6はSPが列の1つに対してdoubleデータ型を返すことを主張していますが、製品では同じ列がdecimalであると主張しています。

SQL Serverのバージョンは少し異なります。

  • 製品:11.0.5582.0
  • 開発:11.0.5613.0

リンクサーバーの構成方法には(明らかな)違いはありません(つまり、SSMSの接続プロパティを比較しました)。

新機能であるため、本番データベースにはデータベースに非常に少ない(ゼロ、偶数)行がありますが、開発サーバーには多くあります。開発の途中でデータ型を変更する必要があったことを思い出すので、私は関連しているかもしれないと感じています(当時はあまり考えていませんでした)。

ここの問題は何でしょうか?

3
mootinator

観察された動作の違いは、2つのサーバー間のパッチレベルの違いによるものです。

SQL Server 2012 SP2の累積的な更新6に含まれている KB305199 の解決策ごとに:

この修正を適用すると、精度/スケールが不明なNUMBER値は、OLE DBプロバイダーで倍精度値として扱われます。精度が重要であり、値の範囲が十分に大きくない場合は、このような値を数値(38、10)として扱い始める新しいトレースフラグ7311を有効にします。

6
mootinator