替代openquery删除MySQL

时间:2014-07-14 19:00:31

标签: mysql linked-server openquery

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

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

然而,这是完全的,痛苦地缓慢到不可行的程度。涉及的数据集太大了,执行上述操作要求必须通过VPN将所有要删除的MySQL数据提取到MSSQL服务器。

直接从MySQL服务器运行此命令时,观察速度超过5倍,这是可行的。

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

2 个答案:

答案 0 :(得分:5)

试试这个:

exec ('delete from table_to_delete_from') at MyLinkedServer

答案 1 :(得分:0)

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