【问题标题】:Alternative to openquery delete for MySQLMySQL 的 openquery delete 的替代方案
【发布时间】:2014-07-14 19:00:30
【问题描述】:

我正在运行 Microsoft SQL Server 2012 并尝试在 MySQL 数据库中运行 openquery 删除命令:

delete openquery(MyLinkedServer, 'select * from table_to_delete_from');

这行得通,但是非常缓慢,以至于无法生存。涉及的数据集太大了,执行上述操作要求所有要删除的 MySQL 数据必须通过 VPN 提取到 MSSQL 服务器。

当直接从 MySQL 服务器运行此命令时,观察到速度快 5 倍以上,这是可行的。

如何在不复制数据集的情况下从 MSSQL 调用 delete 命令到 MySQL 链接服务器?也许在 MySQL 端运行某种存储过程?这对openquery 有效吗?

【问题讨论】:

    标签: mysql linked-server openquery


    【解决方案1】:

    试试这个:

    exec ('delete from table_to_delete_from') at MyLinkedServer
    

    【讨论】:

    • 需要在 MySQL 链接服务器属性的“服务器选项”中启用 RPC。
    【解决方案2】:

    SSIS 的另一种情况,每当我需要与 MYSQL 通信时。并坚持在 MYSQL 表上截断进程。我提供如下程序:

    CREATE PROCEDURE [dbo].[Usp_DeleteDynamicTable] @sourceTable nvarchar(max)
    AS
    BEGIN
    DECLARE @SQL nvarchar(max)
    SET @SQL='truncate table '+ @sourceTable
    exec (@SQL) at MYSQL  --MYSQL is my linked server names
    END
    

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 2012-03-19
      • 2013-05-29
      • 2011-08-01
      • 1970-01-01
      相关资源
      最近更新 更多