Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
Добрый день!
Задача: сравнить имя файла excel из папки с полем из таблицы sql. Если имя файла присутствует в значениях поля, то переменной SSIS присвоить 1, иначе 0.
Делаю отладку пошагово. Смотрю как заполняется переменная User::Flag. В определенный момент значение переменной становится 1 (как и должно быть), после чего меняется на -1. Не могу понять как и почему это происходит.
20 янв 16, 16:13    [18706871]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
Lania,
Маловато инфы, для траблщутинга проблемы.

Как вы устанавливаете значение переменной Flag? Что выполняется потом?
20 янв 16, 16:50    [18707092]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
Цикл по каждому элементу => Коллекция Задается путь к папке, где лежат файлы excel => Сопоставление переменной : Создана переменная Path, в нее записывается путь к конкретному файлу.
В контейнер добавляется блок Задача "Выполнения SQL" => отображение параметров: параметр Path, направление input
=>Общие: подключение oledb, инструкция SQL:
declare @P as nvarchar(max);
set @P = ?;
If @P in (select distinct Названиефайла from Таблица1)
begin
select 1 as f
end
else select 0 as f
Свойство ResultSet: ResultSetType_SingleRow =>
Результирующий набор: Имя результата F , Имя переменной User::Flag.

Далее запускаю отладку. Открываю точки остонова и Локальные переменные. При Событии OnProgress значение User::Flag=1
При событии OnPostExecute User::Flag=-1.
20 янв 16, 17:02    [18707183]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
Пакет завершается успешно ошибок не выдает
20 янв 16, 17:05    [18707208]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Lania,

сама по себе переменная не изменяет значение, если её особенности не описаны в документации.
20 янв 16, 18:27    [18707715]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4901
Lania
Добрый день!
Задача: сравнить имя файла excel из папки с полем из таблицы sql. Если имя файла присутствует в значениях поля, то переменной SSIS присвоить 1, иначе 0.
Делаю отладку пошагово. Смотрю как заполняется переменная User::Flag. В определенный момент значение переменной становится 1 (как и должно быть), после чего меняется на -1. Не могу понять как и почему это происходит.


Посмотрите область действия переменной
20 янв 16, 20:29    [18707967]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Lania, это конечно не при чем, но все же поменяйте на
If  exists(select distinct Названиефайла from Таблица1 where Названиефайла = ?) 
begin 
select 1 as f
end 
else select 0 as f
21 янв 16, 09:42    [18709057]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
Владислав Колосов, это пользовательская переменная. В свойствах пакета, контейнера и блока Выполнение SQL парметр ForceExecutionValue = False.


a_voronin, область действия переменной весь пакет.

Возможно установка значения -1, является своего рода ошибкой? Можно ли как то отследить когда и почему меняется значение переменной?
21 янв 16, 09:46    [18709073]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Lania, а тип переменной?
21 янв 16, 10:04    [18709132]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
HandKot,тип переменной Int32. Когда были проблемы с типом, то при выполнении вываливалась ошибка. Изначально тип переменной был boolean, и я никак не могла понять почему выдает ошибку о разности типов.
21 янв 16, 10:09    [18709140]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
technet
IncludeInDebugDump
Указывает, включается ли значение переменной в отладочные файлы дампа.
По умолчанию для системных и определенных пользователем переменных параметр InclueInDebugDump по умолчанию имеет значение true.
Однако для переменных, определенных пользователем, система сбрасывает параметр IncludeInDebugDump в значение false при соблюдении следующих условий.
Если свойство переменной EvaluateAsExpression имеет значение true, то система устанавливает для параметра IncludeInDebugDump значение false.
Чтобы включить текст выражения в отладочные файлы дампа в качестве переменной, установите параметр IncludeInDebugDump в значение true.
При смене типа данных переменной на строковый система устанавливает параметр IncludeInDebugDump в значение false.
Когда система сбрасывает параметр IncludeInDebugDump в значение false, выбранное пользователем значение может быть переопределено.


Вот что надыбала. Как можно отследить изменение значения свойства IncludeInDebugDump у моей переменной?
21 янв 16, 10:31    [18709211]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Lania
technet
IncludeInDebugDump
Указывает, включается ли значение переменной в отладочные файлы дампа.
По умолчанию для системных и определенных пользователем переменных параметр InclueInDebugDump по умолчанию имеет значение true.
Однако для переменных, определенных пользователем, система сбрасывает параметр IncludeInDebugDump в значение false при соблюдении следующих условий.
Если свойство переменной EvaluateAsExpression имеет значение true, то система устанавливает для параметра IncludeInDebugDump значение false.
Чтобы включить текст выражения в отладочные файлы дампа в качестве переменной, установите параметр IncludeInDebugDump в значение true.
При смене типа данных переменной на строковый система устанавливает параметр IncludeInDebugDump в значение false.
Когда система сбрасывает параметр IncludeInDebugDump в значение false, выбранное пользователем значение может быть переопределено.


Вот что надыбала. Как можно отследить изменение значения свойства IncludeInDebugDump у моей переменной?


а зачем Вам это надо? Оно видно в св-вах переменной и не меняется.
Судя по описанию оно меняется только в процессе разработки при соблюдении условий, указанных выше
21 янв 16, 11:00    [18709370]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
HandKot, уже поняла. Просто сначала обрадовалась, что возможно нашла причину. У меня это свойство True.
А есть возможность при отладке увидеть отчего меняется значение переменной?
21 янв 16, 11:10    [18709427]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Lania, проверил. У меня такого не наблюдается.
21 янв 16, 12:07    [18709832]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Lania, а первоначальное значение переменной User::Flag чему равно?
Может действительно у Вас две переменные с одним именем, но в разных областях видимости?
21 янв 16, 12:12    [18709876]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
HandKot,первоначальное 0. Вроде переменная всего одна с таким именем ( В окне "переменные" установила галочку "Показать переменные всех областей").
21 янв 16, 12:43    [18710171]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
При отладке я вижу как меняется значение переменной. Изначально 0, при выполнении блока "Выполнение SQL" значение этой переменной становится 1, а при обработке события OnPostExecute становится -1.
21 янв 16, 12:48    [18710210]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Lania, всё очень странно.
Это случается на первом шаге или где-то дальше?
Где-нибудь эта переменная ещё используется?
21 янв 16, 14:33    [18710961]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Lania
HandKot,тип переменной Int32. Когда были проблемы с типом, то при выполнении вываливалась ошибка. Изначально тип переменной был boolean, и я никак не могла понять почему выдает ошибку о разности типов.

странно, что для выражения
select 1 as f
end 
else select 0 as f

выдавалось ошибка "несоответствие типов" и 1 и 0 должны без проблем конвертироваться в boolean

Для теста - заведите ещё одну переменную типа boolean и используйте её в цикле в задаче "Выполнение запроса". Смотрите в дебагере её значения
21 янв 16, 14:52    [18711090]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
HandKot,
HandKot
странно, что для выражения
select 1 as f
end
else select 0 as f

выдавалось ошибка "несоответствие типов" и 1 и 0 должны без проблем конвертироваться в boolean


Ничего странного. 1 и 0 без проблем станут boolean, но в мою то переменную окончательно записывается -1.

HandKot
Lania, всё очень странно.
Это случается на первом шаге или где-то дальше?
Где-нибудь эта переменная ещё используется?

Я смотрю по точкам остоновки, когда происходят изменения переменной.
Эта переменная используется в управлении очередности. Через нее задается ограничение. Там условие: Если Flag>0, то выполнять следующий блок.
21 янв 16, 15:25    [18711321]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
Я попробую заново пакет создать. Так как весь инструментарий,которым я пользовалась был в новинку, возможно где то начудила.
21 янв 16, 15:26    [18711338]     Ответить | Цитировать Сообщить модератору
 Re: ssis меняется значение переменной  [new]
Lania
Member

Откуда:
Сообщений: 136
Нашла проблему.
Свойство (блок "Выполнение SQL") ExecValueVarible было установлено, а не должно.
Всем спасибо за содействие)
21 янв 16, 16:01    [18711608]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить