如何在c#

时间:2016-12-20 14:23:12

标签: c# sql-server ssis dts

我已经设法让我的应用程序运行我的测试SSIS包但我希望能够检索它返回的信息I.E花费的时间等等。

以下是我执行包的方式:

//EXECUTES THE PACKAGE.
Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSExecResult pkgResults = pkg.Execute(null,container.Variables, null, null, null);

pkgResults仅返回成功或失败,而不返回任何其他相关信息。

有没有办法可以获取我存储在SQL数据库中的信息记录?

1 个答案:

答案 0 :(得分:0)

钟,

我假设您想知道执行整个程序包或程序包内的任务所花费的时间。同样,我建议你尽可能使用ManagedDTS程序集(而不是包装程序集)。

如果您使用的是ManagedDTS程序集,则所有容器和任务主机对象都会从DtsContainer对象继承StartTime和StopTime属性。因此,在ManagedDts程序集中,您可以执行此操作(因为pkg是ManagedDTS程序集中的Package对象)

pkg.StartTime - pkg.StopTime

如果您想要包中特定可执行文件的执行时间,您仍然可以在该特定可执行文件上调用StartTime和StopTime属性(因为它继承自DtsContainer)。

在包装器组件中,事情不那么简单。 StartTime和StopTime属性可通过IDTSExecutionMetrics100接口获得。您需要将包对象(或任何其他任务/容器)转换为该接口,然后访问StartTime和StopTime属性。(因为pkg是包装器程序集中的IDTSPackage100对象)

(pkg as IDTSExecutionMetrics100).StartTime - (pkg as IDTSExecutionMetrics100).StopTime

如果您正在寻找包中特定可执行文件的执行持续时间,您将访问该特定可执行文件,将其强制转换为IDTSExecutionMetrics100接口,然后访问StartTime和StopTime。

ManagedDTS装配简化了这些操作,并且所有相关的属性和方法都比通过Wraper装配更直观。

相关问题