首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openquery插入不工作

Openquery插入不工作
EN

Stack Overflow用户
提问于 2014-06-12 09:03:13
回答 2查看 3.5K关注 0票数 2

我有一个链接的MySQL -server到MSSQL -server,我试图将数据插入到MySQL -server上的表admin_user中,但最终得到了错误:

无法处理对象"dbo.admin_user“。用于链接服务器"MYDB“的OLE提供程序"MSDASQL”表示对象没有列,或者当前用户对该对象没有权限。

这样做很好:

代码语言:javascript
复制
SELECT * FROM openquery([MYDB], 'SELECT * FROM admin_user')

这将得到错误:

代码语言:javascript
复制
INSERT into openquery([MYDB], 'dbo.admin_user') values ('Testi','Testaaja','me@google.com','koe','','','','','','1','N;','','')

下面是我用来创建ODBC连接的用户的权限

( xx.xxx.xxx.xx )\x{e76f}=. Y,Y Y,Y ()\x{e76f}\x{e76f}| % | me | \*asdasadasdsadasdasdsad| Y | Y | Y | Y | Y | > Y | Y | Y | Y | Y | Y > | Y | Y | Y | Y | Y > | Y | Y | Y | Y > | Y | Y | Y | Y > | Y | Y | Y | Y | > Y | | | | > | 0 | 0 | 0 | 0 > | | NULL | 我的目录是bitnami_magento,我将提供程序字符串配置为 XX.XXX.XXX.XXX;PORT=3306;DATABASE=bitnami_magento;DRIVER=(MySQL ODBCD5.3 ANSI驱动程序); 此外,我还取消了提供者选项(MSDASQL)中的“级别零”框,并确保允许ad_hoc查询。我做错什么了? 下面是我遵循http://dbperf.wordpress.com/2010/07/22/link-mysql-to-ms-sql-server2008/的说明

EN

回答 2

Stack Overflow用户

发布于 2014-06-12 09:45:29

查询中有一个错误:

在OPENQUERY()中,您必须使用MySQL表名而不是MSSQL表名称(如果您想插入到MySQL表中)。

下面的语法应该可以工作

代码语言:javascript
复制
INSERT INTO OPENQUERY([MYDB], 'SELECT * FROM mysqlDbName.mysqlTableName') VALUES
('Testi','Testaaja','me@google.com','koe','','','','','','1','N;','','')

请相应地将mysqlDbName.mysqlTableName更改为MySQL数据库和表名。

票数 1
EN

Stack Overflow用户

发布于 2014-06-12 09:55:44

问题是我是个白痴。Openquery的语法要求返回一个结果集。

因此,它显然需要一个“虚拟查询”作为实际查询的一部分,以便得到响应的结果集。编写"where 1=0“使查询速度更快,因为它不会得到任何响应的实际结果。

工作实例:

代码语言:javascript
复制
 insert openquery(MYDB, 'select firstname from admin_user where 1=0') values ('3','Testi','Testaaja','me@google.com','koe12','koe22','','','','0','0','1','','','')

OpenQuery要求返回结果集,但与OpenQuery一起使用的UPDATE、DELETE和INSERT语句不返回结果集。

http://support.microsoft.com/kb/270119/fi

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24180390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档