現在オフラインです。再接続するためにインターネットの接続を待っています

[FIX] SQL Server 7 Oracle の Numeric 列でエラー 7354 が発生する

この記事は、以前は次の ID で公開されていました: JP243027
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
BUG #: 36489 (SQLBUG_70)
BUG #: 18722 (SQLBUG_70)
BUG #: 47131 (SQLBUG_70)
現象
MSDAORA OLE DB プロバイダを使った Oracle リンク サーバーを使用して、数値列を含むテーブルをクエリすると次のようなエラーがでます。
Server: Msg 7354, Level 16, State 1, Line 1 OLE DB provider 'MSDAORA'supplied invalid metadata for column 'columnname'. The data type is notsupported.
数値列が選択リストになくてもクエリは失敗します。
原因
数値データ型の列長を指定しない(精度なし、デフォルトなし、NULL はあり) 場合、精度と小数点部桁数のない数値データ型が Oracle では 255 までの精度を備えた可変長の数値で表されます。
回避策
回避策の詳細については、Microsoft Knowledge Base にある以下のアーティクルをご覧ください。
221552[SQL]PRB: Oracle の NUMERIC 列で SQL 分散クエリはエラーをだす
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。この問題は Microsoft SQL Server version 7.0 Service Pack 2 で修正済みです。最新の SQL Server Service Pack のダウンロードおよびインストールの詳細については、次のマイクロソフト Web サイトを参照してください。
詳細
SQL Server 7.0 サービスパック 2(SP2) は上記の問題について修正されていますが、SP2 のセットアップでは、sp_columns_ex カタログストアドプロシージャの更新したバージョンがインストールされません。そのため、sp_columns_ex の呼び出しを行うと以下のエラーが発生します。
Server: Msg 515, Level 16, State 2, Procedure sp_columns_ex, Line 133
Cannot insert the value NULL into column 'DATA_TYPE', table'tempdb.dbo.#tmp_columns_XX'; column does not allow nulls. INSERT fails. The statement has been terminated.
この問題が発生した場合、SP2 にある INSTCAT.SQL を実行してください。このスクリプトの実行方法については SQL Server 7.0 Books Online の "How to Upgrade the Catalog Stored Procedures" をご覧ください。

SQL Server の数値型の精度があまりにも大きければ、オラクルの数値型は、可変長文字 (384) に変換されます。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 243027(最終更新日 2000-04-17) を基に作成したものです。

number datatype oledb
プロパティ

文書番号:243027 - 最終更新日: 12/05/2015 16:07:06 - リビジョン: 1.2

  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbbug kbfix number oledb データ型 KB243027
フィードバック