0

リンク サーバー セットアップを介して SQL Server 2008 R2 から PervasiveSQL バックエンド (Sage ERP システム) のデータを更新しようとしています。以下は詳細と返されたエラーメッセージです...キッカーは、更新ステートメントが開発ボックスでうまく機能し、非常によく似たセットアップであることです。どんな助けでも大歓迎です!

環境:

  • Windows Server 2008 Enterprise (クラウド サーバー、ラックスペース)
  • Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (Intel X86) Express Edition with Advanced Services on Windows NT 6.1 (ビルド 7601: Service Pack 1) (WOW64) (ハイパーバイザー)
  • Pervasive SQL v.10 バックエンドで動作する Sage Timberline ERP

セットアップ:
32 ビットの Timberline Driver (OBDC) を使用して、SQL Server 2008 に LINKED SERVER セットアップがあります。リンクされたサーバーは、MSDASQL プロバイダーを使用し、次の 2 つのプロパティが TRUE に設定されています。 /p>

問題:
リンク サーバーからデータを正常にプルできます。以下のクエリを参照してください。SSMS のリンク サーバー経由でオブジェクトを正常に参照できます。

SELECT * 
FROM OPENQUERY (TLLINKSERVER, 'SELECT * FROM TABLE1 where JOBID = ''00-00-111111''')

ただし、UPDATE以下のステートメントは次のエラーを返します。

UPDATE OPENQUERY(TLLINKSERVER, 'SELECT * FROM TABLE1 WHERE JOBID = ''00-00-111111''')
SET DATEFIELD = '2013-07-15'

エラー:

リンク サーバー "TLLINKSERVER" の OLE DB プロバイダー "MSDASQL" がメッセージ "[Sage Timberline Office][Sage Timberline Office ODBC Driver]Syntax Error." を返しました。リンク サーバー "TLLINKSERVER" の OLE DB プロバイダー "MSDASQL" がメッセージ "[Sage Timberline Office][Sage Timberline Office ODBC Driver]UPDATE "\SERVER1\Company Data\DATA\COMPANY1\"<< ??? >>."TABLE1 を返しました。 " SET "DATEFIELD1"=? WHERE "JOBID"=? AND "DATEFIELD1"=?".
メッセージ 7343、レベル 16、状態 4、行 1
リンク サーバー "TLLINKSERVER" の OLE DB プロバイダー "MSDASQL" は、テーブル "[MSDASQL]" を更新できませんでした。

4

2 に答える 2

1

これは、SSMS からテーブル sin Oracle を更新する方法です。

この場合のリンク サーバー名は ですMyLinkedServer

CONTACT_EMAIL列を次のいずれかMyEmail@MyDomain.COMに更新しています。STATE(KY,OH,NY,PA,VA,DC)

UPDATE L 
SET L.CONTACT_EMAIL ='MyEmail@MyDomain.COM'
FROM OPENQUERY(MyLinkedServer, 'SELECT * from MyTable')L
WHERE L.STATE IN('KY','OH', 'NY','PA','VA','DC')

OPENQUERYメソッドは完全に機能します。

于 2014-02-05T20:45:03.630 に答える