Не удается найти текст сообщения с номером 0x80040e4b в файле сообщений oraoledb
В этой статье вы можете решить проблему, которая может возникнуть при запуске запроса связанного сервера Oracle.
Оригинальная версия продукта: SQL Server
Исходный номер КБ: 2295405
Секреты расшифровки пакета
Параметр по умолчанию для свойства пакета SSIS ProtectionLevel EncryptSensitiveWithUserKey . При сберечении пакета SSIS шифрует только те части пакета, которые содержат помеченные свойства, такие как пароли, имена пользователей и sensitive строки подключения. Поэтому при повторной загрузке пакета текущий пользователь должен выполнить требования шифрования для расшифровки sensitive свойств. Однако для загрузки пакета текущему пользователю не нужно удовлетворять требованиям шифрования. При запуске пакета с помощью SQL Server агента учетная запись по умолчанию является SQL Server службы агентов. Эта учетная запись по умолчанию, скорее всего, отличается от автора пакета. Таким образом, SQL Server агент может загружать и запускать шаг задания, но пакет не удается, так как он не может завершить подключение. Например, пакет не может завершить подключение OLE DB или подключение FTP. Пакет не удается, так как он не может расшифровать учетные данные, которые ему необходимо подключить.
Рассмотрим процесс разработки и среду, чтобы определить, какие учетные записи необходимы и используются на каждом компьютере. Параметр EncryptSensitiveWithUserKey ProtectionLevel свойства является мощным параметром. Этот параметр не следует сбрасывать со счетов, так как сначала он вызывает сложности развертывания. Вы можете шифровать пакеты при входе в соответствующую учетную запись. Вы также можете использовать Dtutil.exe командную утилиту SSIS для изменения уровней защиты с помощью файла .cmd и подсистемы команды SQL Server агента. Например, выполните следующие действия. Так как вы можете использовать Dtutil.exe в пакетных файлах и циклах, вы можете выполнять эти действия одновременно для нескольких пакетов.
Измените пакет, который необходимо шифровать с помощью пароля.
Используйте утилиту Dtutil.exe с помощью операционной системы (cmd Exec) SQL Server агента, чтобы изменить ProtectionLevel свойство на EncryptSensitiveWithUserKey . Этот процесс включает расшифровку пакета с помощью пароля, а затем повторное шифрование пакета. Ключ пользователя, используемый для шифрования пакета, SQL Server задания агента в списке Run As.
Поскольку ключ включает имя пользователя и имя компьютера, эффект переноса пакетов на другой компьютер может быть ограничен.
Подключите Oracle SQL к VBA
Я могу подключить Python к моей базе данных Oracle SQL на компьютере с Windows, но, как ни странно, я не могу заставить его работать с VBA. Для справки, это код Python для подключения: cx_Oracle .
SQL Server 2019 не может видеть Oracle 12.2.0 OraOLEDB12.dll в списке поставщиков
Мой SQL Server 2019 Enterprise настроен и работает на виртуальной машине Windows 2019 Core. Соединения с базами данных SQL Server в порядке. Я установил драйвер OLEDB OraOLEDB12.dll через файл oui.exe в папке .
Действия по воспроизведению проблемы
- Войдите в систему как пользователь, который не входит в группу SQLServerSQLAgentUser. Например, можно создать локального пользователя.
- Создайте пакет SSIS и добавьте задачу ExecuteSQL. Используйте диспетчер подключения OLE DB к локальному файлу msdb, используя следующую строку: 'Windows Authentication' -SQLSourceType: "Direct Input" -SQLStatement: "sp_who" .
- Запустите пакет, чтобы убедиться, что он успешно выполняется.
- Для свойства ProtectionLevel задано значение EncryptSensitiveWithPassword .
- Создайте SQL Server агента и шаг задания. В списке Run Asщелкните SQL Server службу агента для запуска шага задания. В тексте в SQL Server агентской истории работы отображаются сведения, похожие на следующие:
Сведения о командной и выходной информации подсистемы exec
Используя командный подход подсистемы exec, вы добавляете в командную строку SSIS многословные коммутаторы консоли для вызова исполняемого файла командной строки Dtexec.exe SSIS. Кроме того, используется функция Advanced job в файле вывода. Вы также можете использовать параметр Include Step Output в параметре история для перенаправления сведений о журнале в файл или в SQL Server агентов.
Ниже приводится пример командной строки:
В журнале консоли возвращаются сведения, похожие на следующие:
Not the answer you're looking for? Browse other questions tagged excel oracle oraoledb or ask your own question.
Related
Hot Network Questions
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.12.42100
В этой статье помогают устранить проблему, которая возникает при вызове пакета SSIS с SQL Server агента.
Оригинальная версия продукта: SQL Server
Исходный номер КБ: 918760
4 Answers 4
This error message can be very confusing and the solution can be surprisingly primitive. In my case: Oracle stored procedure sends recordset to MS Excel via "Provider=OraOLEDB.Oracle;Data Source= . etc" . The problem was many decimal numbers in the Oracle data column sent to Excel 2010. When I used Oracle SQL query ROUND(grosssales_eur,2) AS grosssales_eur, it worked fine.
You can find a list of OleDB error codes under this link. Your error code corresponds to "The specified accessor was not a parameter accessor".
These error message strings corresponding to certain error codes are normally kept in "message files". It seems that the message file for OraOLEDB does not contain a string for your error code, and just gives you the error code instead.
Thank you. Appreciated. The crucial for me was the root cause, that number of decimal numbers can cause such error in data transfer. This needs some intuition and I wanted to help other victims and saved their time of the investigation. Miroslav
OK I have recently started getting this message again while refactoring a bunch of sql to be parameterized instead of interpolated string (do not judge) in my application, in the form: The system cannot find message text for message number 0x80040e0c in the message file for OraOLEDB.
In my case for this particular code, the problem was due to either OleDbParameter objects that were missing, added to the collection for the command in the wrong order, or defined but not used in the OleDbCommand. So check those to make sure the types are right, correct position as they are completely positional despite naming, and used when defined.
The system cannot find message text for message number 0x80040e0c in the message file for OraOLEDB, such error message indicates single or multiple errors like integrity constraint including null inserting into not null columns, unique constraint. I have fixed the error by redirecting such bad/incorrect records before inserting them into the destination table. You can try if you are getting such error message. Thanks!
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
О журнале SSIS
Поставщики журналов и журналов SSIS могут фиксировать сведения о выполнении и сбоях пакета. По умолчанию пакет не регистрит сведения. Необходимо настроить пакет для входа данных. При настройке пакета для входа в журнал отображаются подробные сведения, похожие на следующие. В этом случае вы узнаете, что это проблема разрешений:
Ссылки
Дополнительные сведения о том, как использовать утилиту Dtutil.exe в пакетных операциях, см. в рублях Как использовать утилиту dtutil (Dtutil.exe), чтобы установить уровень защиты пакета пакетов SQL Server integration Services (SSIS) в SQL Server 2005 г.
Дополнительные сведения о создании шаблонов пакетов см. в SQL Server в студии разработки бизнес-аналитики
Дополнительные сведения о безопасности пакета SSIS и свойстве см. в разделе Соображения безопасности для служб интеграции в SQL Server ProtectionLevel 2005 books Online.
К сожалению, пользователи не знают, что параметры шага задания агента по умолчанию помещаем их в это состояние. Дополнительные сведения о SQL Server агентов и SSIS см. в следующих SQL Server книг 2005 г.:
Решение
Обратитесь к стороне-поставщику для получения сведений и последних исправлений. В последней версии поставщика OLEDB см. 64-битные компоненты доступа к данным Oracle (ODAC).
Я устанавливаю приложение ASP на 64-битный сервер Windows 2016, где также установлена БД Oracle 18.0. Я установил драйвер ODAC 19.3 64Bit и успешно зарегистрировал ORAOLEDB19.DLL. Используемый код .
Симптомы
При вызове пакета Microsoft SQL Server службы интеграции (SSIS) из шага SQL Server агента пакет SSIS не запустится. Однако, если вы не измените пакет SSIS, он будет успешно работать за пределами SQL Server Agent.
OPENROWSET От SQL к Oracle
Я пытаюсь подключиться с сервера sql к серверу Oracle с OPENROWSET для извлечения данных. это мой запрос: ВЫБРАТЬ a. * FROM OPENROWSET (N'OraOLEDB.Oracle ', N'Data Source = Myip: Port / dbname'; 'User .
Решение
Чтобы устранить эту проблему, используйте один из следующих методов. Наиболее подходящий метод зависит от среды и причины сбой пакета. Причины, повеяв о сбойе пакета, следуют следующим образом:
- Учетная запись пользователя, используемая для запуска пакета в SQL Server Agent, отличается от исходного автора пакета.
- Учетная запись пользователя не имеет необходимых разрешений на подключение или доступ к ресурсам за пределами пакета SSIS.
Пакет не может работать в следующих сценариях:
- Текущий пользователь не может расшифровать секреты из пакета. Этот сценарий может произойти, если текущая учетная запись или учетная запись выполнения отличаются от исходного автора пакета, а параметр свойства ProtectionLevel не дает текущему пользователю расшифровать секреты в пакете.
- Подключение SQL Server, использующее интегрированную безопасность, сбой, так как у текущего пользователя нет необходимых разрешений.
- Доступ к файлам не удается, так как у текущего пользователя нет необходимых разрешений для записи в файловую долю, к которую получает доступ диспетчер подключения. Например, этот сценарий может возникать с поставщиками текстовых журналов, которые не используют вход и пароль. Этот сценарий также может возникать с любой задачей, которая зависит от диспетчера подключения к файлам, например задачи файловой системы SSIS.
- Конфигурация пакета SSIS на основе реестра использует HKEY_CURRENT_USER ключи реестра. Ключи HKEY_CURRENT_USER реестра являются пользовательскими.
- Для задачи или диспетчера подключения требуется, чтобы текущая учетная запись пользователя получила правильные разрешения.
Чтобы устранить проблему, используйте следующие методы:
Метод 1. Использование учетной записи прокси SQL Server агента. Создайте учетную запись прокси SQL Server агента. Эта учетная запись прокси-сервера должна использовать учетные данные, SQL Server агент может выполнить задание в качестве учетной записи, создав пакет, или учетной записи, которая имеет необходимые разрешения.
Этот метод работает для расшифровки секретов и удовлетворяет ключевым требованиям пользователя. Однако этот метод может иметь ограниченный успех, так как ключи пользователя пакета SSIS связаны с текущим пользователем и текущим компьютером. Поэтому, если переместить пакет на другой компьютер, этот метод все равно может привести к сбой, даже если на этапе задания используется правильная учетная запись прокси.
Метод 2. Установите свойство пакета SSIS ProtectionLevel в ServerStorage. Измените свойство SSIS Package ProtectionLevel на ServerStorage. Этот параметр сохраняет пакет в SQL Server базе данных и позволяет управлять доступом SQL Server ролей базы данных.
Метод 3. Установите свойство пакета ProtectionLevel EncryptSensitiveWithPassword SSIS. Изменение свойства пакета SSIS ProtectionLevel на EncryptSensitiveWithPassword . Этот параметр использует пароль для шифрования. Затем можно изменить командную строку SQL Server задания агента, чтобы включить этот пароль.
Метод 4. Используйте файлы конфигурации пакета SSIS. Используйте файлы конфигурации пакета SSIS для хранения конфиденциальной информации и хранения этих файлов конфигурации в защищенной папке. Затем можно изменить свойство таким образом, чтобы пакет не был зашифрован и не пытался сохранить секреты ProtectionLevel DontSaveSensitive пакета. При запуске пакета SSIS требуемая информация загружается из файла конфигурации. Убедитесь, что файлы конфигурации защищены надлежащим образом, если они содержат конфиденциальные сведения.
Метод 5. Создание шаблона пакета. Для долгосрочного разрешения создайте шаблон пакета, использующий уровень защиты, который отличается от параметра по умолчанию. Эта проблема не будет возникать в будущих пакетах.
AccessViolationException с провайдером OraOLEDB.Oracle на 12C?
Мы использовали Oracle 11g с MSDAORA в качестве поставщика, но поскольку MSDAORA будет устаревшей, мы должны перейти к новому поставщику для строки подключения. Мы также используем Oracle Client 12c прямо сейчас .
Убедитесь, что у вас есть подробные сведения об ошибке сбоя пакета SSIS
Вместо использования ограниченных сведений в журнале SQL Server агентов можно использовать журнал SSIS, чтобы убедиться, что у вас есть сведения об ошибке при сбое пакета SSIS. Вы также можете запустить пакет с помощью команды подсистемы exec вместо команды подсистемы SSIS.
Симптомы
Рассмотрим следующий сценарий.
- Вы устанавливаете SQL Server на компьютере с Windows Server.
- Создается связанный сервер для базы данных Oracle.
- Вы запустите связанный запрос сервера с помощью поставщика OraOLEDB (поставщика OLEDB для Oracle).
В этом сценарии SQL Server сбои службы, и для запроса не возвращаются результаты. Кроме того, вы можете заметить следующие проблемы:
Служба SQL Server (MSSQLSERVER) неожиданно завершилась. Он сделал это 1 раз (ы).
В minidump.mdmp инструкция по сборке в ntdll! RtlReportCriticalFailure+62 в C:\Windows\System32\ntdll.dll microsoft Corporation вызвала неизвестное исключение (0xc0000374) на потоке 235
Или иногда альтернативно в ошибке можно увидеть еще одно исключение:
SqlDumpExceptionHandler: процесс 74, созданный со смертельным исключением c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server завершает этот процесс.
Стек файла minidump содержит сторонние модули внутри Sqlserver.exe процесса. Например, файл minidump содержит следующие сведения в модулях Oracle:
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Служба SQL Server аварийно завершает работу при использовании распределенной транзакции
Недавно я настроил dblink с помощью поставщика OraOLEDB, DBLINK работал, однако, когда я пытаюсь использовать распределенную транзакцию в DBLINK, моя служба SQL Server выходит из строя, и когда я .
Связь с данными Microsoft | Имя базы данных Oracle конфликтует с именем домена (?)
Я обращаюсь к особой проблеме с "Net Service Name", которая каким-то образом вызывает несвязанную проблему при тестировании вновь созданного соединения с помощью OraOLEDB. Имя нашей устаревшей базы данных совпадает с именем нашего домена .
Я загружаю данные в виде листа Excel в базу данных Oracle из 167 столбцов, используя макросы Excel. Я получаю эту ошибку в инструкции выполнения.
Я столкнулся с трудностями при отладке этой ошибки.
Run Time error: -2147217887(80040e21) The system cannot find a message text for the message number 0x80040e21 in the message file for OraOLEDB
Делаем это для каждого параметра
При таком большом количестве параметров проблема может заключаться в любом элементе, включая несовпадающий тип данных, длину данных и т. Д. Здесь необходимо применить искусство, известное как отладка.
Внимательно проверьте типы данных table ( T_SAP_ZSSTABL_NEW ). Oracle может иметь типы данных, которые непосредственно не переводимый Toby типы ADO , такие как BLOB , CLOB , BFILE , высокая точность числовых типов, максимальные типы символов, или типы расширений (XML, средства массовой информации и т.д.).
Попробуйте увеличить длину данных (или оставьте поле пустым в параметрах):
При необходимости проверьте переменную длину с помощью VBA, Len() чтобы вывести предупреждение пользователя перед добавлением параметров.
Попробуйте запустить SELECT версию запроса с теми же параметрами, чтобы вернуть одну строку результатов. Если возникает такая же ошибка, начните с первого параметра, затем последовательно добавьте второй или пакет из 10, чтобы изолировать проблемный элемент.
Выполните рефакторинг кода для согласованности, так как вы могли пропустить один или неверно выровнять код, что может происходить с множеством повторяющихся строк. Всегда стремитесь к СУХОМУ (Не повторяйся) коду. Один из вариантов - использовать словарь с парами ключ / значение вместо 160+ переменных или именованных диапазонов:
Если у вас смешанные типы, попробуйте создать разные словари для каждого типа и последовательно повторяйте их, чтобы добавить параметры. И приспосабливайтесь UPDATE ко всем одинаковым типам рядом друг с другом. Напоминание UPDATE не требует соблюдения порядка столбцов в определении таблицы.
Если возможно (или долгосрочное решение), рассмотрите возможность перепроектирования широкоформатной таблицы столбцов TSZ в нормализованную форму длинного формата.
Хотя это добавит 167 строк для каждого уникального идентификатора, в структуре базы данных строки намного дешевле, чем столбцы, поэтому запросы будут проще, а хранилище данных более масштабируемым, а обслуживание более эффективным. Например, для новой метрики не нужен новый определенный столбец со всей метаинформацией, а просто новая строка. А с Oracle PIVOT вы можете легко повторно выполнить рендеринг широкого формата.
What could mean the following message? The system cannot find message text for message number 0x80040e4b in the message file for OraOLEDB.
Обходной путь
В некоторых случаях один из следующих методов решает проблему:
- Удалите символ комментариев.
- Замените символ комментариев /* */ на .
Как настроить строку подключения OraOLEDB
Мне нужна помощь в настройке подключения к Oracle DB. У меня есть приложение Excel VBA, использующее следующую рабочую строку подключения, настраивающую правильное подключение к существующей базе данных Oracle: Provider = .
ORA-01036: недопустимое имя / номер переменной с клиентом Oracle 18 и Oracle 19 Windows
После обновления Oracle 11/12 до 18/19 я получаю эту ошибку: ORA-01036: недопустимое имя / номер переменной. Ошибка возникла в таком запросе: SELECT * FROM (SELECT * FROM TABLE) MY_TABLE WHERE .
Соединения Oracle прерваны в SSIS после удаления 32-битной версии клиента Oracle
Причина
Эта проблема возникает из-за того, что в запросе на связанный сервер Oracle существуют специальные -- символы. Эти символы используются для обозначают символ комментария.
Процесс SQL Server, так как сторонний поставщик связанных серверов загружается внутри SQL Server процесса и неправильно изменяет не принадлежащая ему память кучи. Если функции кучи внутри процесса нестабилены, для защиты от повреждения данных процесс автоматически закрывается осмием. Если сторонний поставщик связанных серверов включен вместе с параметром Разрешить ипроцессы, SQL Server процесс сбоя, когда сторонний связанный сервер испытывает описанную проблему.
OraOLEDB ORA-01840: входное значение недостаточно длинное для формата даты
У меня есть следующий SQL в Oracle: SELECT CE.ENCNTR_ID AS CernerEncounterID, TO_DATE (S.ACTIVE_STATUS_DT_TM, 'YYYY-MM-DD HH24: MI: SS') AS .
Читайте также: