Just777 0 / 0 / 0 Регистрация: 06.04.2017 Сообщений: 66 |
||||
1 |
||||
MS SQL 10.01.2019, 18:37. Показов 16750. Ответов 3 Метки нет (Все метки)
Что за ошибка? «Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.»
Миниатюры
0 |
Администратор 15621 / 12590 / 4990 Регистрация: 17.03.2014 Сообщений: 25,586 Записей в блоге: 1 |
|
10.01.2019, 22:28 |
2 |
Just777, ты к какой СУБД подключаешься — к Access или все-таки SQL Server?
0 |
1607 / 1116 / 165 Регистрация: 23.07.2010 Сообщений: 6,471 |
|
11.01.2019, 10:12 |
3 |
SELECT[region] FROM[name_region] GROUP BY[region] пробелы расставь, дай шанс парсеру
0 |
0 / 0 / 0 Регистрация: 06.04.2017 Сообщений: 66 |
|
11.01.2019, 16:18 [ТС] |
4 |
OwenGlendower, sql server. Ошибка была в подключении)
0 |
- Remove From My Forums
Ошибка при выполнении выгрузки данных.
-
Вопрос
-
Доброго времени суток уважаемые представители компании 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
-
Помечено в качестве ответа
Ситуация следующая:
Написал макрос для выгрузки данных из базы SQL Server в Excel. У меня все работает корректно. Отправил файл с макросом коллеге и у него появляется данная ошибка. Отдел безопасности говорит, что доступ ему предоставили.
Строка соединения:
ConnectionString = "Provider=SQLOLEDB;Data Source=server name; " _
& "Initial Catalog=database name; Integrated Security=SSPI; " _
& "IsolationLevel=adXactReadUncommitted"
Весь код
Dim con As New ADODB.Connection
Dim rec As New ADODB.Recordset, rec2 As New ADODB.Recordset
Dim vac As String
rec.CursorType = adOpenKeyset
rec.LockType = adLockOptimistic
rec2.CursorType = adOpenKeyset
rec2.LockType = adLockOptimistic
Application.ScreenUpdating = False
Лист1.Unprotect Password:="пароль"
лист2.Unprotect Password:="пароль"
лист1.Activate
лист1.Range("A7:U7").Select
лист1.Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
лист2.Activate
лист2.Range("A7:R7").Select
лист2.Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
лист1.Activate
con.Open
rec.Open "SELECT * " & _
"FROM [database].[schema].[table] " & _
"WHERE [UserName] like '" & Application.UserName & "'", con
If rec.RecordCount <> 1 Then
MsgBox "Сообщение" & _
vbNewLine & "Продолжение сообщения", vbOKOnly
Else
vac = rec.Fields("Столбец")
rec.Close
If vac <> "значение" Then
rec.Open "SELECT *" & _
"FROM [database].[schema].[table2]" & _
"Where [Столбец2] = '" & vac & "'", con
rec2.Open "SELECT *" & _
"FROM [database].[schema].[table3]" & _
"Where [Столбец2] = '" & vac & "'", con
Else
rec.Open "SELECT *" & _
"FROM [database].[schema].[table2]", con
rec2.Open "SELECT *" & _
"FROM [database].[schema].[table3]", con
End If
Лист1.Range("A7").CopyFromRecordset rec
Лист2.Range("A7").CopyFromRecordset rec2
MsgBox "Готово"
End If
Лист1.Protect Password:="Пароль", _
Contents:=True, DrawingObjects:=False, AllowUsingPivotTables:=True, _
AllowSorting:=True, AllowFiltering:=True
Лист2.Protect Password:="Пароль", _
Contents:=True, DrawingObjects:=False, AllowUsingPivotTables:=True, _
AllowSorting:=True, AllowFiltering:=True
Лист1.Activate
|
|||
PitNN
28.10.22 — 09:50 |
Добрый день, Коллеги. Просьба подсказать, кто сталкивался. Есть внешняя БД на postgresql. В таблице одно из полей имеет тип timestamp (пробовал тип date результат тот же). При чтении данных ADODB.Recordset из этой таблицы, когда доходит до чтения из поля с типом «дата» вываливается ошибка: «Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена.» |
||
Garykom
1 — 28.10.22 — 10:06 |
Причина в использовании устаревших уже не поддерживаемых реально технологий |
||
PitNN
2 — 28.10.22 — 10:51 |
(1) Какую именно технологию вы считаете устаревшей? |
||
Garykom
3 — 28.10.22 — 11:13 |
(2) ADODB и ODBC |
||
Garykom
4 — 28.10.22 — 11:19 |
v8sqlite — нативная ВК для работы из 1С c базами sqlite см там 21 пост |
||
NorthWind
5 — 28.10.22 — 11:47 |
(0) скорее всего кривая связка драйвера ODBC и OLE провайдера. Поищите другие варианты, например, подключитесь к ODBC драйверу через внешний источник данных 1С или попытайтесь поменять версию драйвера, если это возможно. Вообще OLEDB провайдеры достаточно капризная штука, особенно если речь идет не о Microsoftовских базах данных. |
||
Garykom
6 — 28.10.22 — 11:51 |
(5) Не поможет. |
||
PitNN
7 — 28.10.22 — 11:52 |
(5) Замечена такая штука. Если в ячейке записана дата «0100-01-01 00:00:00.000», то при чтении из Recordset она определяется как 01.01.0001 (т.е. потерялись куда-то 100 лет) |
||
PitNN
8 — 28.10.22 — 11:53 |
(4) Как это поможет подключиться, например к clickhouse? |
||
Garykom
9 — 28.10.22 — 11:54 |
https://www.google.ru/search?q=odbc+timestamp+postrgesql |
||
Garykom
10 — 28.10.22 — 11:54 |
(8) а какая нахрен разница то? |
||
Garykom
11 — 28.10.22 — 11:55 |
(8) https://github.com/ClickHouse/clickhouse-go |
||
Garykom
12 — 28.10.22 — 12:40 |
https://github.com/Garykom/psql |
||
Garykom
13 — 28.10.22 — 13:15 |
(12)+ ну как работает psql.exe описанный в v8sqlite — нативная ВК для работы из 1С c базами sqlite ? |
||
PitNN
14 — 28.10.22 — 13:54 |
(13) Работа через запуск командного интерпретатора с последующим чтением файла ответа это, конечно, вариант. Спасибо за совет |
||
ДедМорроз 15 — 28.10.22 — 17:43 |
Можно еще попробовать дату приводить к строке или числу в самом запросе. |
Проблемы
Распределенные запросы, которые используют функцию OPENQUERY для обновления, удаления или вставки данных следующим образом
exec sp_dropserver 'linked1', 'droplogins'exec sp_addlinkedserver 'linked1', 'SQL Server'exec sp_setnetname 'linked1', '<servername>'exec sp_addlinkedsrvlogin 'linked1', 'false', null, '<login name>', '<password>'SET ANSI_NULLS ONgoSET ANSI_WARNINGS ONgoselect * from openquery (linked1, 'update testlinked set ssn=ssn+1')select * from openquery (linked1, 'insert into testlinked (ssn) values (1000)')select * from openquery (linked1, 'delete from testlinked where ssn=1')
могут возникать следующие сообщения об ошибках:
Сервер: сообщение 7357, уровень 16, состояние 2, строка 1 не удалось обработать объект «Update testlinked Set SSN = SSN». Поставщик OLE DB ‘ SQLOLEDB ‘ указывает на то, что в объекте нет столбцов. Сервер: MSG 7357, уровень 16, состояние 2, строка 1 [Microsoft] [драйвер SQL Server ODBC] [SQL Server] не удалось обработать объект «Update testlinked Set SSN = SSN». Поставщик OLE DB ‘ MSDASQL ‘ указывает на то, что в объекте нет столбцов.
Реальное текстовое сообщение об ошибке может отличаться в зависимости от поставщика OLE DB и выполняемой операции (обновления, вставки или удаления), но номер ошибки всегда равен 7357. Если вы используете Microsoft SQL Server 2005, появляется следующее сообщение об ошибке:
Сервер: MSG 7357, Level 16, состояние 2, строка 1 не может обработать объект «Update testlinked Set SSN = SSN». Поставщик OLE DB «SQLOLEDB» для связанного сервера «ИмяСервера» указывает на то, что у объекта нет столбцов или у текущего пользователя нет разрешений на доступ к этому объекту.
Причина
Для применения OPENQUERY требуется возвращаемый набор результатов, но инструкции UPDATE, DELETE и INSERT, используемые с OPENQUERY , не возвращают результирующий набор.
Обходное решение
Эту проблему можно обойти следующими способами:
-
Для выполнения операций вставки, обновления и удаления используются имена из четырех частей (linked_server_name. catalog. Schema. object_name).
-
Как описано в книге SQL Server Books Online, создайте ссылку на функцию OPENQUERY как целевую таблицу инструкции INSERT, UPDATE или DELETE в соответствии с возможностями поставщика OLE DB. В следующих запросах показано правильное использование поставщика OLE DB для SQL Server:
update openquery(linked1, 'select ssn from testlinked where ssn=2')set ssn=ssn + 1insert openquery(linked1, 'select ssn from testlinked where 1=0') values (1000)delete openquery(linked1, 'select ssn from testlinked where ssn>100')
Примечание. В инструкции INSERT используется предикат WHERE 1 = 0, чтобы исключить получение данных с удаленного сервера, что может привести к снижению производительности. Кроме того, для операций обновления и удаления существуют особые требования к индексам; подробные сведения приведены в разделе «Дополнительные сведения».
Дополнительная информация
Требование уникального индекса
Поставщик OLE DB для SQL Server требует, чтобы в базовой таблице существовал уникальный индекс для операций обновления или удаления. Если в удаленной таблице нет уникального индекса, при попытке обновления или удаления происходит следующее сообщение об ошибке:
Сервер: сообщение 7320, уровень 16, состояние 2, строка 1: не удалось выполнить запрос к поставщику услуг OLE DB providers «SQLOLEDB». Поставщик не поддерживает обязательный интерфейс поиска строк. Поставщик указывает на то, что возникли конфликты с другими свойствами или требованиями. [Поставщик OLE/DB вернул сообщение об ошибке: Многошаговая операция OLE DB вызвала ошибки. Установите флажок каждый из значений состояния OLE DB, если он доступен. Работа не выполнена.
Это применимо как к OPENQUERY , так и к четырем операциям Update и Delete из четырех частей. Проблему можно устранить, добавив уникальный индекс в удаленной таблице.
Динамическое выполнение с помощью OpenQuery
Иногда желательно использовать динамический запрос для достижения того же эффекта с помощью OPENQUERY, как показано в следующем примере:
begin tranSET QUOTED_IDENTIFIER OFFSET XACT_ABORT ONdeclare @cmd varchar(2500) declare @cmd1 varchar(2500) declare @var varchar(20) set @var = 'White' declare @var1 varchar(20) set @var1 = 'White1' declare @var2 varchar(20) set @var2 = 'Johnson1'select @cmd = "Update openquery(linked1,'select au_lname, au_fname from pubs.dbo.authorswhere au_lname = ''" + @var + "''' )set au_lname = '" + @var1 + "',au_fname = '" + @var2 + "'"exec ( @cmd )commit transelect * from <servername>.pubs.dbo.authors
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.