Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试通过链接服务器(mssql->;mysql)更新时出错-选择works_Mysql_Sql Server 2008_Odbc - Fatal编程技术网

尝试通过链接服务器(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进行连接 (有同样的问题)
更新 我曾尝试使用“OPENQUERY”->这也不起作用。

不是新的,但在处理与microsoft无关的服务器时,它要可靠得多

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名称具有更新权限。