0

我正在尝试从 Micrsoft SQL 服务器运行删除查询以清除远程 mySQL 表中的表。

查询是:

delete from OPENQUERY(WEB_DB,'select id,university_name,college_name from table_name');

这是返回错误:

链接服务器“WEB_DB”的 OLE DB 提供程序“MSDASQL”返回消息“键列信息不足或不正确。更新影响了太多行。”。消息 7345,级别 16,状态 1,第 1 行链接服务器“WEB_DB”的 OLE DB 提供程序“MSDASQL”无法从表“select id,university_name,college_name from table_name”中删除。更新不符合架构要求。

用于创建表的 SQL 如下:

CREATE TABLE IF NOT EXISTS `table_name` (
  `pk` int(11) AUTO_INCREMENT,
  `studentid` int(11) default NULL,
  `university_name` varchar(255) default NULL,
  `college_name` varchar(255) default NULL,
  CONSTRAINT PRIMARY KEY(`pk`)
);

有趣的是,它似乎确实删除了远程数据库记录的某些部分,应该有 ~900,第一次运行删除命令会将其减少到 ~700,所以看起来限制大约是 200 行?!

非常感谢任何帮助。

谢谢乔娜

4

3 回答 3

2

如果您尝试删除远程表中的所有行,为什么不:

DELETE WEB_DB...table_name;

或者,如果这是您经常做的事情,为什么不在另一端放置一个存储过程来调用呢?

你也可以试试:

EXEC ('delete table_name') AT WEB_DB;
于 2012-05-21T16:31:46.620 回答
0

要使用 openquery 清除 mysql 中的表,您应该尝试以下操作:

EXEC('TRUNCATE TABLE table_name') AT WEB_DB
于 2017-09-27T12:35:13.137 回答
0

下面的语法为我解决了它:

EXEC ('delete table_name where a in (1,2,3)') AT linked_server
于 2018-04-26T19:15:13.720 回答