有没有办法停止使用C#?以编程方式运行当前正在运行的SQL Server 2000 DTS(而不是SSIS)包。我认为可以使用COM API执行包,但我找不到停止正在运行的包的方法。提前谢谢。
更新:SSIS中有一个方法可以获取正在运行的包列表和一个停止它们的方法。但我在COM对象API中找不到与DTS包等效的一个。
答案 0 :(得分:0)
以下是一些选项:
如果您在作业中运行DTS包,则可以使用sp_stop_job停止正在运行的作业。
如果您知道DTS包的进程的SPID,则可以向SPID发出KILL command,这将停止执行DTS包。识别SPID的一种可能方法是通过一些识别信息在master.dbo.sysprocesses表中找到SPID,然后为SPID发出KILL命令。这是我通过设置连接属性测试的一组代码 - >高级 - >应用程序名称我想杀死此SPID 。
DECLARE @TEST INT;
SET @TEST =
(SELECT MAX(SPID)
FROM master.dbo.sysprocesses
WHERE program_name IN('我想杀掉这个SPID'));
如果@TEST不是空
BEGIN
DECLARE @KILL_COMMAND NVARCHAR(100);
SET @KILL_COMMAND ='KILL'+ CONVERT(NVARCHAR(100),@ TEST);
EXEC sp_executeSQL @KILL_COMMAND;
END
上述方法的缺点是它只能用于杀死具有数据库连接的包。如果您使用的DTS包未连接到主机服务器,则不会有可填充的SPID。如果有多个SPID,这也不会全部杀死它们。您可能必须修改代码以构建要杀死的SPID列表。然后,您必须设置应用程序名称。您可能希望为每个DTS包设置唯一值,以便您不会意外杀死错误的包。默认值似乎设置为 DTS Designer ,如果服务器上运行了多个软件包,那么这将是不好的。
您或许可以启动并杀死DTS 2000程序包using extended stored procedures,但我并非100%确定这是可行的。