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

Откуда:
Сообщений: 3
Добрый день.
Помогите, пожалуйста, справиться со следующей задачей:

Есть процедура, которая в таблицу на SQL сервере выгружает данные за несколько лет. В таблице есть поля соответственно "Год" и "Данные". Поле "Данные" имеет тип xml. Для каждого года только одна строка в таблице. Количество лет (соответственно, строк) в таблице заранее неизвестно.
Задача: пройтись по всем годам в таблице и выгрузить поле "Данные" в отдельные файлы xml с именем, например, <год>_<дата выгрузки>.xml.
Не могу сообразить, как правильно организовать в пакете SSIS проход по годам и передачу информации в соответствующий файл.
Очень нужна помощь специалистов.
21 мар 12, 14:58    [12288610]     Ответить | Цитировать Сообщить модератору
 Re: Нужен пакет на сервере MS SQL 2008  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5123
pev99
Не могу сообразить, как правильно организовать в пакете SSIS проход по годам и передачу информации в соответствующий файл.

- датафлоу_1 читает вашу таблицу и пишет её в набор строк
- цикл по элементам идёт по этому набору
- внутри этого цикла на основании считанной им строки определяете имя файла (например как переменную для назначения "необработанный файл")
- внутри этого цикла датафлоу_2 пишет в файл
21 мар 12, 15:44    [12289090]     Ответить | Цитировать Сообщить модератору
 Re: Нужен пакет на сервере MS SQL 2008  [new]
pev99
Member

Откуда:
Сообщений: 3
Дедушка,
спасибо, что откликнулись.
У меня опыт работы с пакетами SQL-сервера практически нулевой (послений раз что-то делала несколько лет назад еще на 2000-ом). Поэтому уже второй шаг вызывает вопросы.

Я правильно поняла, что в итоге первого шага должен получиться набор данных "Recordset Destination", который присваивается переменной (взяла тип Object, так как все остальное - простые типы данных для чисел, строк и т.п.)?
Не пойму теперь, как организовать цикл по этому набору данных средствами SSIS? С помощью Foreach Container?
Как я понимаю, алгоритм должен быть следующий:
1. Присваиваем какой-то переменной значение, равное количеству строк в наборе данных.
2. Присваиваем переменной-счетчику начальное значение 1.
3. Пока значение переменной-счетчика меньше или равно переменной из п. 1, выполняем следующие шаги:
а) читаем строку из набора данных в переменные "год" и "данные";
б) формируем имя файла на основании значения переменной "год";
в) передаем переменную "данные" в Flat file с именем, сформированным ранее;
в) увеличиваем значение переменной-счетчика на 1.

PS: FAQ про использование циклов в пакетах читала. Но, на мой взгляд, ответ, который там дан, нельзя назвать ответом на часто задаваемый вопрос. Новичок (такой, как я), прочитав этот ответ не может понять, какие элементы используются для работы с пакетом. Например, строка "DTSGlobalVariables("Counter").Value = DTSGlobalVariables("Counter").Value - 1" - это часть "ActiveX Script Task"?
Может быть, где-то на просторах интернета есть конкретные (полные) примеры, которые можно использовать?..
21 мар 12, 16:44    [12289679]     Ответить | Цитировать Сообщить модератору
 Re: Нужен пакет на сервере MS SQL 2008  [new]
Glory
Member

Откуда:
Сообщений: 104751
pev99
PS: FAQ про использование циклов в пакетах читала. Но, на мой взгляд, ответ, который там дан, нельзя назвать ответом на часто задаваемый вопрос. Новичок (такой, как я), прочитав этот ответ не может понять, какие элементы используются для работы с пакетом. Например, строка "DTSGlobalVariables("Counter").Value = DTSGlobalVariables("Counter").Value - 1" - это часть "ActiveX Script Task"?

Вообще то для DTS из SQL 2000
21 мар 12, 16:46    [12289694]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить