1

I'm getting a strange error while running my Script Task in SSIS and i do not understand why

I'm trying to get the latest file inside an external SFTP server and then, store it in my local environment, in the directory that I put in the localPath variable

It is clearly not a file, I am introducing a full path

The error message:

Error: Error: WinSCP.SessionRemoteException: «C:\Users\Downloads» is not a file!
   in WinSCP.OperationResultBase.Check()
   in ST_t5fbgt5564cf3a165da70892d8c435v.ScriptMain.Main()

My code:

#region Namespaces
using System;
using Microsoft.SqlServer.Dts.Tasks;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Linq;
using WinSCP;
#endregion

namespace ST_t5fbgt5564cf3a165da70892d8c435v
{
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public partial class ScriptMain :
        Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {
        public void Main()
        {
            try
            { 
            SessionOptions sessionOptions = new SessionOptions
            {
                Protocol = Protocol.Sftp,
                HostName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                UserName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                Password = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                PortNumber = xx
            };

            using (Session session = new Session())
            {
                session.Open(sessionOptions);

                const string remotePath = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
                const string localPath = @"C:\Users\Downloads";

                RemoteDirectoryInfo directoryInfo = session.ListDirectory(remotePath);

                RemoteFileInfo latest =
                    directoryInfo.Files
                        .Where(file => !file.IsDirectory)
                        .OrderByDescending(file => file.LastWriteTime)
                        .FirstOrDefault();

                if (latest == null)
                {
                    throw new Exception("No found");
                }

                session.GetFiles(
                    RemotePath.EscapeFileMask(latest.FullName), localPath).Check();
            }
             Dts.TaskResult = (int)DTSExecResult.Success;
        }
            catch (Exception e)
            {
                Console.WriteLine("Error: (0)", e);
                return 1;

            }
            }


        #region ScriptResults declaration
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

    }
}

What is going on?

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
JustToKnow
  • 785
  • 6
  • 23

0 Answers0