0

リンクサーバーを介して更新を行おうとすると問題が発生します。エラーは次のとおりです。

OLE DB provider "MSDASQL" for linked server "**LINKED_SERVER_NAME" returned message "Data provider or other service returned an E_FAIL status.".
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "LINKED_SERVER_NAME".

データの選択に問題はありませんが、更新しようとすると失敗します。私の更新コード:

Update [LINKED_SERVER_NAME]...[Table_Name]
SET post_content = 'alert'
where ID = 5061

これは、機能する私の選択ステートメントです。

select top 100 * from [LINKED_SERVER_NAME]...[Table_Name] where ID = 5061

使ってます:

  • Microsoft SQL Server Management Studio 2008
  • ODBCコネクタ5.2を介してMSSQL->MySQLから接続しようとしています(5.1にも同じ問題があります)

UPDATE「OPENQUERY」を使おうとしました->これも機能しません

4

1 に答える 1

1

OPENQUERYは新しいものではありませんが、Microsoft 以外のリンク サーバーを扱う場合には、はるかに信頼性が高くなります。

UPDATE OPENQUERY (LINKED_SERVER_NAME, 'SELECT post_content FROM Table_Name WHERE ID = 5061') 
SET post_content = 'alert'; 
  • [ ] 角括弧を mysql クエリで使用しないでください。代わりにアポストロフィを使用できます。
  • テーブルに対する更新権限があることを確認してください。
  • mysql 接続で直接更新を実行してみてください。これは、リンク サーバーに関係のないエラーである可能性があります。
  • mysql テーブルはビューですか? 更新可能なビューとして正しく構成されていない可能性があります。 MySQL CREATE VIEW 構文

それでも解決しない場合は、実際の openquery コードを質問に貼り付けてください。

于 2012-10-11T22:56:26.903 に答える