我正在尝试使用SSIS脚本任务将文件从本地文件夹上传到SFTP。从https://winscp.net/eng/docs/library#csharp复制脚本时出现错误
错误:无法执行脚本,因为脚本入口点无效。
以下是完整的脚本:
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using WinSCP;
namespace ST_1ae95a63b20641ffb8ed1769503e2841
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region Help: Using Integration Services variables and parameters in a script
class upload
{
public static int Main()
{
try
{
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = "a.com",
UserName = "btest",
Password = "c",
SshHostKeyFingerprint = "ssh-rsa 2048 avc",
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Upload files
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult =
session.PutFiles(@"d:\abc\efdg\*", "/cvf/pqr/", false, transferOptions);
// Throw on any error
transferResult.Check();
// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
}
}
return 0;
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e);
return 1;
}
}
}
}
}
如果有人可以帮我解决这个错误,我将不胜感激。
答案 0 :(得分:2)
作为WinSCP example for SSIS shows,签名应该是:
[AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : VSTARTScriptObjectModelBase
{
public void Main()
{
// ...
}
}
特别是,删除嵌套的upload
类。
答案 1 :(得分:1)