我在 SSIS (2008) 包中有一个脚本任务,可将文件从远程 FTP 服务器下载到本地目录。脚本任务是用 C# 2008 编写的,并使用 WinSCPnet.dll。使用 WinSCP 文档中的示例,我想出了下面的脚本。该脚本可以正常运行以下载文件,但所有文件成功/失败消息都会保留,直到整个脚本完成,然后所有消息都将立即转储。使用文件进度根本不显示Console.Write(),并试图利用Dts.Events.FireInformation()在SessionFileTransferProgress给我Error: "An object reference is required for the non-static field, method, or property Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase.Dts.get"有没有一种方法可以使用 DTS.events.Fire* 事件来显示文件进度信息,以及每个文件后的文件完成状态?
1 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
我想出的答案很简单。我SessionFileTransferProgress从private static void改为private void。一旦这个方法不再是静态的,我就可以this用来调用这些Dts.Events.Fire*方法。SessionFileTransferProgress改为:
private void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
bool fireAgain = false;
this.Dts.Events.FireInformation(0, null,
string.Format("\r{0} ({1:P0})", e.FileName, e.FileProgress),
null, 0, ref fireAgain);
// Remember a name of the last file reported
_lastFileName = e.FileName;
}
- 1 回答
- 0 关注
- 340 浏览
添加回答
举报
0/150
提交
取消