有没有办法使用 C# 以编程方式停止当前正在运行的 SQL Server 2000 DTS(不是 SSIS)包?我认为可以使用 COM API 执行包,但我找不到停止正在运行的包的方法。提前致谢。
更新:SSIS 中有一种方法可以获取正在运行的包列表和一种停止它们的方法。但我在 COM 对象 API 中找不到 DTS 包的等效项。
最佳答案
这里有几个选项:
声明@TEST INT;
设置@TEST =
(选择最大值(SPID)
从 master.dbo.sysprocesses
WHERE program_name IN ('我想杀死这个 SPID'));
如果@TEST 不为空
开始
声明@KILL_COMMAND NVARCHAR(100);
SET @KILL_COMMAND = 'KILL' + CONVERT(NVARCHAR(100), @TEST);
EXEC sp_executeSQL @KILL_COMMAND;
结尾
上述方法的缺点是它只适用于杀死具有数据库连接的包。如果您使用的 DTS 包未连接到主机服务器,则不会有可终止的 SPID。如果有多个 SPID,这也不会将它们全部杀死。您可能需要修改代码以构建要终止的 SPID 列表。然后是您必须设置应用程序名称的事实。您可能希望为每个 DTS 包设置唯一值,以免意外杀死错误的包。默认值似乎设置为 DTS 设计器,如果服务器上运行多个程序包,这将是不好杀死的。
关于c# - 以编程方式停止 DTS 包(使用 C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3479016/