尝试通过链接服务器更新时出错(mssql - > mysql) - 选择有效

时间:2012-10-03 20:44:04

标签: mysql sql-server-2008 odbc

尝试通过链接服务器进行更新时遇到问题。错误如下:

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
  • 尝试从MS SQL连接 - > MySQL通过ODBC Connector 5.2(5.1 有同样的问题)

UPDATE 我试过用“OPENQUERY” - >这不起作用

1 个答案:

答案 0 :(得分: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 Syntax

如果仍然无法解决问题,请将实际的openquery代码粘贴到问题中。