尝试通过链接服务器(mssql->;mysql)更新时出错-选择works
我在尝试通过链接服务器进行更新时遇到问题。错误如下:尝试通过链接服务器(mssql->;mysql)更新时出错-选择works,mysql,sql-server-2008,odbc,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 "M
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语句,它确实有效:
select top 100 * from [LINKED_SERVER_NAME]...[Table_Name] where ID = 5061
我正在使用:
- MicrosoftSQLServerManagementStudio 2008
- 试图通过ODBC连接器5.2(5.1)从MS SQL->MySQL进行连接 (有同样的问题)
UPDATE OPENQUERY (LINKED_SERVER_NAME, 'SELECT post_content FROM Table_Name WHERE ID = 5061')
SET post_content = 'alert';
- 不要在mysql查询中使用[]方括号;你可以用撇号代替李>
- 检查您是否对该表具有更新权限李>
- 尝试直接在mysql连接上运行更新。这可能是一个与链接服务器无关的错误李>
- mysql表是视图吗?它可能未正确配置为可更新视图。
如果这仍然不能解决问题,请将实际的openquery代码粘贴到问题中 从内存中,您要查找的语法是:
updateopenquery(LINKED_SERVER_NAME,'SELECT post_content From Table_NAME,其中ID=4061')SET post_content='alert'
-请参阅OPENQUERY是新事物吗。大约两年前,我成功地做到了这一点。我最近刚试过,这就是我遇到问题的地方。当链接服务器是非SQL server实例时,我总是不得不这样做。否则,如果链接的服务器是另一个SQL Server实例,则标准的ANSI SQL似乎(大部分)可以。我想,另一件要检查的事情是,链接服务器设置的帐户详细信息是否对基础表\u名称具有更新权限。