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

Откуда: Msk
Сообщений: 85
Есть приложение, которое с периодичностью раз в 10 минут пополняет Access-овские БД (порядка 175 шт.)
Есть непреодолимое ))) желание запихнуть содержимое данных БД в MS SQL, ессесьно при помощи SSIS.
Делаю package, в котором есть data flow task, source и destination соотвественно. Настраиваю job, чтобы data flow task выполнялся с определенной периодичностью и получаю на выходе кучу продублированных полей...
Как-то нужно сделать проверку поступающих данных, но как? мозгов своих нехватает.
Да, в исходной базе есть уникальный столбец, по которому удобно делать эту самую проверку (имя ему sequence).
Ткните, плиз, носом в нужный элемент и его настройки, чувствую, что просто все делается, но от навороченности SSIS крыша едет который день уже.

Заранее благодарю.
16 июн 09, 19:02    [7307044]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
А этот sequence возрастающий? Запоминайте последнее проимпортированное значение sequence в какой-нибудь таблице MS SQL, и копируйте только записи с sequence > last_sequence.

И не путайте понятия -- точнее выражайтесь, где у вас поле/запись, таблица/база и тд
16 июн 09, 19:24    [7307107]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
Ray D
А этот sequence возрастающий? Запоминайте последнее проимпортированное значение sequence в какой-нибудь таблице MS SQL, и копируйте только записи с sequence > last_sequence.

И не путайте понятия -- точнее выражайтесь, где у вас поле/запись, таблица/база и тд

да, sequance строго возрастающий, n+1
спасибо, попробую, но чувствую, что есть более простое решение
16 июн 09, 21:00    [7307310]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Интуиция в нашей профессии штука, конечно, полезная...
16 июн 09, 22:28    [7307500]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33366
Блог
вам самое простое озвучили)
16 июн 09, 22:32    [7307515]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
используйте lookup in data flow transformations.
сравнивайте уникальный ключ из source с destination.
Lookup работает так, что если нашел совподение - то успех,
если нет совподения - то error.
так что сконфигурируйте error output (по красной стрелочке) так, чтобы направить записи, которые не нашлись в destination в вашу таблицу на sql.
Зеленую стрелочку можите игнорировать.
16 июн 09, 23:35    [7307678]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
И постепенно все будет становиться медленнее и печальнее...
16 июн 09, 23:57    [7307762]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
Во, кстати, еще проще.
В destination таблице создайте уникальный индекс по полю и выберете
ignore duplicate key - no

В destination connection (right click - edit) в пакете посмотрите data access mode.
По дефолту там стоит table or view - fast load.
Поменяйте на просто table or view.

Будет игнорировать дублирующие записи.
17 июн 09, 00:17    [7307817]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
LenaV
Во, кстати, еще проще.
В destination таблице создайте уникальный индекс по полю и выберете
ignore duplicate key - no

В destination connection (right click - edit) в пакете посмотрите data access mode.
По дефолту там стоит table or view - fast load.
Поменяйте на просто table or view.

Будет игнорировать дублирующие записи.

Лена, не вводите человека в заблуждение. это далеко не лучшие варианты.

лучший вариант сохранять максимальный загруженный seq. для этого создается таблица.
Далее, control flow:
1. вычитать максимальный seq из таблицы
2. запустить dataflow для импорта
2.1. data source с фильтром на seq
2.2. split на два потока
2.3.1 data destination - заливаем результат
2.3.2.1 aggregate того же потока - получение максимального seq. здесь надо четко знать возможные объемы данных, задать свойства трансформации - Scale и т.п.
2.3.2.2 data destination - заливаем в созданную таблицу максимальный seq. здесь можно использовать и update, но я предпочитаю такие операции логировать.

это был более менее универсальный вариант. можно также использовать SCD-трансформацию, merge-трансформацию и т.п.
17 июн 09, 00:37    [7307862]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
Человек просил простое решение, а не самое лучшее. :)
Дайте начать с простого, потом сам разберется как лучше делать в его ситуации.

Ну а собьется у него этот seq - тогда что?
17 июн 09, 00:47    [7307881]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
AAron
[quot LenaV]
...
2.3.2.1 aggregate того же потока - получение максимального seq. здесь надо четко знать возможные объемы данных, задать свойства трансформации - Scale и т.п.
...

288 новых строк (в каждой из 176 бд Access-вских) за сутки * 365 дней = 104025 строк/год
думаю, что сложностей со скоростью обработки данных быть не должно.
17 июн 09, 01:22    [7307921]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
LenaV, спасибо!
Сделал как посоветовали...
Теперь встала вторая задачка ))).
Запихиваю package в job. Запускаю его строкой вида при помощи CmdExec строкой вида EXEC xp_cmdshell 'dtexec /f "C:\мой путь.dtsx"' и получаю ошибку "The job is failed. The job was invoked by User xxxxxx\xxx."
Что-то с правами не то? и где искать?
17 июн 09, 13:57    [7310271]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
cmdshell уберите.

найдите файл своего покета и кликните на него 2 раза.
Выскочит окошко Execute Package Utility. С левой стороны выберете Command Line.
В окошке появится нечто что-то типа:

/FILE "F:\Test\Package_1.dtsx" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E

скопируйте это. Это и есть ваша команда.

Кстати, а почему вы не запускаете, как SSIS пакет?
17 июн 09, 17:17    [7311917]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
LenaV
cmdshell уберите.

найдите файл своего покета и кликните на него 2 раза.
Выскочит окошко Execute Package Utility. С левой стороны выберете Command Line.
В окошке появится нечто что-то типа:

/FILE "F:\Test\Package_1.dtsx" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E

скопируйте это. Это и есть ваша команда.


попробую, спасибо! тип шага должен остаться по прежнему Operating system (CmdExec)?

Кстати, а почему вы не запускаете, как SSIS пакет?

когда делаю нужный мне step, то в меню type почему то отсутствует вариант SQL Server Integration Services Package Execution Job Steps. Приходится довольствоваться чем есть (.

ЗЫ
Microsoft SQL Server Management Studio 9.00.1399.00
Microsoft Analysis Services Client Tools 2005.090.1399.00
Microsoft Data Access Components (MDAC) 2000.085.1117.00 (xpsp_sp2_rtm.040803-2158)
Microsoft MSXML 2.6 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 6.0.2900.2180
Microsoft .NET Framework 2.0.50727.832
Operating System 5.1.2600

таков комплект с чем работаю.
17 июн 09, 17:47    [7312166]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
У вас не установлен SSIS.
У вас не будет работать job.
Установите SSIS или запускайте с сервера, где он установлен.
17 июн 09, 18:05    [7312300]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
Microsoft Visual Studio 2005
Version 8.0.50727.42 (RTM.050727-4200)
Microsoft .NET Framework
Version 2.0.50727

Installed Edition: IDE Standard

SQL Server Analysis Services
Microsoft SQL Server Analysis Services Designer
Version 9.00.1399.00

SQL Server Integration Services
Microsoft SQL Server Integration Services Designer
Version 9.00.1399.00

SQL Server Reporting Services
Microsoft SQL Server Reporting Services Designers
Version 9.00.1399.00
17 июн 09, 18:07    [7312313]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
во, это уже лучше :)
service pack еще бы накатили.

попробуйте запустить ваш пакет, как я написала выше, щелкнув по файлу 2 раза мышкой.
Если у вас есть какие-то ошибки, там все увидите.
17 июн 09, 18:28    [7312408]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
LenaV
во, это уже лучше :)
service pack еще бы накатили.

попробуйте запустить ваш пакет, как я написала выше, щелкнув по файлу 2 раза мышкой.
Если у вас есть какие-то ошибки, там все увидите.


если запускать через Execute Package Utility, то все работает! Пасибо!
как же теперь сделать job c sheduler-ом? чтобы пакеты автоматом отрабатывали?
17 июн 09, 18:47    [7312476]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
сервис пак этот ? https://www.sql.ru/forum/actualthread.aspx?tid=672529
17 июн 09, 18:48    [7312482]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
avorsa

как же теперь сделать job c sheduler-ом? чтобы пакеты автоматом отрабатывали?

исправьте командную строку в job и запускайте как и было
Operating system (CmdExec)
17 июн 09, 19:12    [7312582]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
LenaV
avorsa

как же теперь сделать job c sheduler-ом? чтобы пакеты автоматом отрабатывали?

исправьте командную строку в job и запускайте как и было
Operating system (CmdExec)

делаю так как сказано
и все равно на выходе имею ошибку
привожу log job-а
06/17/2009 19:26:00,test,Error,0,D41WS0150\MM60,test,(Job outcome),,The job failed. The Job was invoked by Schedule 2 (she). The last step to run was step 1 (1).,00:00:00,0,0,,,,0
06/17/2009 19:26:00,test,Error,1,D41WS0150\MM60,test,1,,Executed as user: D41WS0150\SYSTEM. The process could not be created for step 1 of job 0x89C101B148960247988EB9AC2D541A7B (reason: The system cannot find the file specified). The step failed.,00:00:00,0,0,,,,0
17 июн 09, 19:39    [7312670]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
Извените пожалуйста, пропустила.
поставьте DTEXEC впереди.
должно быть так:
DTEXEC /FILE "F:\Test\Package_1.dtsx" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E
17 июн 09, 20:33    [7312837]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
avorsa
Member

Откуда: Msk
Сообщений: 85
LenaV!!!! Огромнейшее спасибо!!!!!!!
ОНО РАБОТАЕТ!!!!
17 июн 09, 20:44    [7312863]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
LenaV
Member

Откуда: USA
Сообщений: 6756
Ура!!!
17 июн 09, 20:52    [7312884]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, плиз, с SSIS в MS SQL 2005  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
avorsa
AAron
[quot LenaV]
...
2.3.2.1 aggregate того же потока - получение максимального seq. здесь надо четко знать возможные объемы данных, задать свойства трансформации - Scale и т.п.
...

288 новых строк (в каждой из 176 бд Access-вских) за сутки * 365 дней = 104025 строк/год
думаю, что сложностей со скоростью обработки данных быть не должно.

в таком случае без всяких извращений - SCD2 transformation. оно и апдейт сделает если нужно, и новые добавит.
18 июн 09, 00:04    [7313305]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить