我正在运行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
吗?
答案 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