Установить путь к файлу из базы данных в переменной SSIS для ведения журнала
У меня есть несколько путей в моей таблице базы данных, как это:
ID PATHXML PATHPICT PATHSONG
1 D:\XML\Here D:\Picture\Image D:\Blur\Song2
2 D:\XML\File D:\Picture\X-Files D:\IRONMAIDEN\Fearofthedark
Я хочу включить регистрацию в SSIS и сохранить этот результат в PathSong, например. D:\ Размытие \Song2\eventlog.log
Я создал переменную, чтобы получить этот путь. Но когда я создаю выражение, используя эту переменную, оно не работает. Так что я могу сделать, чтобы это исправить?
1 ответ
Доступ к переменным пакета в компоненте сценария (задачи потока данных) - это не то же самое, что доступ к переменным пакета в задаче сценария. Для компонента "Сценарий" сначала необходимо открыть редактор преобразования сценариев (щелкните правой кнопкой мыши компонент и выберите "Изменить..."). В разделе "Пользовательские свойства" на вкладке "Сценарий" вы можете ввести (или выбрать) свойства, которые вы хотите сделать доступными для сценария, только для чтения или для чтения-записи:
Затем в самом скрипте переменные будут доступны в виде строго типизированных свойств объекта Variables:
// Modify as necessary
public override void PreExecute()
{
base.PreExecute();
string thePath = Variables.FilePath;
// Do something ...
}
public override void PostExecute()
{
base.PostExecute();
string theNewValue = "";
// Do something to figure out the new value...
Variables.FilePath = theNewValue;
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string thePath = Variables.FilePath;
// Do whatever needs doing here ...
}
Одно важное предостережение: если вам нужно записать в переменную пакета, вы можете сделать это только в PostExecute()
метод.
Относительно фрагмента кода:
IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::FilePath");
string XlsFile;
XlsFile = varCollection["User::FilePath"].Value.ToString();
varCollection инициализируется нулем и никогда не устанавливается в допустимое значение. Таким образом, любая попытка разыменования не удастся.