Пакет служб SSIS, работающий в SSDT и не работающий на сервере SQL после его развертывания - PullRequest
1 голос
/ 04 апреля 2019

У меня есть пакет служб SSIS, который создает папку на следующий день на основе папки предыдущего дня в каталоге, когда я запускаю пакет непосредственно из SSDT, он создает папку, однако при развертывании пакета в каталоге интеграции сервера Sql и , я получаю сообщение об успехе, но папка не создана.

переменные в задаче скрипта enter image description here

объявление переменной enter image description here enter image description here

Пожалуйста, смотрите код задачи скрипта ниже:

   public void Main()
    {
        // TODO: Add your code here
        string DataLocation = Dts.Variables["User::FolderLocation"].Value.ToString();

        string[] Folders = Directory.GetDirectories(DataLocation);


        List<String> listFolders = new List<String>();
        List<String> listFoldersonly = new List<String>();
        List<int> lens = new List<int>();
        List<String> dates = new List<String>();
        List<DateTime> dd = new List<DateTime>();

        //get list of folders in the Directory
        if (Folders.Length > 0)
        {

            for (int x = 0; x < Folders.Length; x++)
            {

                listFolders.Add(Folders[x].ToString());
                lens.Add(Folders[x].Length);


            }
        }
        //store list of folders in an array
        string[] arrayFolders = listFolders.ToArray();
        int[] arrayLens = lens.ToArray();


        DateTime minDate = DateTime.MaxValue;
        DateTime maxDate = DateTime.MinValue;
        DateTime nextdate;

        for (int i = 0; i < arrayFolders.Length; i++)
        {
            //subtring the date from the folderlocation string
            dates.Add(arrayFolders[i].ToString().Substring(arrayLens[i] - 10));

            dd.Add(DateTime.Parse(arrayFolders[i].ToString().Substring(arrayLens[i] - 10)));

            //get the max and min date
            if (dd[i].Date < minDate)
                minDate = dd[i];
            if (dd[i] > maxDate)
                maxDate = dd[i];

        }

        nextdate = maxDate.AddDays(1);
        string nxtdate = nextdate.ToString("yyyy-MM-dd");

        String newpath = DataLocation + "\\" + nxtdate;


        Dts.Variables["User::CopyFolder"].Value = newpath.ToString();
        Dts.Variables["User::ReturnDate"].Value = nextdate.ToString();


        Directory.CreateDirectory(newpath);

        Dts.TaskResult = (int)ScriptResults.Success;
    }
...