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

Откуда:
Сообщений: 9
Всем добрый день!

Существует задача - закачивать в MSSQL 2005 только нужные данные по odbc. Пару дней разбирался с SSIS. Закачать данные я уже могу ) Теперь нужно закачать данные нужного мне диапазона.

Раньше, в DTS 2000, пользовался глобальными переменными, dtsrun и т.д.

Про dtexec уже знаю, про входящие глобальные переменные, data flow, script task тоже знаю. Единственное что пока не нашел - как изменить языком VB параметр sqlcommand у soruce'a в data flow task ...

Т.е. нужно изменить строку 'select * from A' на 'select * from A'+' where num='+GlobalVariable.Value, чтобы в итоге получить 'select * from A where num=5', где 5 - значение входящего параметра...
Обращаться к глобальной переменной тоже знаю как (вроде): Dts.Variables("VarName").Value, так что осталось узнать малое - как поменять sqlcommand...
24 сен 07, 13:07    [4705945]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Талгат
Member

Откуда:
Сообщений: 9
Никто не сталкивался?
26 сен 07, 10:27    [4715679]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Талгат
Member

Откуда:
Сообщений: 9
Если лень читать - вот вкратце вопрос:

как изменить языком VB параметр sqlcommand у soruce'a в data flow task
26 сен 07, 10:28    [4715689]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23903
Заводите Script Task, пихаете запрос в переменну, эту переменную меняете в скриптовой задаче. Соответственно настраивайте data flow task - запрос брать из переменной.
Не забудьте в свойствах скрипта указать переменную, что она будет изменяться.
26 сен 07, 10:38    [4715782]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8932
Изменить непосредственно sqlcomand afaik нельзя. Настройка ее с помощью параметров не решит Вашей проблемы?
26 сен 07, 10:39    [4715792]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Талгат
Member

Откуда:
Сообщений: 9
tpg
Заводите Script Task, пихаете запрос в переменну, эту переменную меняете в скриптовой задаче. Соответственно настраивайте data flow task - запрос брать из переменной.
Не забудьте в свойствах скрипта указать переменную, что она будет изменяться.


Спасибо, посмотрю настройки data flow task!
26 сен 07, 21:54    [4720952]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Талгат
Member

Откуда:
Сообщений: 9
Кот Матроскин
Изменить непосредственно sqlcomand afaik нельзя. Настройка ее с помощью параметров не решит Вашей проблемы?


А с помощью параметров - это как? Случаем не через "=?" ?

В data flow не понял как назначать "?" переменные, нашел такое только в ExecuteSql Script Task - но это мне не подходит, нужно менять именно в data flow task. Буду разбираться!

Завтра попробую способ, предложенный tpg!
26 сен 07, 21:59    [4720966]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Еще, как вариант:
--------------------
1) Создаете переменную на уровне пакета @var
2) Создаете вторую переменную @SQLCMD на уровне Data Flow и ставите для нее Evaluate As Expression = true.
3) В поле Expression для SQLCMD пишете такого вида запрос:
"select * from A where num=" + @[User::var]
4) В источнике в качестве запроса указываете переменную SQLCMD
5) При запуске, в DTEXEC назначаете значение для @var
26 сен 07, 22:08    [4720992]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8932
Талгат

В data flow не понял как назначать "?" переменные, нашел такое только в ExecuteSql Script Task - но это мне не подходит, нужно менять именно в data flow task. Буду разбираться!

Назначать надо не data flow taks ( это только контейнер), а конкретному data source внутри него.
27 сен 07, 10:54    [4722302]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Сверчок
Member

Откуда:
Сообщений: 5
Александр Волок (def1983),

Не поняла идею. Если в потоке источник допускает sql из переменной, например OLE DB, то не нужно никаких этажей, берем сразу переменную пакета. Если не допускает, типа ADO NET, то и вашим способом не затолкать
3 апр 18, 14:49    [21308568]     Ответить | Цитировать Сообщить модератору
 Re: SSIS: Изменение SqlCommand под входящий параметр или выборка нужных данных  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5112
Сверчок,

если использовать ваш пример с адонет...

1. в пакете создаёте переменную SqlCommand типа стринг для запроса к источнику
в экспрешене которой пишите, например:
"select * from table where id = "+ (DT_WSTR, 50)@[User::CurrentID]
где CurrentID будет у вас как-то меняться (циклом или ещё как)
2. добавляете в датафлоу адонет дата сорс
3. в контролфлоу ПКМ на датафлоу -> пропертиз -> експрешн -> раскрыть плюс, жмакнуть три точки
4. в выпадающем меню найти адонет_сорс_эскуэль_команд, сопоставить ему вашу переменную SqlCommand
3 апр 18, 19:09    [21309601]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить