我已经设法让我的应用程序运行我的测试SSIS包但我希望能够检索它返回的信息I.E花费的时间等等。
以下是我执行包的方式:
//EXECUTES THE PACKAGE.
Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSExecResult pkgResults = pkg.Execute(null,container.Variables, null, null, null);
pkgResults仅返回成功或失败,而不返回任何其他相关信息。
有没有办法可以获取我存储在SQL数据库中的信息记录?
答案 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装配更直观。