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

Откуда:
Сообщений: 36
Здравствуйте! Два дня бьюсь над проблемой. Перелопатила кучу информации и никак не могу понять. Создаю переменную object, записываю туда результат запроса, т.е. таблицу. Как ее использовать дальше в пакете? Мне надо не какое-то определенное поле, а всю эту таблицу, например, использовать в lookup'e. Каким вообще образом выбирать данные из этой переменной?

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
5 июл 12, 18:26    [12824211]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3755
Lia7575
Здравствуйте! Два дня бьюсь над проблемой. Перелопатила кучу информации и никак не могу понять. Создаю переменную object, записываю туда результат запроса, т.е. таблицу. Как ее использовать дальше в пакете? Мне надо не какое-то определенное поле, а всю эту таблицу, например, использовать в lookup'e. Каким вообще образом выбирать данные из этой переменной?

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

В ЛУКАПЕ ????
оооооочень странный подход
5 июл 12, 19:07    [12824417]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
Ну в общем-то, может, я не в ту сторону копаю. Но у меня есть запрос, формирующий набор данных, который мне надо использовать несколько раз. Есть вариант создать временную таблицу и использовать ее. Но я думала, что можно это сделать с помощью переменной.
5 июл 12, 19:11    [12824432]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
Я недавно начала использовать SSIS. И с переменными еще не работала, сейчас вот только пытаюсь.
5 июл 12, 19:12    [12824440]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
Lia7575,


Вам нужно использовать Cache Transform

И его уже подставлять в Lookup
5 июл 12, 19:15    [12824463]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3755
Lia7575
Ну в общем-то, может, я не в ту сторону копаю. Но у меня есть запрос, формирующий набор данных, который мне надо использовать несколько раз. Есть вариант создать временную таблицу и использовать ее. Но я думала, что можно это сделать с помощью переменной.

конечно можно использовать in-memory recordset который как раз с переменной связан,
НО лучше всеже временную таблицу использовать, ибо всякие там лукапы - ужасно медленны в SSIS, их лучше в SQL компонентах на чистом TSQL делать.
5 июл 12, 19:20    [12824484]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
Спасибо большое за ответы! Буду пробовать разные варианты. Я просто хотела понять принцип извлечения данных из переменной object. Например, записать запрос в строковую переменную, потом эту переменную прочитать в Ole DB Source в SQL command from variable и записать в destination, - это понятно. А вот как вытащить recordset из переменной ну никак не понимаю.
5 июл 12, 20:58    [12824900]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
Lia7575
Спасибо большое за ответы! Буду пробовать разные варианты. Я просто хотела понять принцип извлечения данных из переменной object. Например, записать запрос в строковую переменную, потом эту переменную прочитать в Ole DB Source в SQL command from variable и записать в destination, - это понятно. А вот как вытащить recordset из переменной ну никак не понимаю.


Может быть, кто-нибудь может привести пример использования объектной переменной? Как выбираются из нее данные полностью?
9 июл 12, 12:41    [12838136]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Lia7575
Может быть, кто-нибудь может привести пример использования объектной переменной? Как выбираются из нее данные полностью?

Ну, например так (см.скриншот). Первый шаг инициирует процедуру заполнения таблицы для рассылки, в которой имеются два поля (User, Msg). Второй шаг считывает (Full result set) данные из этой таблицы в переменную VBody (тип ее - Object), а третий шаг просто распарсивает эту переменную по каждой строке и отсылает каждому User свой Msg.

К сообщению приложен файл. Размер - 73Kb
9 июл 12, 13:33    [12838437]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
AlexMajic, спасибо! Но я немного другое имела в виду. Меня интересует синтаксис. Вот, например, в Data Flow, если мы обращаемся к какой-то переменной, мы пишем select id, name from t where id = ?. А вот как выбрать всю таблицу? На sql пишем select * from @t. А как это написать в Data Flow? Или в SSIS так не делается?
9 июл 12, 14:55    [12839066]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Lia7575
AlexMajic, спасибо! Но я немного другое имела в виду. Меня интересует синтаксис. Вот, например, в Data Flow, если мы обращаемся к какой-то переменной, мы пишем select id, name from t where id = ?. А вот как выбрать всю таблицу? На sql пишем select * from @t. А как это написать в Data Flow? Или в SSIS так не делается?

В SSIS для пользовательских переменных используется синтаксис User::Имя_переменной
9 июл 12, 15:05    [12839180]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
AlexMajic
Lia7575
AlexMajic, спасибо! Но я немного другое имела в виду. Меня интересует синтаксис. Вот, например, в Data Flow, если мы обращаемся к какой-то переменной, мы пишем select id, name from t where id = ?. А вот как выбрать всю таблицу? На sql пишем select * from @t. А как это написать в Data Flow? Или в SSIS так не делается?

В SSIS для пользовательских переменных используется синтаксис User::Имя_переменной

Это я знаю. Если у меня переменная User::Var, я же не могу в Data Flow написать select * from User::Var
9 июл 12, 15:16    [12839271]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Насколько я знаю, переменные типа Object не используются в DataFlow, даже непонятно каким образом их можно бы было использовать. А вот в Foreach lookup, и еще - думаю, - в Script Task, - не проблема. Вот тут есть пример использования от MS:
http://msdn.microsoft.com/en-us/library/cc879316(v=sql.105).aspx
9 июл 12, 15:20    [12839297]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Djeki
Member

Откуда: Донецк
Сообщений: 768
Lia7575
AlexMajic
пропущено...

В SSIS для пользовательских переменных используется синтаксис User::Имя_переменной

Это я знаю. Если у меня переменная User::Var, я же не могу в Data Flow написать select * from User::Var

Я могу ошибаться, но по моему для работы в dataflowtask c переменной типа оbject необходимо использовать Script component. Посмотрите здесь примерчик http://www.sqlis.com/sqlis/post/Using-the-Script-Component-as-a-Conditional-Split.aspx, из него будет понятен смысл работы с объектом.
9 июл 12, 15:27    [12839353]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
AlexMajic
Насколько я знаю, переменные типа Object не используются в DataFlow, даже непонятно каким образом их можно бы было использовать. А вот в Foreach lookup, и еще - думаю, - в Script Task, - не проблема. Вот тут есть пример использования от MS:
http://msdn.microsoft.com/en-us/library/cc879316(v=sql.105).aspx

Спасибо большое! Эту ссылку я читала. Еще видела пример, с DataFlow, который заключен в Foreach lookup, но там в DataFlow такой запрос:
SELECT FirstName, LastName, JobTitle
FROM HumanResources.vEmployee
WHERE JobTitle = ?
В общем, наверное, я не до конца поняла смысл этой переменной. Буду еще разбираться. Я просто думала, что можно записать промежуточный recordset, и потом воспользоваться им как источником данных.
9 июл 12, 15:28    [12839364]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Djeki
Member

Откуда: Донецк
Сообщений: 768
AlexMajic
Насколько я знаю, переменные типа Object не используются в DataFlow, даже непонятно каким образом их можно бы было использовать. А вот в Foreach lookup, и еще - думаю, - в Script Task, - не проблема. Вот тут есть пример использования от MS:
http://msdn.microsoft.com/en-us/library/cc879316(v=sql.105).aspx

Переменные object используются в data flow task. Не смущайте девушку.
9 июл 12, 15:28    [12839366]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
Djeki, спасибо! Я так и подозревала, что без скриптов мне не обойтись.
9 июл 12, 15:33    [12839414]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Djeki
Member

Откуда: Донецк
Сообщений: 768
Lia7575
Djeki, спасибо! Я так и подозревала, что без скриптов мне не обойтись.

Та не за что. Обращайтесь ;)
9 июл 12, 15:37    [12839457]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
AlexMajic
Member

Откуда: Kiev
Сообщений: 99
Djeki
Переменные object используются в data flow task. Не смущайте девушку.

Я просто не знаю примеров такого использования. И еще - непонятно зачем это делать. Если в переменной есть данные - значит они откуда-то туда попали. А это значит - можно в качестве источника DataFlow использовать то место, откуда они попали в переменную и обойтись без переменной вообще. Кстати, а какой тогда компонент и connection manager использовать для юзания переменной типа object в DataFlow?
9 июл 12, 16:31    [12839884]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Lia7575
Member

Откуда:
Сообщений: 36
Я просто не знаю примеров такого использования. И еще - непонятно зачем это делать. Если в переменной есть данные - значит они откуда-то туда попали. А это значит - можно в качестве источника DataFlow использовать то место, откуда они попали в переменную и обойтись без переменной вообще. Кстати, а какой тогда компонент и connection manager использовать для юзания переменной типа object в DataFlow?[/quot]
Я хотела эту переменную использоваться вместо промежуточной таблицы, которую мне надо было использовать в нескольких компонентах пакета.
А вот есть пример с DataFlow
http://www.simple-talk.com/sql/ssis/implementing-foreach-looping-logic-in-ssis-/
Но это не совсем то, что мне нужно было
9 июл 12, 17:16    [12840208]     Ответить | Цитировать Сообщить модератору
 Re: SSIS использование переменной object  [new]
Djeki
Member

Откуда: Донецк
Сообщений: 768
AlexMajic,

Lia права, часто таким переменные используются как промежуточные. Например, вы сохранили в объект результат запроса, после чего на основе результата запроса вам необходимо создать готовую структуру для заливки данных в конечную таблицу. А конечная таблица, в которую вы должны залить данные отличается стурктурой. Например, другими полями, которые являются результатами запроса с параметрами из вашей таблицы из object, рассчитываемы полями и т.д. Да я согласен, если построить уйму различных sql task, то может и возможно заменить object, но по моему это будет дольше по времени выполнения и структура такого пакета будет не понятна(хотя накодить в C# могут так, что за голову схватишься).
Ну вот как то так, я надеюсь понятно описал смысл, хоть и сумбурно.
9 июл 12, 18:16    [12840641]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить