SSIS Transfer SQL Server Objects Task теряет акценты в передаваемых данных

У меня есть пакет SSIS с шагом задачи передачи объектов SQL Server, который передает таблицы (схему и данные) из одной базы данных в другую. Базы данных источника и назначения имеют разные параметры сортировки. (Я не знаю, актуальна ли это информация.)

В некоторых тестовых средах некоторые символы (специфичные для венгерского языка символы с диакритическими знаками: ő, ű) во время передачи преобразуются в символы без диакритических знаков (o, u). В остальных тестовых средах все нормально (хорошо передаются символы с венгерским акцентом). Столбцы исходной таблицы не являются Unicode (varchar), и мы не можем их изменить, потому что это устаревшая система.

Эксперименты показывают, что это поведение зависит от настроек локали Windows (Панель управления / Регион и язык / Административные / «Язык для программ, не поддерживающих Юникод»). Если установлен венгерский, все в порядке, но если он установлен на английский, венгерские акценты теряются.

Проблема в том, что я не могу применить конкретный параметр локали Windows, поэтому я ищу способ исправить это, не зависящий от языкового стандарта Windows.

Есть ли способ указать SSIS использовать венгерскую кодовую страницу при передаче?


person Vizu    schedule 04.10.2012    source источник
comment
Просто догадываюсь, что, если бы вы изменили свой процесс. Исключите таблицы с венгерскими символами из шага переноса объекта. Затем напишите ту же логику передачи в пакете. Когда вы извлекаете данные из таблицы, вместо того, чтобы выбирать таблицу в раскрывающемся списке, напишите настраиваемый оператор выбора для преобразования этих данных в поля nvarchar. Это может сохранить символы. Если вы хотите увидеть пример, я могу привести его.   -  person billinkc    schedule 04.10.2012
comment
Я нашел обходной путь. Отказано от SSIS, и теперь я использую хранимую процедуру, которая выполняет INSERT INTO + SELECT через связанный сервер. Акценты сохраняются даже с английской локалью, так что все в порядке. Но мне все еще любопытно, можно ли это сделать с помощью SSIS.   -  person Vizu    schedule 05.10.2012


Ответы (1)


На странице объектов задачи Transer SQL Objects есть опция UseCollation. Если вы выберете эту опцию, тогда он должен использовать сортировку кислых данных.

person Pete Carter    schedule 20.10.2012
comment
К сожалению, это не решило проблему. Целевые столбцы были созданы с использованием исходной сортировки, но венгерские акценты все равно были потеряны. Я предполагаю, что преобразование с потерей акцента из Ascii в Unicode происходит, когда данные читаются из источника. - person Vizu; 06.11.2012