Categories: Databases

Кодировки в пакетах SSIS (DTSX) при использовании Microsoft Jet 4.0

Недавно пришло распоряжение автоматизировать выполнение некоторых пакетов SSIS (DTSX), ранее выполнявшихся вручную. Вроде, всё легко и просто, создал в SQL Agent джоб, сказал джобу выполнять нужный пакет, всё вроде выполняется и работает, но с подвохом. Пакет производил выгрузку данных из файла DBF в таблицу на сервере SQL, в результате выгрузки в эту таблицу записывались данные в виде кракозябров. При выполнении пакета вручную или из Bussines Intelligent Development Studio, данные записывались русскими буквами. Загадка!!!

В начале было подозрение на кривую настройку языковых параметров в самой операционной системе, однако ряд тестовых установок Windows показал, что операционная система тут ни при чем, затем были подозрения на сам SQL, однако, и эти подозрения оказались беспочвенны.

В итоге длительных изысканий по просторам интернета я наткнулся случайным образом на то, что, используемый для связи с файлом DBF в нашем пакете провайдер Microsft Jet 4.0 и является причиной проблемы. Точнее сказать не сам провайдер, а его взаимоотношения с BDE. Оказывается при использовании Microsoft Jet 4.0 самого по себе проблем не возникает и всё выгружается “по-русски”, но, если на компьютер, на котором выполняется пакет, установить BDE, то Microsoft Jet 4.0 начинает использовать драйверы BDE для связи с DBF файлами, поэтому и языковые настройки необходимо делать в BDE Administrator. Наличие BDE на компьютере Microsoft Jet 4.0 определяет по ветке в реестре HKLM\SOFTWARE\Borland\Database Engine. Чтобы MIcrosoft Jet 4.0 выгружал всё в нормальной кодировке можно использовать несколько приёмов:

  1. В BDE Administrator -> вкладка Configuration -> Drivers -> Native -> DBASE установить значение параметра LANGDRIVE=dBASE RUS cp866.
  2. Удалить BDE.
  3. Удалить (переименовать) запись в реестре HKLM\SOFTWARE\Borland.
  4. В некоторых конфигурациях всё выгружается без кракозябров даже если LANGDRIVER установлен не dBASE RUS cp866.
Saqwel

Share
Published by
Saqwel

Recent Posts

Azure App Configuration and access to Key Vault references

We decided to use an Azure App Configuration to store configs of backend. App Configuration…

2023-08-24

Azure cli az acr login hangs

I have encountered an issue with az acr login --name <acr_name> command. It hanged and…

2023-08-23

Error: Unable to read Docker image into resource: unable to find or pull image nginx:latest

I have tried to learn terraform from scratch and found pretty simple tutorial for beginners.…

2022-09-09

Скрыть поле модели от Swagger (Hide field of model from Swagger)

При внедрении Swagger в проекте .Net Core Web API потребовалось скрыть одно поле из примера,…

2020-04-24

Прогноз цен на акции

Около года назад я решил попробовать заработать на фондовой бирже, покупая и продавая акции. Изучая…

2019-07-20

Installation failed with error code: (0x00000490), “Element not found. “

Во время установки .NET Framework столкнулся с ошибкой Installation failed with error code: (0x00000490), "Element…

2018-12-20