gpt4 book ai didi

mysql - Openquery 的特殊语句

转载 作者:行者123 更新时间:2023-11-29 13:18:04 24 4
gpt4 key购买 nike

我想将数据从 MS SQL Server 数据库传输到 MySQL 数据库。因此,我向 MS SQL 添加了一个链接服务器,以便我可以使用 Openquery 将数据插入 MySQL 数据库。我想优化数据传输的性能,并且找到了提高 MySQL 数据加载性能的指南。

一项优化包括禁用 AUTOCOMMIT 模式,但我无法使用 Openquery 来做到这一点。

我尝试了两种方法:

SELECT * from openquery(MYSQL,'SET autocommit=0') 

exec openquery(MYSQL,'SET autocommit=0')

我得到了:

Cannot process the object "SET autocommit=0". The OLE DB provider "MSDASQL" for linked server "MYSQL" indicates that either the object has no columns or the current user does not have permissions on that object.

是否可以通过openquery执行这样的语句?

谢谢,米凯尔

最佳答案

OPENDATASOURCE() 和 OPENROWSET() 允许附加服务器连接。您不需要提前定义链接服务器。

OPENQUERY() 取决于提前定义的静态链接服务器

这是 MSDN 引用。

http://technet.microsoft.com/en-us/library/ms188427.aspx

大多数示例都显示使用 OPENQUERY() 作为命令的源或目标的 DML(SELECT、UPDATE、DELETE、INSERT)。您想要做的是执行 session 命令。因此它会失败。此外,您甚至可能不知道 session 是否为下一次调用保持打开状态。

为什么不把MYSQL服务器上的逻辑打包成存储过程呢。存储过程可以通过使用四部分名称在链接服务器上执行吗?

例如:

插入#results EXEC server.database..stored-proc

这假设 MYSQL 具有与 ORACLE 相同的对象结构。由于我不是MYSQL人,所以无法评论。我允许你研究这个小项目。

但这应该可行。它将允许您在 MYSQL 数据库中封装任何类型的逻辑。

关于mysql - Openquery 的特殊语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com