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

Откуда: Москва
Сообщений: 902
Здравствуйте.
Хочу с помощью Import and Export Wizard загрузить в EXCEL данные из SQL таблицы и сохранить пакет.

Часть столбцов исходной таблицы хранится в юникоде.
Процессе создания пакета через Import and Export Wizard, было сообщено о преобразовании между типами SQL и EXCEL

А заканчивается все вот такой ошибкой.

Pre-execute (Error)
Messages
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E21.
(SQL Server Import and Export Wizard)

Error 0xc0202025: Data Flow Task 1: Cannot create an OLE DB accessor. Verify that the column metadata is valid.
(SQL Server Import and Export Wizard)

Error 0xc004701a: Data Flow Task 1: component "Destination - UV_QV_004_02_LDM_Daily" (106) failed the pre-execute phase and returned error code 0xC0202025.
(SQL Server Import and Export Wizard)


Как побороть это?
Буквально утром делал те же самые действия и такого не было
4 апр 14, 17:14    [15834307]     Ответить | Цитировать Сообщить модератору
 Re: Import and Export Wizard  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
У меня появились некоторые уточнения по вопросу:
1. Сообщение из первого поста появляется при создании пакета через Import and Export Wizard и связке SQL и EXCEL x64
2. В EXCEL-файл ничего не заливается кроме заголовка
3. Пакет SSIS создается, но при запуске из VS не работает

Если создать EXCEL-файл формата 97-2003, то
1. Процессе создания пакета через Import and Export Wizard, сообщение уже такое.
- Executing (Warning)
Messages
Warning: Preparation SQL Task 1: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. (SQL Server Import and Export Wizard)

Warning: Preparation SQL Task 1: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. (SQL Server Import and Export Wizard)

2. В EXCEL-файл попадает необходимая информация и она корректна
3. Пакет SSIS создается, при запуске из VS работает

Открыв пакеты в VS на редактирование, я обнаружил что они получились идентичные, за исключением DestinationConnectionExcel.
Оказывается, что пакет для файла-EXCEL x64 не работает из-за Data Conversion внутри Data Flow Task.
В Data Conversion в обоих пакетах была приведение типов(его выбрал Import and Export Wizard):
NVARCHAR(K) -> unicode text stream [DT_NTEXT], где K - натуральное число меньше 100;
DATE -> unicode string [DT_WSTR]
После удаления Data Conversion пакет для файла-EXCEL x64 заработал. Правда не совсем так как надо.
Под опалу попали столбцы, в которые заливались int и money поля.
EXCEL помечает из как некорректные, а также дробная часть в числе отделяется точкой, как на SQL сервере, а нужна запятая.

Далее я сделал такой эксперимент, создал пакет для EXCEL-файла формата 97-2003 руками в VS, полностью аналогичный тому который создал Import and Export Wizard. Он также отработал без проблем и каких либо косяков.

Получается что SSIS пакеты некорректно работают с EXCEL x64
7 апр 14, 13:01    [15842846]     Ответить | Цитировать Сообщить модератору
 Re: Import and Export Wizard  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 902
Еще некоторые уточнения:
Для EXCEL 97-2003 в пакете используется провайдер Microsoft.Jet.OLEDB.4.0,
а для EXCEL 2010 провайдер Microsoft.ACE.OLEDB.12.0
И получается следующее

Data Conversion приведение типов NVARCHAR(K) -> unicode text stream [DT_NTEXT]; DATE -> unicode string [DT_WSTR]

EXCEL 97-2003______________________________________ EXCEL 2010___________________________________________
работает не работает


Столбцы в которые заливались int и money поля EXCEL помечает из как некорректные______________________________

EXCEL 97-2003______________________________________ EXCEL 2010___________________________________________
Ошибки нет ошибка есть


В качестве разделителя дробной части точка заменяется на запятую_____________________________________________

EXCEL 97-2003______________________________________ EXCEL 2010___________________________________________
работает не работает


Удаление области данных с листа____________________________________________________________________________

EXCEL 97-2003______________________________________ EXCEL 2010___________________________________________
работает не работает



И да. Установка EXCEL2010 x32 проблему не решает, так как используется тот же Microsoft.ACE.OLEDB.12.0
8 апр 14, 13:41    [15849263]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить