#ssis
#ssis #SSIS
Вопрос:
Кто-нибудь знает, как назначить одну пользовательскую переменную другой в скрипте в SSIS?
У меня есть две пользовательские переменные, обе они имеют тип DateTime.
Я пытаюсь назначить одно другому в задаче скрипта и получаю ошибку недопустимого типа
Dts.Variables["Query_AccountingDay"].Value = Dts.Variables["Override_AccountingDay"].Value;
Выдает мне ошибку:
Ошибка: Система.Размышление.TargetInvocationException: Исключение было вызвано целью вызова. —> Microsoft.SQLServer.Dts.Runtime.Исключение DtsRuntimeException: Тип значения, присваиваемого переменной «User::Query_AccountingDay», отличается от текущего типа переменной. Переменные не могут изменять тип во время выполнения. Типы переменных являются строгими, за исключением переменных типа Object.
Я попробовал кастинг, это не сработало.
Помогите, пожалуйста
Ответ №1:
Итак, вы пробовали?
Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString());
Если это не работает, не могли бы вы сделать быстрый снимок экрана окна переменных, чтобы мы могли проверить типы данных?
Мой выглядит так, переопределяющее значение — 2007-07-07, запрос — 2011-10-19
Задача скрипта, настроенная таким образом
Основная часть кода выглядит следующим образом
public void Main()
{
MessageBox.Show(String.Format("{0}:{1}", "Override_AccountingDay", Dts.Variables["Override_AccountingDay"].Value));
MessageBox.Show(String.Format("Before {0}:{1}", "Query_AccountingDay", Dts.Variables["Query_AccountingDay"].Value));
Dts.Variables["Query_AccountingDay"].Value = Convert.ToDateTime(Dts.Variables["Override_AccountingDay"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
MessageBox.Show(String.Format("After {0}:{1}", "Query_AccountingDay", Dts.Variables["Query_AccountingDay"].Value));
}
Результаты выполнения через окна сообщений
---------------------------
---------------------------
Override_AccountingDay:7/7/2007 7:37:36 AM
---------------------------
OK
---------------------------
---------------------------
---------------------------
Before Query_AccountingDay:10/19/2011 7:37:41 AM
---------------------------
OK
---------------------------
---------------------------
---------------------------
After Query_AccountingDay:7/7/2007 7:37:36 AM
---------------------------
OK
---------------------------
Комментарии:
1. Да, это исправлено. Я пытался выполнить приведение с помощью (DateTime), я также обнаружил небольшую ошибку в своем коде, которая также вызывала проблему. спасибо за этот хорошо написанный ответ!
Ответ №2:
Переменная Query_AccountingDay должна быть указана как переменная ReadWrite, а не как переменная только для чтения, как вы указали.
Надеюсь, это поможет
Нед
Комментарии:
1. Чтобы сделать это правдоподобным ответом через два года, вы действительно должны рассказать, почему это актуально, и показать, как это сделать.