Если вы используете в своих пакетах трансформации типа Merge Join Transformation и Merge Transformation, то иногда приходится пользоваться компонентом Sort Transformation. Компонент этот довольно медленный и рекомендуется избегать его применения. Я в своих проектах очень редко пользуюсь такими трансформациями и стараюсь реализовать логику с помощью запросов (кстати, микрософт рекомендует именно так работать). Чем это лучше использования трансформаций? Во первых, запросы выполняются на сервере, во вторых, при соединениях таблиц используются оптимизационные механизмы сервера. В результате весь процесс работает быстрее.
Многие пакеты у нас сделаны с помощью трансформаций по причине того, что если логика реализована трансформациями, то ее легче понять (нагляднее). Недавно мы столкнулись со странной проблемой сортировки: при сортировке одного и того же набора данных на SQL сервере и с помощью Sort Transformation мы получали разный порядок следования значений. Тот же пакет в SSIS 2005 работал правильно при всех типах сортировки. Нужно отметить, что сортировались значения в текстовом поле и проблемы возникали с записями в которых встречался символ '-'.
Гугль по поводу подобной проблемы ничего вразумительного не рассказал, поэтому нам пришлось обратиться с проблемой непосредственно в Microsoft. Они сымитировали данную ситуацию и дали нам следующий ответ:
Многие пакеты у нас сделаны с помощью трансформаций по причине того, что если логика реализована трансформациями, то ее легче понять (нагляднее). Недавно мы столкнулись со странной проблемой сортировки: при сортировке одного и того же набора данных на SQL сервере и с помощью Sort Transformation мы получали разный порядок следования значений. Тот же пакет в SSIS 2005 работал правильно при всех типах сортировки. Нужно отметить, что сортировались значения в текстовом поле и проблемы возникали с записями в которых встречался символ '-'.
Гугль по поводу подобной проблемы ничего вразумительного не рассказал, поэтому нам пришлось обратиться с проблемой непосредственно в Microsoft. Они сымитировали данную ситуацию и дали нам следующий ответ:
Symptom:
You are using SSIS with SQL Server 2008 SP3
You are using SSIS with SQL Server 2008 SP3
When running on server 2008R2 you are getting wrong sorting of data from sort task .
This issue happen also when the data is sorted.
When running the same package on another platform (e.g. windows XP) the sort is correct.
Resolution:
We have reproduce this issue with test SSIS package you supplied.
After some investigation we opened a call to the SSIS product group.
Here is the answer we got from the product group.
"This difference is because of win api used which unfortunately was not documented and SSIS team consider implementing own sort function to avoid the difference"
Workaround
A workaround for this issue is to use different sort method such as native SQL Query sorting
Даже на Солнце бывают пятна :)))
ОтветитьУдалить