Произошла ошибка при выполнении многошаговой операции

I’m attempting to make a DTS package to transfer data between two databases on the same server and I’m getting the following errors. Iv read that the Multiple-step OLE DB operation generated error can occur when you are transferring between different database types and there is loss of precision, but this is not that case here. How do I examine the column meta data?

Error: 0xC0202009 at Data Flow Task,
piTech [183]: An OLE DB error has
occurred. Error code: 0x80040E21. An
OLE DB record is available. Source:
«Microsoft SQL Native Client»
Hresult: 0x80040E21 Description:
«Multiple-step OLE DB operation
generated errors. Check each OLE DB
status value, if available. No work
was done.».

Error: 0xC0202025 at Data Flow Task,
piTech [183]: Cannot create an OLE DB
accessor. Verify that the column
metadata is valid.

Error: 0xC004701A at Data Flow Task,
DTS.Pipeline: component «piTech» (183)
failed the pre-execute phase and
returned error code 0xC0202025.

asked Sep 9, 2008 at 10:58

Dan's user avatar

Take a look at the fields’s proprieties (type, length, default value, etc.), they should be the same.

I had this problem with SQL Server 2008 R2 because the fields’s length are not equal.

answered Oct 1, 2011 at 11:02

Anïs El Haouéli's user avatar

4

This error is common when the source table contains a TEXT column and the target is anything other than a TEXT column. It can be a real time-eater if you have not encountered (or forgot!) this before.

Convert the text column to string and set the error condition on truncation to ignore. this will usually serve as a solution for this error.

bensiu's user avatar

bensiu

24.7k56 gold badges77 silver badges117 bronze badges

answered Oct 22, 2012 at 17:26

Oliphant's user avatar

OliphantOliphant

1111 silver badge2 bronze badges

0

This query should identify columns that are potential problems…

SELECT * 
FROM [source].INFORMATION_SCHEMA.COLUMNS src
    INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst 
        ON dst.COLUMN_NAME = src.COLUMN_NAME
WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH 

Raj More's user avatar

Raj More

47.1k33 gold badges132 silver badges198 bronze badges

answered Sep 9, 2008 at 14:36

Michael Prewecki's user avatar

Michael PreweckiMichael Prewecki

2,0644 gold badges16 silver badges28 bronze badges

1

'-2147217887' message 'IDispatch error #3105' source 'Microsoft OLE DB Service Components' description 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.'."

This is what I was also facing. The problem came from the fact that I changed my SQLOLEDB.1 provider to SQLNCLI11 without mentioning the compatibility mode in the connection string.
When I set this DataTypeCompatibility=80; in the connection string, I got the problem solved.

answered Jun 21, 2017 at 9:11

Herve Mutombo's user avatar

Herve MutomboHerve Mutombo

1701 gold badge2 silver badges14 bronze badges

4

This issue will come mostly due to empty rows at the end of the file, remove those and run the job.

Petter Friberg's user avatar

answered Aug 4, 2017 at 10:46

jagadish ganaparthi's user avatar

For me the answer was that I was passing two parameters to and execute SQL task, but only using one. I was doing some testing and commented out a section of code using the second parameter. I neglected to remove the parameter mapping.

So ensure you are passing in the correct number of parameters in the parameter mapping if you are using the Execute SQL task.

answered Oct 9, 2018 at 17:36

Roi-Kyi Bryant's user avatar

1

You can use SELECT * FROM INFORMATION_SCHEMA.COLUMNS but I suspect you created the destination database from a script of the source database so it is very likely that they columns will be the same.

Some comparisons might bring something up though.

These sorts of errors sometimes come from trying to insert too much data into varchar columns too.

Raj More's user avatar

Raj More

47.1k33 gold badges132 silver badges198 bronze badges

answered Sep 9, 2008 at 11:04

Michael Prewecki's user avatar

Michael PreweckiMichael Prewecki

2,0644 gold badges16 silver badges28 bronze badges

I had a similar issue when i was transferring data from an old database to a new database, I got the error above. I then ran the following script

SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH

and found that my columns where slightly different in terms of character sizes etc.
I then tried to alter the table to the new table structure which did not work. I then transferred the data from the old database into Excel and imported the data from excel to the new DB which worked 100%.

answered Apr 13, 2010 at 9:23

DON's user avatar

Also check if the script has no batch seperator commands (remove the ‘GO’ statements on a single line).

answered Jun 16, 2017 at 12:04

In my case, the problem was setting the variable of the Execute SQL Task, in parameters mapping the parameter name, (in OLEDB must be the position of the parameter that you call in the stored procedure), I had 1, but the first parameter starts in 0, so I changed it and voilá!

answered Jan 15, 2020 at 11:29

Artemination's user avatar

ArteminationArtemination

7032 gold badges10 silver badges30 bronze badges

check if you have written GO statement in your query. If it’s there then try to remove it.

drop table if exists Employee
GO

If should be only

drop table if exists Employee

answered Apr 26, 2022 at 11:27

Ravi's user avatar

This error will also occur when trying to do an insert and a field is coded not null and nulls are trying to be inserted.

answered Jul 25, 2013 at 20:32

polrbar5's user avatar

I hade this error when transfering a csv to mssql
I converted the columns to DT_NTEXT and some columns on mssql where set to nvarchar(255).

setting them to nvarchar(max) resolved it.

answered Nov 7, 2015 at 0:11

normalo's user avatar

  • Remove From My Forums

 locked

Ошибка при выполнении выгрузки данных.

  • Вопрос

  • Доброго времени суток уважаемые представители компании Microsoft, я являюсь системным администратором городской больницы №4 г. Владимира, у нас есть важная медицинская программулина MedBase,
    недавно у Вас приобрели новый сервер, ну и решили перенести эту программу на новый сервер, установили бесплатный SQL server 2008 r2 express, саму программу MedBase, вроде все работает но при создании отчета выдает следущую ошибку:
    «При выполнении запроса произошла ошибка: Поставщик OLE DE «Microsoft.ACE.OLEDB. 12.0» для связанного сервера «(null)» вернул сообщение «Произошли ошибки во время выполнения многошаговой операции OLE DE. По
    возможности, проверьте значения всех состояний OLE DE. Работа не выполнена.»
    — это ошибка SQL server полюбому вот мне очень хочется ее исправить потому что отчеты не делаются… ПОМОГИТЕЕЕЕЕ

    • Перемещено

      30 апреля 2013 г. 8:07
      sql

Ответы

    • Помечено в качестве ответа
      Иван ПродановMicrosoft contingent staff, Moderator
      30 апреля 2013 г. 13:46
  • Все решили проблемку: простите за беспокойство … поставщики решили проблему, вот прям только что … в среде SQL выполнить запрос: 

    EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’AllowInProcess’, 1
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’DynamicParameters’, 1
    GO

    Мне помогло

    • Помечено в качестве ответа
      ad_sergeev
      30 апреля 2013 г. 11:09

Logo
MurCode

  • Форумы
  • Поиск
  • О проекте

r77

Дата: 10.10.2017 16:34:43

Добрый день.

delete from [192.168.1.99].Archive.dbo.RA
where FK_R in 
(select FK_R
	from [192.168.1.99].Archive.dbo.RA as ra
	left join [192.168.1.99].Archive.dbo.R rr on ra.FK_R=rr.pk
	where rr.RegistrNum is not null)

данный запрос на прилинкованном сервере [192.168.1.99], выдает такую ошибку:

Поставщик OLE DB "SQLNCLI10" для связанного сервера "192.168.1.99" вернул сообщение "Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.".
Сообщение 7202, уровень 11, состояние 2, строка 1
Could not find server 'SQLSERVER2' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.

Такая ошибка выдается на одном прилинкованном сервере из 30….на других такой ошибки нет…
Помогите, разобраться, пожалуйста…

r77

Дата: 10.10.2017 17:01:57

При чем если

DELETE

заменить на

SELECT * 

, то ошибки нет

TaPaK

Дата: 10.10.2017 17:03:42

r77,

автор
Could not find server ‘SQLSERVER2’ in sys.servers.

а это откуда? если на DELETE срабатывает, то возможно у вас триггер срабатывает и там кривой линк

r77

Дата: 10.10.2017 17:13:51

TaPaK,

триггеров нет на таблице

TaPaK

Дата: 10.10.2017 17:15:43

r77

Дата: 10.10.2017 17:16:47

TaPaK,

на обоих и [192.168.1.99].Archive.dbo.RA и [192.168.1.99].Archive.dbo.R — триггеров нет

TaPaK

Дата: 10.10.2017 17:22:37

r77,

так ищите где Could not find server ‘SQLSERVER2’ in sys.servers.

r77

Дата: 10.10.2017 17:24:55

TaPaK,

что вы имеете в виду?
конечно у меня прилинкован сервер [192.168.1.99], а не SQLSERVER2

SQLSERVER2 — это имя сервера [192.168.1.99]

r77

Дата: 10.10.2017 17:26:42

TaPaK,

еще раз….если DELETE заменить на SELECT — то с линками получается все в порядке…чем DELETE не нравится линку?и в линке ли проблема?

Владислав Колосов

Дата: 10.10.2017 18:21:25

r77,

DTC настроен? Компьютер не переименовывали?

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Возникает ошибка не могу найти решение
    , Не могу добавить в базу данные…

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему

      


    Сообщ.
    #1

    ,

      Junior

      *

      Рейтинг (т): нет

      При добавлении данных на стадии insert возникает ошибка.
      Проект прилагаю
      В SKLAD_ADD
      начало модуля dm2.SKLAD_IN.insert

      В проекте используется библиотека rz rx и ehlib

      Прикреплённый файлПрикреплённый файлs.rar (32,77 Кбайт, скачиваний: 118)

      Сообщение отредактировано: DeZik

      Wizard

      Bas



      Сообщ.
      #2

      ,

        Ошибка какая?


        DeZik



        Сообщ.
        #3

        ,

          Junior

          *

          Рейтинг (т): нет

          DataSet not edit or insert mode

          Переключался между видами доступа — 0 эмоций


          Fr0sT



          Сообщ.
          #4

          ,

            Есть ли весомая причина не юзать DB controls?
            Есть ли весомая причина добавлять все поля в дизайн-тайм и обращаться к ним как к объектам вместо dataset.FieldByName?


            DeZik



            Сообщ.
            #5

            ,

              Junior

              *

              Рейтинг (т): нет

              Цитата Fr0sT @

              Есть ли весомая причина не юзать DB controls?

              Точнее про что идет речь — не могу понять

              Цитата Fr0sT @

              Есть ли весомая причина добавлять все поля в дизайн-тайм и обращаться к ним как к объектам вместо dataset.FieldByName?

              Да есть.

              Поэтому и возникает вопрос. Интересует вопрос откуда проблема и как решить, а не как изменить всю программу для правильного функционирования данного модуля.

              ПРИЧЕМ ДОБАВЛЮ.
              После возникновения ошибки запись добавляется, но пустая….

              Даже при конструкции

              ExpandedWrap disabled

                  try

                  dm2.ASKLAD_IN.Insert;

                  dm2.ASKLAD_INDATE.AsDateTime:=SKLAD_ADD.DateEdit1.Date;

                  dm2.ASKLAD_INKOL.AsFloat:=SKLAD_ADD.CurrencyEdit1.Value;

                  dm2.ASKLAD_IN.Post;

                  except

                  messagebox(Sklad_add.Handle,’Запись не добавлена’,’Внимание’,0);

                  end;

              выводит сообщение об ошибке, а пустая запись добавляется. (в D7 ошибка та-же)

              Сообщение отредактировано: DeZik


              Fr0sT



              Сообщ.
              #6

              ,

                Цитата DeZik @

                Точнее про что идет речь — не могу понять

                Классы вида TDB<control_name>

                Цитата DeZik @

                Интересует вопрос откуда проблема и как решить, а не как изменить всю программу для правильного функционирования данного модуля.

                Ой, там «всей программы»-то — две с половиной строчки. Впрочем, дело хозяйское.
                Почему у тебя не работает — не знаю. Попробовал у себя:

                ExpandedWrap disabled

                    IBTable1.Insert;

                    IBTable1SUBJECT.AsString := ‘blabla’;

                    IBTable1.Post;

                всё ОК. Твой проект запустить нет возможности по причине юзания левых компонент-паков


                DeZik



                Сообщ.
                #7

                ,

                  Junior

                  *

                  Рейтинг (т): нет

                  Цитата Fr0sT @

                  Ой, там «всей программы»-то — две с половиной строчки.

                  Это вырубка для теста.

                  Цитата Fr0sT @

                  Твой проект запустить нет возможности по причине юзания левых компонент-паков

                  отключи левые компонент паки — можешь запустить т.к. они за визуальность отвечают, а ее тма не надо.

                  Ib не ставил — однозадачна система. Еще раз акцентирую = нужно найти ошибку и решить проблему, а не переписать всю прогу с «0».

                  Добавлено
                  Как не странно следующий код работает

                  ExpandedWrap disabled

                      try

                      dm2.ASKLAD_IN.Insert;

                      except

                      end;

                      try

                      dm2.ASKLAD_IN.Edit;

                      dm2.ASKLAD_INDATE.AsDateTime:=SKLAD_ADD.DateEdit1.Date;

                      dm2.ASKLAD_IN.Post;

                      except

                      end;

                  А дальше как не знаю….

                  Сообщение отредактировано: DeZik


                  Игорь Акопян



                  Сообщ.
                  #8

                  ,

                    Поставьте брякпойнты везде, выясните в какой строке таки возникает ошибка. Происходит присваивание в поле, а датасет почему-то вышел или ещё не вошёл в режим редактирования.
                    Создайте пустые BeforePost и AfterPost. Это позволит более точно понять место ошибки


                    DeZik



                    Сообщ.
                    #9

                    ,

                      Junior

                      *

                      Рейтинг (т): нет

                      Цитата Игорь Акопян @

                      Поставьте брякпойнты везде, выясните в какой строке таки возникает ошибка.

                      Цитата DeZik @

                      При добавлении данных на стадии insert возникает ошибка.

                      Цитата Игорь Акопян @

                      Создайте пустые BeforePost и AfterPost. Это позволит более точно понять место ошибки

                      Все попробовал ничего не помогает, поэтому и обратился сюда


                      Fr0sT



                      Сообщ.
                      #10

                      ,

                        Цитата DeZik @

                        отключи левые компонент паки — можешь запустить т.к. они за визуальность отвечают, а ее тма не надо.

                        Я про rz, на котором у тебя все лейблы

                        Цитата DeZik @

                        Это вырубка для теста

                        Если уж делаешь тест, делай его без левых компонентов. Иначе зачем выкладывать проект

                        Цитата DeZik @

                        Как не странно следующий код работает

                        Edit после Insert ничего не делает, странно, что это работает…

                        Добавлено
                        Хм. Попробовал базу Аксесс + Адоконнекшен + код

                        ADOTable1.Insert;
                        ADOTable1stat.AsString := ‘blabla’;
                        ADOTable1.Post;

                        — выдает ошибку «Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.»

                        Сообщение отредактировано: Fr0sT


                        Игорь Акопян



                        Сообщ.
                        #11

                        ,

                          Цитата DeZik @

                          При добавлении данных на стадии insert возникает ошибка.

                          стадия инсерт это не то что я спросил…
                          Прямо на строке Insert?

                          поддерживаю выкладку без РЗ :)


                          Fr0sT



                          Сообщ.
                          #12

                          ,

                            Загуглил, это, судя по всему, у АДО такие заморочки


                            DeZik



                            Сообщ.
                            #13

                            ,

                              Junior

                              *

                              Рейтинг (т): нет

                              Цитата Игорь Акопян @

                              Прямо на строке Insert?

                              Да

                              Цитата Fr0sT @

                              — выдает ошибку «Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.»

                              Не, там все норально и никаких проблем с

                              Цитата Fr0sT @

                              Загуглил, это, судя по всему, у АДО такие заморочки

                              нет

                              Выложу без RZ завтра

                              Сообщение отредактировано: DeZik


                              DeZik



                              Сообщ.
                              #14

                              ,

                                Junior

                                *

                                Рейтинг (т): нет

                                Вот без украшательств….
                                Попробуйте выполнить — убрал даже всю функциональность

                                Прикреплённый файлПрикреплённый файлss.rar (22,84 Кбайт, скачиваний: 118)


                                Fr0sT



                                Сообщ.
                                #15

                                ,

                                  В самом деле, глюк. Пока удалось обнаружить, что проблема в lookup поле CENA

                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                  0 пользователей:

                                  • Предыдущая тема
                                  • Delphi: Базы данных
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0502 ]   [ 20 queries used ]   [ Generated: 22.09.23, 23:18 GMT ]  

                                  ODBC + PostgreSQL. Ошибка получения даты ☑ 0

                                  PitNN

                                  28.10.22

                                  09:50

                                  Добрый день, Коллеги. Просьба подсказать, кто сталкивался. Есть внешняя БД на postgresql. В таблице одно из полей имеет тип timestamp (пробовал тип date результат тот же). При чтении данных ADODB.Recordset из этой таблицы, когда доходит до чтения из поля с типом «дата» вываливается ошибка: «Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.»

                                  В чем может быть причина?

                                  1

                                  Garykom

                                  28.10.22

                                  10:06

                                  Причина в использовании устаревших уже не поддерживаемых реально технологий

                                  2

                                  PitNN

                                  28.10.22

                                  10:51

                                  (1) Какую именно технологию вы считаете устаревшей?

                                  3

                                  Garykom

                                  28.10.22

                                  11:13

                                  (2) ADODB и ODBC

                                  4

                                  Garykom

                                  28.10.22

                                  11:19

                                  v8sqlite — нативная ВК для работы из 1С c базами  sqlite см там 21 пост

                                  это то что предпочитаю в настоящее время использовать вместо устаревших технологий

                                  5

                                  NorthWind

                                  28.10.22

                                  11:47

                                  (0) скорее всего кривая связка драйвера ODBC и OLE провайдера. Поищите другие варианты, например, подключитесь к ODBC драйверу через внешний источник данных 1С или попытайтесь поменять версию драйвера, если это возможно. Вообще OLEDB провайдеры достаточно капризная штука, особенно если речь идет не о Microsoftовских базах данных.

                                  6

                                  Garykom

                                  28.10.22

                                  11:51

                                  (5) Не поможет.

                                  Потом какое то другое поле встретится, например длинное BINARY или еще что и снова привет.

                                  7

                                  PitNN

                                  28.10.22

                                  11:52

                                  (5) Замечена такая штука. Если в ячейке записана дата «0100-01-01 00:00:00.000», то при чтении из Recordset она определяется как 01.01.0001 (т.е. потерялись куда-то 100 лет)

                                  Если в ячейке записана дата меньше «0100-01-01 00:00:00.000» (в том числе и «0001-01-01»), то это приводит к указанной выше ошибке.

                                  Начиная с даты «0101-01-01 00:00:00.000» всё определяется корректно

                                  8

                                  PitNN

                                  28.10.22

                                  11:53

                                  (4) Как это поможет подключиться, например к clickhouse?

                                  9

                                  Garykom

                                  28.10.22

                                  11:54

                                  10

                                  Garykom

                                  28.10.22

                                  11:54

                                  (8) а какая нахрен разница то?

                                  11

                                  Garykom

                                  28.10.22

                                  11:55

                                  12

                                  Garykom

                                  28.10.22

                                  12:40

                                  13

                                  Garykom

                                  28.10.22

                                  13:15

                                  14

                                  PitNN

                                  28.10.22

                                  13:54

                                  (13) Работа через запуск командного интерпретатора с последующим чтением файла ответа это, конечно, вариант. Спасибо за совет

                                  15

                                  ДедМорроз

                                  28.10.22

                                  17:43

                                  Можно еще попробовать дату приводить к строке или числу в самом запросе.

                                  Понравилась статья? Поделить с друзьями:
                                • Произошла ошибка при загрузке скетча arduino nano
                                • Произошла ошибка при загрузке данных для этого параметра
                                • Произошла ошибка при выполнении криптоопераций
                                • Произошла ошибка при загрузке скетча arduino mega
                                • Произошла ошибка при загрузке java машины