Чтение системной переменной из компонента Script - PullRequest
0 голосов
/ 29 января 2010

Каков наилучший способ чтения системных переменных из компонента Script.

Попробовал, как показано ниже: Работает нормально, когда переменная пользователя

    base.PreExecute();
    IDTSVariables100 variables = null;
    VariableDispenser.LockForRead("System::ContainerStartTime");
    VariableDispenser.GetVariables(out variables);
    auditTimeStamp = Convert.ToDateTime(variables[1].Value);
    System.Windows.Forms.MessageBox.Show(auditTimeStamp.ToString());
    variables.Unlock();

при попытке прочитать Системная переменная выбрасывает следующую ошибку:

Компонент скрипта обнаружил исключение в коде пользователя: Имя проекта: SC_0bfc7da1c6fe4b83bc124b87eb4178e5 Исключение из HRESULT: 0xC0010009

в Microsoft.SqlServer.Dts.Runtime.Wrapper.ID.It_RiableSID.TarSID.Text_It_It_Inарв ScriptMain.PreExecute () в Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute ()

любые подсказки, пожалуйста.

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 июня 2013

Вы изменили индекс, с

Convert.ToDateTime(variables[1].Value);

до

Convert.ToDateTime(variables[0].Value);
1 голос
/ 01 февраля 2010

Хорошо, это сделано как

        #region Class Variables

        int jobId;
        DateTime auditTimeStamp;
        IDTSVariables100 variables;
        const string tableName = "ORGANISATION_PROVIDER"; 

        #endregion

        public override void PreExecute()
        {
            #region On PreExecute - Get the JOB ID passed - COMMON
             base.PreExecute();
             variables= null;
             VariableDispenser.LockForWrite("System::ContainerStartTime");
             VariableDispenser.GetVariables(out variables);
             auditTimeStamp = Convert.ToDateTime(variables[0].Value);
             variables.Unlock();

           #endregion
        }

Это прекрасно работает ... не уверен, что я сделал неправильно ранее.

0 голосов
/ 31 января 2010

Вы можете создать пользовательскую переменную, которая оценивается как выражение, которое ссылается на системную переменную. Как то так

@[System :: PackageName].
...