Вопросы с тегами [odp.net]

0

голосов
0

ответ
3

Просмотры

Есть обходной путь для получения мастер настройки VS2017 TableAdapter принять использование ||

Мы в настоящее время миграции нашей базы данных Oracle из Oracle9i в Oracle18c (18.3.0.0). У нас есть C # .net окна формы приложения, обращающиеся к БД Oracle. Я обновляю наше .net приложение, чтобы использовать новый ODP.NET Oracle, удалось драйвер, который устанавливается с помощью инструментов VS2017 Dev. У меня есть пользовательский адаптер таблицы, который использует оператор конкатенации Оракула || но когда я пытаюсь изменить запрос с помощью мастера настройки таблицы адаптера, он выдает ошибку, как говорит, что не может разбор «|». Любые идеи о том, как я могу получить эту работу? Я даже пытался использовать функцию Concat, но мастер не нравится, что либо. ВЫБРАТЬ T1.TEXT || '' || T2.TEXT SOME_JOINED_TEXT ОТ table1 T1, T2 TABLE2 WHERE T1.ID = T2.ID Когда я запускаю мое заявление SQL в Жаба для Oracle 13.0 оператор работает, как ожидалось, и имеет соединенные колонки.
A Dev
1

голосов
2

ответ
90

Просмотры

Сокращение PARSE_CALLS с помощью Oracle ODP.NET (или повторного использования курсоров)

Когда я бегу запросов от ODP.NET я вижу в V $ SQL, что для каждого вызова он выполняет PARSE_CALL. См: выберите s.FETCHES, s.PARSE_CALLS, s.sql_Text, s.sql_id от V $ SQL с где sql_text = 'выберите 1 из двойной / * test2 * /' Возвращает: Даже если я повторно использовать тот же OracleCommand и называется Приготовьте. Вот мой код .NET: с помощью (Var с = connection.CreateCommand ()) {c.CommandText = "выберите 1 из двойной / * test2 * /"; c.Prepare (); для (INT I = 0; г <9000; я ++) {использованием (вар г = c.ExecuteReader ()) {r.Read (); }}} Как можно уменьшить количество Parse_Calls? Есть ли способ для меня, чтобы получить Oracle держать на стороне сервера курсор для всех этих повторных казней, и избавиться от него, когда я распоряжаюсь команду? Я использую Oracle.ManagedDataAccess.dll версию 4.122.1.20170624
Noam
1

голосов
1

ответ
731

Просмотры

Oracle.DataAccess.client deployment not working

I'm deploying an application that uses an oracle provider with Oracle.DataAccess.dll in a machine that already has a specific version of ODAC 64-bit ODAC 11.2. But the application I want to deploy uses a more recent version of ODAC 64-bit ODAC 12.2c. And in the root of that project I have the provider dll and its dependencies : Oracle.DataAccess.dll OraOps12.dll oci.dll ociw32.dll Oracle.DataAccess.dll orannzsbb12.dll oraocci12.dll oraociei12.dll Once I deploy and run the application, I have the following error : Unable to load DLL 'OraOps12.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) I dont want to update the existing ODAC because it might be used by other applications. I've checked different links as the following one: Oracle.DataAccess.Client Dependencies or this one : Oracle.Dataaccess is in the GAC. Can I control the version I use? but it didn't work for me. Also i though about using Managed drivers, but based on this link, it doesn't support bulkcopy. Is there a solution for this issue ? Or is there something I'm doing wrong ? EDIT My App.config file looks like this :
cheikh ndiaye
1

голосов
2

ответ
1.3k

Просмотры

Могу ли я выполнить произвольный сценарий Oracle SQL через ODP.NET?

Есть ли способ запустить произвольный SQL скрипт через ODP.NET? Я хотел бы сделать что-то вроде этого: SomeOracleObject.RunFile ( «myfile.sql»); Другими словами, я хочу, чтобы устранить необходимость в sqlplus.exe.
Josh Kodroff
1

голосов
3

ответ
452

Просмотры

Любые новости из рамок Oracle Entity

Более полугода назад, Oracle выпустил заявление о направлении, объявив, что они будут поддерживать структуру .NET сущностей с ODP.NET и перспективной бета-версию в конце прошлого года. Я не слышал ничего с тех пор. Являются ли эти планы остаются в силе? И когда мы можем ожидать бета-версию или окончательный релиз?
Codo
1

голосов
1

ответ
146

Просмотры

как получить размер VARCHAR в типе оракул ассоциативного массива

У меня есть хранимая процедура, в которой я определил тип: тип AssocArrayVarchar2_t это таблица, если VARCHAR (10) индекса по BINARY_INTEGER; Есть ли способ, чтобы получить размер этого типа VARCHAR (в данном случае это 10) в коде C #? (Я использую ODP.NET и я хочу, чтобы дать его свойству OracleParameter.ArrayBindSize).
yihao
1

голосов
1

ответ
1.1k

Просмотры

Как передать значение пары имя Oracle из .NET

Мне нужно передать пары значений имени, содержащие имя столбца и столбцы таблицы значений в Oracle из C # .NET. Как я могу это сделать ?, я взглянуть на эту http://my-tech-talk.blogspot.com/2010/01/how-to-pass-arrays-from-net-c-to-oracle. HTML не уверен, могу ли я использовать это для двумерного массива.
inlokesh
1

голосов
1

ответ
3.5k

Просмотры

Не удается разрешить подключение к Oracle с Entity Framework инструмент

Я пытаюсь учиться и реализовывать Entity FW в моем проекте (с помощью Oracle 11g). Я пытаюсь подключиться к проекту с использованием источника ODP.NET данных и получить следующую ошибку: «ORA: 12154: TNS: не удалось разрешить идентификатор подключения указанного» Я посмотрел в stuckoverflow и увидеть, что сказать, чтобы увидеть, если PATH переменная настроена правильно и я вижу это: C: \ APP \ USER \ оракул \ Bin; C: \ приложение \ USER \ продукт \ 11.2.0 \ client_1 \ Bin; C: \ APP \ USER \ продукт \ 11.2.0 \ client_1; после того, как все это я проверить мой файл TNSNAMES.ORA и увидеть, что в моих 2 ДОМАШНИХ папках есть же TNSNAMES.ORA файл и Instance я пытаюсь подключиться тоже настроен правильно.
SigmaOmega
1

голосов
1

ответ
471

Просмотры

x64 mvc3 проект с доступом Oracle Data

Я использую Oracle Data Access (ODP.NET) в проекте mvc3. odp.net имеет как x64 и x86 отдельно, и я хочу использовать 64-разрядную версию. Я поставил «целевую платформу» на 64 и добавить ссылку на 64-разрядную версию ODP.NET, нет никаких проблем, чтобы опубликовать на сервере IIS, но я не могу запустить проект для разработки и тестирования, однако Бритва рассматривает ошибки отображения на C # заявления. Как я могу разработать проект в платформе x64?
Ehsan
1

голосов
1

ответ
346

Просмотры

Тестирование соединения на .Net через ODP без имени пользователя и пароля

Я работаю на настольное приложение на C # и БД Oracle. Я подключаюсь к БД с помощью строки подключения, состоящей из Пользовательского DataSet с помощью ОРПА. О применении до Логина экрана появляется я хочу, чтобы проверить, может ли клиент достигнуть DB машины и, если нет подключения приложения выдаст сообщение об ошибке (нет подключения к БД) и близко. Есть ли способ, чтобы проверить соединение. Лучший способ я думал, чтобы получить IP-адрес и порт из tnsnames.ora и пинг, что ф. Если это подходит, как я могу получить IP и порт из tnsnames.ora на C #?
gesus
1

голосов
1

ответ
939

Просмотры

Получение REFCURSOR и VarChar выходов из той же хранимой процедуры

Я новичок в Oracle, поэтому, пожалуйста, быть нежным ... Я запрашивая существующий Oracle DB с помощью C # и ODP11 в .NET 4. Все процедуры до этого момента было, ну, болезненный, чтобы выяснить, на первый, но в основном " просто работал»как только я понял, что я делаю ... это одна другая история ... у меня есть хранимая процедура, которая принимает 4 параметра: 2 входа и 2 выхода ... на 2 входа грандиозны. один из выходов является varchar2, а другой является REFCURSOR. Я использую OracleDataReader для выполнения запроса, как я есть с любой другой прок, который возвращает REFCURSOR, но в этом, reader.Read () постоянно возвращает ложь, и я не получаю никаких данных. Другой переменный Выход, тем не менее, содержат данные (строку). Я попытался с помощью reader.NextResult (), но возвращает ложь тоже, и мой reader.Read () по-прежнему возвращает ложь ... Я могу подтвердить, что работает процедурный с помощью жабы возвращает правильный набор результатов ... Есть идеи? Что я делаю неправильно? Благодарю.
TiernanO
1

голосов
2

ответ
376

Просмотры

VB.NET Несколько Выбирается сразу с помощью SQL Server CE

У меня есть список массива, содержащие идентификаторы для некоторых элементов. Я хотел бы выполнить множественный выбор сразу из базы данных SQL Server CE и используя мой список массива, который содержит какие элементы идентификатор, чтобы выбрать, что-то подобное, делая, например, многократное обновление в оракула (ODP.NET), как описано здесь: Oracle сыпучие обновления с использованием ODP.NET, где вы можете передать массив в качестве параметра. Я хотел бы сделать то же самое, но для выбора нескольких вместо этого в случае SQL Server CE. Является ли это возможным? ПРОЕКТ о том, что я хотел бы сделать: SqlCeCommand = SqlCeConnection.CreateCommand () SqlCeCommand.CommandText = "SELECT * FROM MyTable WHERE Id = Идентификаторы" SqlCeCommand.CommandType = CommandType.Text SqlCeCommand.Parameters.Add ( ": иды", DBTYPE .Int32, ArrayListOfIds, ParameterDirection.Input) Использование читателя Как System.Data.SqlServerCe.
user1624552
1

голосов
1

ответ
2.6k

Просмотры

OCIEnvCreate неудачу с кодом возврата 1, но текст сообщения об ошибке не был доступен

У меня возникли некоторые проблемы с этим исключением. Я уже пробовал это варианты, которые я видел здесь. Причины: Вы используете неподдерживаемый версию клиента Oracle (старше 11.2) на ОС Windows 7. библиотеки DLL из предыдущей установки клиента Oracle были оставлены в системе, в результате чего конфликт. Решения: Установите поддерживаемую версию клиента Oracle. Выполните поиск «oci.dll» на локальной машине. Если вы обнаружите какие-либо экземпляры этого файла в любом другом месте, кроме вашего ORACLE_HOME переименовать или удалить его. Если сомневаетесь, удалите клиент Oracle, а затем выполнить поиск снова. Все, что пережиток является виновником. ** И я дал разрешение на все пути Oracle. Я ищу какое-то другое решение или помощь.
Vanessa Pinto
1

голосов
2

ответ
926

Просмотры

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

Я использую ASP.NET для веб и Oracle для базы данных. Для обмена данными между ASP.NET и Oracle я использую ODP.NET. Я уточнял строку подключения в файле web.config, как, например: При попытке установить соединение, используя эту строку соединения я получаю «Integrated Security является недопустимым атрибут строки соединения» ошибка. Как вы можете видеть, что я не указал этот атрибут в файле конфигурации. Так что в какой-то момент этот атрибут, вероятно, будет добавлен автоматически. Я использовал, чтобы строка соединения жестко и у меня не было никаких проблем вообще. Есть ли у вас какие-либо идеи, как решить эту проблему?
Mikayil Abdullayev
1

голосов
2

ответ
332

Просмотры

all_ind_expressions вид Oracle

Я пытаюсь выполнить ниже запрос через OracleDataReader в .NET, но когда я пытаюсь прочитать значение столбца column_expressions, я всегда получаю пустую строку. ВЫБОР ic.column_name, ie.column_expression ИЗ all_ind_columns Ic LEFT JOIN all_ind_expressions т.е. ON ie.index_owner = ic.index_owner И ie.index_name = ic.index_name И ie.column_position = ic.column_position WHERE ic.index_owner = 'owner_name' и Ic. index_name = «имя_индекса» Я понял, что тип данных идентификатора столбца давно, но я не уверен, что это причина. Есть ли способ, я могу прочитать текущее значение столбца? Когда я выполнить тот же запрос через разработчик Oracle SQL, я могу увидеть значение.
Rahul Vijay Dawda
1

голосов
1

ответ
742

Просмотры

System.Runtime.InteropServices.ExternalException on calling Oracle.DataAccess.Client.OracleConnection.Open()

У меня следующий код для подключения к базе данных с помощью ODP.net: информация // соединение удаляется для защиты конфиденциальной информации строки хост = «******»; Строка ИСС = "*****"; Строка connectDescriptor = String.Format ( "(ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (HOST = {0}) (PORT = 1521)) (CONNECT_DATA = (SID = {1})))", хост, SID) ; строка имя пользователя = "*****"; строка пароль = "*****"; Строка ConnectionString = string.Format ( "Источник данных = {0}; ID пользователя = {1}; Password = {2};", connectDescriptor, имя пользователя, пароль); OracleConnection сопп = NULL; попробуйте {сопп = новый OracleConnection (ConnectionString); conn.Open (); } Задвижка (OracleException oraex) {MessageBox.Show (oraex.ErrorCode + ":" + oraex.Message); } Наконец {conn.Close (); } Вызов Открыть () выдает ошибку, и я не могу понять, много об этом. oraex.ErrorCode является -2147467259 и oraex.Message является "". Попытка получить доступ к большинству членов заброшенных результатов исключения в NullReferenceException. Кроме того, я могу видеть, что база исключением является System.Runtime.InteropServices.ExternalException. Что здесь происходит? Из-за исключением InteropServices я предполагаю, что это что-то делать с COM. Дополнительная информация Я только что установил ODAC 12с. Информация о подключении проверяется. Я могу подключиться к той же базе данных с помощью приложения SilverLight, который использует устаревший System.Data.OracleClient. Они в порядке. InteropServices.ExternalException. Что здесь происходит? Из-за исключением InteropServices я предполагаю, что это что-то делать с COM. Дополнительная информация Я только что установил ODAC 12с. Информация о подключении проверяется. Я могу подключиться к той же базе данных с помощью приложения SilverLight, который использует устаревший System.Data.OracleClient. Они в порядке. InteropServices.ExternalException. Что здесь происходит? Из-за исключением InteropServices я предполагаю, что это что-то делать с COM. Дополнительная информация Я только что установил ODAC 12с. Информация о подключении проверяется. Я могу подключиться к той же базе данных с помощью приложения SilverLight, который использует устаревший System.Data.OracleClient. Они в порядке.
sampathsris
1

голосов
1

ответ
1.5k

Просмотры

Как настроить мой веб-приложение для работы с Oracle 12c Release 3 (12.1.0.1.0)?

Спасибо за будущее я написал приложение, которое использует Entity Framework 6, которая, предположительно, поддерживается Oracle Data Provider 12c R3. Я установил эту версию ODP, но у меня возникают проблемы, что делает его работу. Я попытался, следуя инструкции конфигурации, но я все еще получаю эту ошибку, когда мой код пытается получить доступ к любым лицам Oracle: 0152: Нет Entity Framework поставщик найден для поставщика ADO.NET с инвариантным названием «Oracle.DataAccess.Client». Примечание: Я знаю, что есть много других вопросов StackOverflow по этой теме, но большинство из них старше и не принимают во внимание новую версию ODP, которая не поддерживает EF 6. Любая помощь приветствуется.
Matt Cashatt
1

голосов
1

ответ
931

Просмотры

ODP.NET и OLEDB с несколькими Oracle Homes

Для устаревших причин, наше приложение .NET 4.0 в настоящее время использует как OLEDB Oracle и поставщик ODP.NET для подключения к экземпляру Oracle. Мы стандартизированы на Oracle клиента 11.2.0.3.0. Оба поставщика данных работают как ожидается, если установлен один клиент Oracle. Проблемы были зарегистрированы на компьютерах, которые уже были установлены клиент 11.2.0.1.0. Второй клиент, 11.2.0.3.0, был установлен для нашего приложения. Установка выглядит следующим образом: C: \ оракул \ продукт \ 11.2.0 \ client_1
Andrew M
1

голосов
1

ответ
777

Просмотры

сборка «Oracle.DataAccess» не загружается

Я уже установил ODAC в моем PC.I установлен Visual Studio 2012.ORACLE.Data.Access DLL доступна в моем refrence.but я получаю следующее сообщение об ошибке Не удалось загрузить файл или сборку «Oracle.DataAccess» или один из его зависимостей. Была сделана попытка загрузить программу, имеющую неверный формат. Как я могу избавиться от этого problem.I бегаю это приложение локально
Waqas Ali
1

голосов
2

ответ
871

Просмотры

OracleCommand StoredProcedure возвращение «нуль» вместо DBNull

У меня есть хранимая процедура, которая в определенных ситуациях возвращает нуль. Когда я ToString () нуль возвращает «нуль» в виде строки вместо пустой строки, однако, если я не использую метод .ToString () это приводит к ошибке. Public Function ReturnValue (ByVal lngId As Long) As String Dim adoCmd As New OracleCommand Dim strReturn As String = "" С adoCmd .CommandText = "BUS_TEST.ReturnValue" .CommandType = CommandType.StoredProcedure .Parameters.Add ( "возврат", OracleDbType. Char, 256, strReturn, ParameterDirection.ReturnValue) .Parameters.Add ( "lngId", OracleDbType.Double, lngId, ParameterDirection.Input) End With objSalUtil.ExecFunc (ocEWBConnection, adoCmd, "ReturnValue") Возвращение adoCmd.Parameters (0) .Значение. Public Function ReturnValue (ByVal lngId As Long) As String Dim adoCmd As New OracleCommand Dim strReturn As String = "" С adoCmd .CommandText = "BUS_TEST.ReturnValue" .CommandType = CommandType.StoredProcedure .Parameters.Add ( "возврат", OracleDbType. Char, 256, strReturn, ParameterDirection.ReturnValue) .Parameters.Add ( "lngId", OracleDbType.Double, lngId, ParameterDirection.Input) End With objSalUtil.ExecFunc (ocEWBConnection, adoCmd, "ReturnValue") Return strReturn End Function И, наконец, Приведенный выше код возвращает правильную пустую строку, однако он делает это во всех случаях, независимо от того, должно быть возвращено что-то или нет. Я использовал хранимые процедуры, как это много в прошлом, однако они» ве всегда возвращается значение во всех случаях. Я не совсем уверен, как справиться с этой нуль. Я предпочел бы не проверить строку, содержащую «нуль» первой, так как это немного Hacky, и я хотел бы знать, на будущее, что я делаю неправильно.
Loogawa
1

голосов
1

ответ
2.3k

Просмотры

Исключение вызова «.ctor» при подключении к базе данных Oracle (ODP.net)

Это мой код для подключения к базе данных Oracle: [Reflection.Assembly] :: LoadFile ( "E: \ оракул \ продукт \ 11.2.0 \ ODP.NET \ Bin \ 2.х \ Oracle.DataAccess.dll") $ КОНСТРУКТОР = "Идентификатор пользователя = система; Password = пароль; источник данных = SERVER \ INST" $ сопп = New-Object Oracle.DataAccess.Client.OracleConnection ($ CONSTR) Первая линия работает нормально. Я могу видеть, сборка загружается и GAC верно. Вплоть до второй линии нет никакой ошибки. Но когда он достигает 3-й линии, я получаю эту ошибку: New-Object: Exception призывающей «.ctor» с „1“ аргументом (ы): «Тип инициализатор для„Oracle.DataAccess.Client.Oracle Connection“бросил исключение. $ сопп = New-Object
Ironic
1

голосов
1

ответ
1k

Просмотры

Oracle AQ Тема очереди с ODP.NET из очереди

Я пытаюсь в первый раз из очереди из очереди на моей производственной среде компании по ODP.NET и C #. Я использовал официальный пример ODP.NET развивать мой клиент получил из папки примеров установки. Очередь является Oracle AQ тема (мульти потребителя) рассмотрена многими других услугами компании, написанных с J2EE. Я написал классы отображения UDT следующих руководящих принципов разработки ODP (http://docs.oracle.com/cd/E11882_01/win.112/e23174/featUDTs.htm#ODPNT0024). Вопрос: мой клиент подключается к очереди, на это никогда не получает никакого сообщения (другие связанную ява клиенты получают их). Вот мой код (без классов UDT, для держать короткие мой пост): строка CONSTR = «идентификатор пользователя =; пароль =; источник данных =»; OracleConnection conListen = новый OracleConnection (CONSTR); OracleAQQueue queueListen = новый OracleAQQueue ( "", conListen); попробуйте {conListen.Open (); queueListen.MessageType = OracleAQMessageType.Udt; queueListen.DequeueOptions.ConsumerName = "Test_Subscriber_ID"; queueListen.UdtTypeName = "SYS.AQ $ _JMS_TEXT_MESSAGE"; queueListen.DequeueOptions.Visibility = OracleAQVisibilityMode.OnCommit; queueListen.DequeueOptions.Wait = 60; OracleTransaction TXN = conListen.BeginTransaction (); OracleAQMessage deqMsg = queueListen.Dequeue (); txn.Commit (); } Задвижка (Исключение е) {Console.WriteLine ( "Ошибка: {0}", e.Message); } Наконец {queueListen.Dispose (); conListen.Close (); conListen.Dispose (); } Еще одна деталь: после подключения вид «all_queue_subscribers» не containt мой абонент «Test_Subscriber_ID». Спасибо вам всем!
Antonio Petricca
1

голосов
1

ответ
3.4k

Просмотры

Почему Oracle не отображается в раскрывающемся списке опцию в мастере модели EDM, но делает в Server Explorer?

Oracle не появляется в качестве источника данных выпадающего списка опцию. Это было здесь, спросил, но ответ здесь не решает мою проблему (и для других, а также, в соответствии с комментариями там). Что интересно, что в попытке добавить подключение к данным через окно VS Server Explorer, Oracle действительно появляется в качестве опции источника данных. Попытка установить поставщик данных (через install_odpm.bat) для другой платформы (x86, x64) не имело никакого эффекта. Также попробовал устанавливать как Oracle.ManagedDataAccess.EntityFramework и Oracle.ManagedDataAccess NuGet пакетов. Что мне не хватает?
Veverke
1

голосов
1

ответ
312

Просмотры

Команды Multiple базы данных в одном OracleConnection

м положить список объектов в базе данных), но тот же самый код, где будет самое лучшее место, чтобы сделать это? Должен ли я поставить цикл внутри «Использование свя ...», или за ее пределами? например: Dim элементы как List (Of ItemsToPutIntoDatabase) = ... Использование сферы, как New TransactionScope () для каждого элемента с помощью соед ... или Dim элементы как List (Of ItemsToPutIntoDatabase) = ... Использование сферы, как New TransactionScope (), используя подкло ... для каждого пункта Когда я помещал его снаружи (второй), я получаю сообщение об ошибке: метод поощрять возвратил недопустимое значение для распределенной транзакции. --- Edit --- OK, так что я нашел с помощью TransactionScope: System.Transactions.TransactionAbortedException: Сделка отменяется, который отвечает на часть об ошибке (несколько соединений внутри одной TransactionScope вызвать проблемы) - так что я должен делать каждую команду в качестве отдельной сделки? Или подключить только один раз и сделать все внутри этого. Может кто-то помочь мне понять, как сделать несколько записей, используя один и тот же объект OracleConnection и SQL, но различные параметры?
simonalexander2005
1

голосов
1

ответ
176

Просмотры

Oracle.ManagedDataAccess NuGet пакет замки web.config после восстановления

Добавление NuGet пакета Oracle.ManagedDataAccess в ASP.NET MVC проекта замки web.config после восстановления. Шаги для воспроизведения: Windows 10 64 бит Microsoft Visual Studio Professional 2015 Версия 14.0.24720.00 Update 1 Создайте новый проект MVC (ASP.NET MVC 4.5.2 шаблоны, оставить «Добавить Insights приложения к проекту» установлен, снимите флажок Хостинг в облаке и аутентификации изменения для проверки подлинности Windows) Внутри проект открытой web.config и оставить его открытым Перейти к разделу «Управление NuGet пакетов ...» Установить Oracle.ManagedDataAccess NuGet пакет 12.1.2400 Rebuild вашего решения сейчас пытается внести изменения в web.config и сохранить его >>> вызывает Сохранить как диалог, потому что ваш web.config теперь заблокирован каким-то процесс не уверен, нужны ли все эти шаги, чтобы воспроизвести эту блокировку web.config, но это, как я могу воспроизвести его. Ни один другой пакет NuGet, что я использую не воспроизводит это. Единственный способ, которым я могу обойти это путем удаления пакета. Есть еще один способ, чтобы сохранить этот пакет, а не блокировать web.config? EDIT Чтобы разблокировать web.config не только нужно удалить пакет, но и удалить все ссылки на этот пакет в web.config. Если я не удалить ссылки в web.config она по-прежнему блокируется, несмотря на удаление пакета из менеджера пакетов графического интерфейса.
joym8
1

голосов
1

ответ
735

Просмотры

Настройка шаблона T4 - ADO.Net Entity модели данных для EF коды первой из существующей базы данных

Я пытаюсь найти и настроить шаблон T4 моделей данных ADO.Net Entity для EF коды первым из существующей базы данных. То, что я хочу, чтобы настроить или изменить это преобразование типа данных. Я использую поставщик ODP.NET Oracle, который поддерживает EF. Я пытаюсь переназначить Oracle номер типа данных Int64 вместо Decimal благодаря моему требованию. Так как я новичок редактирования T4 файлов для настройки я нахожу трудности в поиске файла шаблона, который делает код первого отображения. Любая помощь, указывая мне на правильное направление ценится.
Hasteq
1

голосов
1

ответ
141

Просмотры

vb.net odp.net/ how to use ExecuteNonQuery() in insert?

У меня возникла ошибки, указанные для следующего кода: Public Function Button1_Click (ByVal отправителя Как System.Object, ByVal е Как System.EventArgs) Ручка Button1.Click Dim oradb As String = «Источник данных = fbdata; User Id = fbtrain; Password = пароль;» Использование сопп As New OracleConnection (oradb) Использование УМК в качестве новой OracleCommand conn.CreateCommand () cmd.CommandText = "INSERT INTO BID" _ + «(BID_ID, BID_NAME, BID_NAMEID, BID_STATUS, BID_FROM, BID_TO, BID_OWNER, new_user, NEW_ZEIT, CHG_USER , CHG_ZEIT, АКТИВ) ЗНАЧЕНИЯ "_ +" (: 1,: 2,: 2, '00', TO_DATE ('01 -JUL-16' , 'DD-MON-RR'), TO_DATE ('30 -JUN- 2099' , 'DD-MON-RR'), '1', '1', SYSDATE, '1', SYSDATE, ' «)»
Samaan Shameem
1

голосов
1

ответ
1.1k

Просмотры

ODP.net - ORA-12537 End of File errors when calling stored procedure

I'm perplexed by the above, which keeps cropping up intermittently whenever I execute a stored proc within a package on our new Oracle installation. The sproc is called from WCF, which returns the following exception : ORA-12537: Network Session: End of file OracleInternal.Network.NetworkException ORA-12537: Network Session: End of file Oracle.ManagedDataAccess.Client.OracleException There doesn't seem to be a pattern to it either - sometimes it works fine, sometimes it doesn't. Here's stuff I've tried : Checked the GAC to ensure multiple versions of ODP aren't present. The managed data access component has been imported from nuget - version is 12.1.2400. Added various attributes to the connection string to sort - namely persist security info=True;Self Tuning=True;Min Pool Size=3;Max Pool Size=25;Incr Pool Size=3;Decr Pool Size=1;Connection Timeout=20;Pooling=false;Connection Lifetime=59; - tried various configurations but no luck, for example setting Pooling to false/true etc. Ensured disposal of objects in the generic code. Here's the test code currently used : using System.Data; using System.Data.Common; using Oracle.ManagedDataAccess.Client; /// /// Extensions for xxxxx. /// /// public partial class xxxxEntities { public virtual DataSet ExecuteStoredProcedureAsDataSet(string storedProcName, int commandTimeoutSeconds, object[] parameters) { var sqlCommand = this.Database.Connection.CreateCommand(); var resultSet = new DataSet(); sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.CommandTimeout = commandTimeoutSeconds; sqlCommand.CommandText = storedProcName; sqlCommand.Parameters.AddRange(parameters); var referenceCursor = new OracleParameter("P_DATAOUT", OracleDbType.RefCursor) { Direction = ParameterDirection.Output }; sqlCommand.Parameters.Add(referenceCursor); using (var adapter = CreateDataAdapter(this.Database.Connection)) { adapter.SelectCommand = sqlCommand; adapter.Fill(resultSet); } referenceCursor.Dispose(); sqlCommand.Dispose(); return resultSet; } /// /// Creates the data adapter. /// /// The connection. /// DbDataAdapter. DbDataAdapter CreateDataAdapter(DbConnection connection) { return DbProviderFactories.GetFactory(connection).CreateDataAdapter(); } } Cutting down the query in the stored proc to 'fixed' values - to make sure it was nothing in the sproc causing the issue. I did find some interesting problems described below. So, I'm at a loss. I turned on ODP tracing - and did notice it seems to be having issues when dealing with the pool. The first time, I got this : 2016-07-26 11:43:55.268765 TID:6 (PRI) (SVC) (ENT) OracleConnectionImpl.EvaluateDbMajorMinorPatchsetVersion() 2016-07-26 11:43:55.268765 TID:6 (PRI) (SVC) (EXT) OracleConnectionImpl.EvaluateDbMajorMinorPatchsetVersion() 2016-07-26 11:43:55.268765 TID:6 (PRI) (SVC) (EXT) OracleConnectionImpl.Connect() (oper=open) (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;F;WMSQA;N) (pmid=29382239) 2016-07-26 11:43:55.268765 TID:6 (PRI) (ENT) (CP) PoolManager`3.PutNewPR() (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;F;WMSQA;N) (pmid=29382239) 2016-07-26 11:43:55.268765 TID:6 (PRI) (ENT) (CP) OraclePool.PutNewPR() 2016-07-26 11:43:55.268765 TID:6 (PRI) (ENT) (CP) Pool`3.PutNewPR() 2016-07-26 11:43:55.268765 TID:6 (PRI) (CP) Pool`3.PutNewPR() (oper=cp:put:reg1) (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;T;WMSQA;N) (pmid=29382239) 2016-07-26 11:43:55.268765 TID:6 (PRI) (EXT) (CP) Pool`3.PutNewPR() 2016-07-26 11:43:55.268765 TID:6 (PRI) (EXT) (CP) OraclePool.PutNewPR() 2016-07-26 11:43:55.268765 TID:6 (PRI) (EXT) (CP) PoolManager`3.PutNewPR() (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;T;WMSQA;N) (pmid=29382239) 2016-07-26 11:43:55.269765 TID:6 (PRI) (EXT) (CP) PoolManager`3.CreateNewPR() (aff=n/a) (inst=WMSQA) (affmatch=n/a) (sessid=2540:42190) (F;F;T;WMSQA;N) (pmid=29382239) 2016-07-26 11:43:55.269765 TID:6 (PRI) (CP) PoolManager`3.PopulatePool() PopulatePoolThreadFunc(created=2; max=25; total=3) 2016-07-26 11:43:55.269765 TID:6 (PRI) (EXT) (CP) PoolManager`3.PopulatePool() 2016-07-26 11:43:55.880826 TID:15 (PRI) (ENT) TTCExecuteSql.ReceiveExecuteResponse() 2016-07-26 11:43:55.881826 TID:15 (PRI) (ENT) OracleException.ctor() 2016-07-26 11:43:55.885826 TID:15 (PRI) (ENT) OracleError.ctor() 2016-07-26 11:43:55.886826 TID:15 (PRI) (EXT) OracleError.ctor() 2016-07-26 11:43:55.886826 TID:15 (PRI) (EXT) OracleException.ctor() 2016-07-26 11:43:55.890827 TID:15 (PRI) (TTC) (ERR) TTCExecuteSql.ReceiveExecuteResponse() (txnid=n/a) OracleInternal.Network.NetworkException (0x000030F9): ORA-12537: Network Session: End of file at OracleInternal.Network.ReaderStream.Read(OraBuf OB) at OracleInternal.TTC.OraBufReader.GetDataFromNetwork() at OracleInternal.TTC.OraBufReader.Read(Boolean bIgnoreData) at OracleInternal.TTC.MarshallingEngine.UnmarshalUB1(Boolean bIgnoreData) at OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired) Ramping up the tracing to 127, I just got this : 2016-07-26 14:22:11.459348 TID:1 (PRI) (SVC) (ENT) OracleDataReaderImpl.FetchMoreRows() 2016-07-26 14:22:11.459348 TID:1 (PRI) (SVC) (ENT) OracleConnectionImpl.AddAllPiggyBackRequests() 2016-07-26 14:22:11.459348 TID:1 (PRI) (TTC) (ENT) TTCClose.Write() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCFunction.WriteFunctionHeader() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCMessage.WriteTTCCode() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCMessage.WriteTTCCode() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCFunction.WriteFunctionHeader() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCClose.Write() 2016-07-26 14:22:11.460348 TID:1 (PRI) (SVC) (EXT) OracleConnectionImpl.AddAllPiggyBackRequests() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCExecuteSql.SendExecuteRequest() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCExecuteSql.GetExecuteOptions() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCExecuteSql.GetExecuteOptions() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCExecuteSql.WriteOall8Message() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCFunction.WriteFunctionHeader() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCMessage.WriteTTCCode() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCMessage.WriteTTCCode() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCFunction.WriteFunctionHeader() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCExecuteSql.WritePisdef() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (EXT) TTCExecuteSql.WritePisdef() 2016-07-26 14:22:11.460348 TID:1 (PRI) (TTC) (ENT) TTCExecuteSql.WritePisdefData() 2016-07-26 14:22:11.461348 TID:1 (PRI) (TTC) (EXT) TTCExecuteSql.WritePisdefData() 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 4C 00 00 06 00 00 00 |.L......| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 00 |.. | 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 11 69 00 01 01 01 01 02 |.i......| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 03 5E 00 02 80 40 01 03 |.^[email protected]| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 00 01 01 0D 00 00 00 |........| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 01 01 00 00 00 00 00 |........| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 00 00 00 00 00 01 00 |........| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 00 00 00 00 00 00 00 |........| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 02 01 36 00 00 00 03 A7 |..6.....| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) EB C6 00 01 01 00 00 00 |........| 2016-07-26 14:22:11.461348 TID:1 (NET) (SND) 00 00 |.. | 2016-07-26 14:22:11.461348 TID:1 (PRI) (TTC) (EXT) TTCExecuteSql.WriteOall8Message() 2016-07-26 14:22:11.461348 TID:1 (PRI) (TTC) (EXT) TTCExecuteSql.SendExecuteRequest() 2016-07-26 14:22:11.461348 TID:1 (PRI) (TTC) (ENT) TTCExecuteSql.ReceiveExecuteResponse() 2016-07-26 14:22:11.461348 TID:1 (PRI) (BUF) (COBP.GET) (poolid:2) (key:8192) (bufid:8) (count:5) (OraBufReader.GetDataFromNetwork) 2016-07-26 14:22:12.161348 TID:1 (PRI) (ENT) TTCExecuteSql.ReceiveExecuteResponse() 2016-07-26 14:22:12.162348 TID:1 (PRI) (ENT) OracleException.ctor() 2016-07-26 14:22:12.162348 TID:1 (PRI) (ENT) OracleError.ctor() 2016-07-26 14:22:12.162348 TID:1 (PRI) (EXT) OracleError.ctor() 2016-07-26 14:22:12.162348 TID:1 (PRI) (EXT) OracleException.ctor() 2016-07-26 14:22:12.163348 TID:1 (PRI) (TTC) (ERR) TTCExecuteSql.ReceiveExecuteResponse() (txnid=n/a) OracleInternal.Network.NetworkException (0x000030F9): ORA-12537: Network Session: End of file at OracleInternal.Network.ReaderStream.Read(OraBuf OB) at OracleInternal.TTC.OraBufReader.GetDataFromNetwork() at OracleInternal.TTC.OraBufReader.Read(Boolean bIgnoreData) at OracleInternal.TTC.MarshallingEngine.UnmarshalUB1(Boolean bIgnoreData) at OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired) 2016-07-26 14:22:12.163348 TID:1 (PRI) (EXT) TTCExecuteSql.ReceiveExecuteResponse() 2016-07-26 14:22:12.163348 TID:1 (PRI) (TTC) (EXT) TTCExecuteSql.ReceiveExecuteResponse() 2016-07-26 14:22:12.163348 TID:1 (PRI) (ENT) OracleDataReaderImpl.FetchMoreRows() 2016-07-26 14:22:12.163348 TID:1 (PRI) (SVC) (ERR) OracleDataReaderImpl.FetchMoreRows() (txnid=n/a) Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12537: Network Session: End of file ---> OracleInternal.Network.NetworkException (0x000030F9): ORA-12537: Network Session: End of file I tweaked the query in the sproc by commenting out the select statements and where clauses, and gradually introduced them back in to see if it's the query that's the problem (running it in Oracle Developer works fine, though). I've narrowed it down to this statement - if I reintroduce it, I get the End of file exceptions again : WHERE -- Only handle records that contain a numeric value in the ref field. ISNUMERIC(PTT.REF_FIELD_2) = 1 This is what the ISNUMERIC function looks like in the package ; FUNCTION ISNUMERIC (p_string IN VARCHAR2) RETURN INT IS v_new_num NUMBER; BEGIN IF p_string IS NULL THEN RETURN 0; END IF; v_new_num := TO_NUMBER(p_string); RETURN 1; EXCEPTION WHEN VALUE_ERROR THEN RETURN 0; END ISNUMERIC; At first I thought it might be the number of exceptions caught was preventing further execution due to the number of exceptions. However I simplified the function to just return '1' and it still didn't work every time. The results of the query are passed back via a ref cursor e.g. PROCEDURE DEVSP_API_GETxxxx( P_STARTDATE IN DATE , P_ENDDATE IN DATE , P_xxx IN P_xxx_TYPE , , P_DATAOUT OUT sys_refcursor ) AS BEGIN OPEN P_DATAOUT FOR SELECT 'asdsa' as "x", 'sadasdsad' as "z", 0 as "Qty", Finally, I removed all Function calls from the select statements and the where clauses - and that instantly stops the error from occurring - I replaced them with the same logic the function would run - just inline within the SELECT and WHERE statements. So what's going on? Is there a limitation in ODP.net when running sprocs within a package that contain calls to functions? Seems a bit odd. The workaround is to just not use functions, but I don't want to do that as some select statements have conditional expressions in them which repeat the same logic in Union-based queries. Any help or pointers much appreciated! Ps. for transparency, I posted this on the Oracle forum last week but have had no responses. Update : 03-Aug-2016 Finally managed to get access to the server to try a bit of tracing. Here's what came up in the trace log when the process ends prematurely : *** 2016-08-03 10:14:39.111 *** SESSION ID:(2526.53330) 2016-08-03 10:14:39.111 *** CLIENT ID:() 2016-08-03 10:14:39.111 *** SERVICE NAME:(XXXXX) 2016-08-03 10:14:39.111 *** MODULE NAME:(iisexpress.exe) 2016-08-03 10:14:39.111 *** CLIENT DRIVER:(ODPM.NET) 2016-08-03 10:14:39.111 *** ACTION NAME:() 2016-08-03 10:14:39.111 Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x0] [PC:0x3CEBE1D, pmucfst()+13] [flags: 0x0, count: 1] Incident 109041 created, dump file /u01/app/oracle/diag/rdbms/xxxx/XXXX/incident/incdir_109041/XXXXX_ora_13149_i109041.trc ORA-07445: exception encountered: core dump [pmucfst()+13] [SIGSEGV] [ADDR:0x0] [PC:0x3CEBE1D] [Address not mapped to object] [] ssexhd: crashing the process... Shadow_Core_Dump = PARTIAL I can also see a core dump in the same folder. I've tried grepping the bucket trace files in there to see if there's anything obvious - but to be honest it's difficult to search for something when you don't know what you're looking for! I can see a shedload of core dumps from previous attempts to run the sprocs whenever it used a function - so it's at least reasonably consistent.
PoorbandTony
1

голосов
2

ответ
771

Просмотры

Не удается подключиться к базе данных Oracle с Entity Framework в проекте ASP.NET MVC

Контекст: Я создаю веб-приложение (в ASP.NET MVC 4), который будет предлагать доступ к уже существующей базе данных Oracle. Мне нужно, чтобы иметь возможность считывать данные из этой БД, не вставок или обновлений и т.д. Я работаю в Visual Studio Express 2015 для веба-только. Я искал много для ответов на мои проблемы, но безрезультатно. Моя цель состоит в том, чтобы создавать модели с Entity Framework базы данных первой. Я добавил Entity Framework, Oracle.ManagedDataAccess и Oracle.ManagedDataAccess.EntityFramework моему проекту с NuGet. Однако, когда я пытаюсь добавить «ADO.NET Entity модели данных» для моих моделей, выбрать ли я «EF Designer из базы данных» или «Code First из базы данных», я получаю следующее: Что мне не хватает? Я нашел ресурсы, говоря мне нужно установить Oracle Developer Tools для Visual Studio. Тем не мение, она не поддерживается в Visual Studio Express, и я не могу изменить мой IDE. Я не установлен клиент Oracle на этом компьютере Dev, но я SQLDeveloper, и не имеют проблем с доступом к базе данных с ним. Нужно ли мне установить клиент Oracle? Не являются ли длл установлены Повсеместно достаточно NuGet? Я спрашиваю, потому что я стажер, и установка нового куска программного обеспечения требует проверок, что занимает довольно много времени.
LetJayBe
1

голосов
1

ответ
303

Просмотры

.NET Oracle УДТ Параметр связывания (схема определена вложенные таблицы)

В C #, я пытаюсь вызвать хранимую процедуру, которая принимает в качестве входных данных экземпляра определенного типа. Схема определяется тип следующим образом: CREATE TYPE TEST.TBL_IDS IS ТАБЛИЦЫ VARCHAR2 (64) определение хранимой процедуры: ПРОЦЕДУРА TEST_PACKAGE.TEST_PROC (inIDs В TEST.TBL_IDS); Мой код в C # выглядит следующим образом: Класс для отображения типа данных Oracle + необходимых фабричных TBL_IDS общественного класса: INullable, IOracleCustomType {[OracleArrayMapping) (] публичной строка [] идентификаторы; частная BOOL objectIsNull; #region INullable Члены общественного BOOL IsNull {получить {вернуться objectIsNull; }} Общественности статической TBL_IDS Null {получить {TBL_IDS OBJ = новые TBL_IDS (); obj.objectIsNull = TRUE; вернуться OBJ; }} // #endregion должны реализовать их для IOracleCustomType интерфейса #region IOracleCustomType Члены общественной ничтожной FromCustomObject (OracleConnection мошенника, IntPtr pUdt) {OracleUdt.SetValue (кон, pUdt, 0, идентификаторы); } // общественного недействительными ToCustomObject (OracleConnection кон, IntPtr pUdt) {идентификаторы = (строка []) OracleUdt.GetValue (кон, pUdt, 0); }} #Endregion [OracleCustomTypeMapping ( "TEST.TBL_IDS")] класс IDsFactory общественности: IOracleCustomTypeFactory, IOracleArrayTypeFactory {#region IOracleCustomTypeFactory Члены общественного IOracleCustomType CreateObject () {возвращают новые TBL_IDS (); } #Endregion #region IOracleArrayTypeFactory Члены общественного массива CreateArray (интермедиат numElems) {возвращают новые TBL_IDS [numElems]; } Общественный массив CreateStatusArray (INT numElems) {возвращение нуль; }} #Endregion Фактическое связывание параметра: String [] = {Идентификаторы "Элемент1", "Элемент2", "Item3", "item4"}; TBL_IDS tblIDs = новые TBL_I (); Параметр OracleParameter = новый OracleParameter (); parameter.ParameterName = "inIDs"; parameter.OracleDbType = OracleDbType.Array; parameter.Direction = ParameterDirection.Input; parameter.UdtTypeName = "TEST.TBL_IDS"; parameter.Value = tblIDs; Код компилируется и работает успешно, но на самом деле не отправляет массив хранимой процедуры. Я'
Mark He
1

голосов
1

ответ
171

Просмотры

ODP.NET работает в командной оболочке, но не в качестве запланированной задачи (Windows Server 2012 R2)

Попытка выполнить запланированное задание, которое запускает скрипт PowerShell с помощью узла Oracle.DataAccess.dll бросает следующие ошибки New-Object: Exception призывающее «.ctor» с „0“ аргументом (ы): «Тип инициализатором для«Oracle. DataAccess.Client.OracleConnection»бросил исключение«. Выполнение же действия и аргументы в качестве запланированной задачи в окне PowerShell, как тот же пользователь работает правильно. Я пробовал загрузку DLL с помощью [System.Reflection.Assembly] :: LoadFile, Add-Type -AssemblyName и Add-Type -Path Какие различия существуют между запланированной задачи и окна PowerShell, которые могли бы привести к этому?
James Whitehead
1

голосов
2

ответ
0

Просмотры

Oracle: Вызов несколько процедур в пакете

Мне нужно вызвать целый ряд различных процедур в рамках пакета Oracle последовательно в рамках транзакции. На самом деле, мне нужно, чтобы вызвать их около 5000 раз. Мне было интересно, какой синтаксис я мог бы использовать для пакетного эти вызовы в Oracle, так что мне нужно только одно путешествие туда и обратно. Я попытался PACKAGE.PROCA: 1,: 2; PACKAGE.PROCB: 3,: 4,: 5; но я вернусь ORA00900: недопустимое заявление SQL. Любые указатели? Я знаю о прохождении массивов параметров процедур, но это не поможет в данном случае, к сожалению.
James L
1

голосов
1

ответ
0

Просмотры

Выполнение Oracle SQL скрипта с объектом команды ODP .net: взаимоисключающие сообщения об ошибках

Я пытаюсь создать тестовую среду для тестирования приложения от оракула и SQL Server. Цель состоит в том, чтобы иметь тот же базовый код для обоих тестовых сценариев, единственное различие должно некоторые SQL / DDL / ... заявления, которые хранятся в файлах скриптов. Проблема заключается в том, что ODP оракула не поддерживает выполнение скриптов, но только отдельные команды. Я нашел обходной путь, но есть еще один вопрос, который я не могу решить: Мой Капля сценарий оракул выглядит следующим образом: BEGIN EXECUTE IMMEDIATE «SELECT„“DROP TABLE„“|| table_name || '' CASCADE CONSTRAINTS; '' ОТ user_tables'; EXECUTE IMMEDIATE «SELECT '' DROP SEQUENCE '' || sequence_name || ''; '' ОТ user_sequences; '; END [;] Проблема последняя точка с запятой после END: В то время как база данных Oracle жалуется, если я не предоставлю точку с запятой в конце: ORA-06550: строка 1, столбец 208: PLS-00103: Столкнутый символ «конец файла», когда ожидает одно из следующих действий:; Символ ";" был заменен на «конец файла», чтобы продолжить) я получаю исключение брошенного оракула ODP .Net объект команды, если я обеспечиваю точку с запятой:. ORA-00911: недопустимый символ ORA-06512: в строке 1 Есть ли способ чтобы удовлетворить обоих, базы данных Oracle и ODP .Net?
phatoni
1

голосов
1

ответ
0

Просмотры

Вставьте массив записей в таблице Oracle с использованием ODP.Net

Я мог бы быть лень искать, но я понятия не имею, как вставить массив записей в таблице к Oracle с использованием C # и ODP.NET. Я видел основные примеры с установкой примитивных типов, но никогда не нашел ни с чем-то вроде массива записей. Любая помощь? Я в принципе должен иметь тип записи, которая будет иметь три из пяти столбцов в таблице. Тогда мне нужно вставить массив значений в таблицу, используя C # и ODP.NET.
danish
1

голосов
4

ответ
0

Просмотры

Oracle ODP.NET BulkCopy для временного выпуска таблицы

Я использую метод BulkCopy из ODP.NET вставить DataTable во временную таблицу. Если временная таблица не является простым (без триггеров или индексов) это работает, хорошо, но как только я создать индекс или триггер, я получаю «конец файла по каналу связи» ошибка в методе BulkCopy.WriteToServer (). Любая идея, как я мог это исправить? Спасибо!
maephisto
1

голосов
2

ответ
0

Просмотры

OracleBulkCopy AutoCommits

C # .Net Я использую OracleBulkCopy для копирования данных в глобальных временных таблиц, которые объявлены в качестве Удалить фиксации. Поэтому, когда я использую OracleBulkCopy.WriteToServer (DataReader). Она обязывает, и я теряю все данные. Как это предотвратить?
1

голосов
1

ответ
3k

Просмотры

Нет приемлемый запрос для уведомлений об изменениях базы данных

Я использую уведомление об изменениях базы данных (DCN) в приложении я пишу с ODP.NET. Один экземпляр Oracle 11g 11.2.0.2.0 принимает регистрацию DCN, а другой отвергает их для того же запроса. Насколько мне известно, схема обоих баз данных точно так же. Оба пользователи имеют привилегии уведомления о смене. Что может быть причиной одной базы данных, чтобы отклонить запросы на регистрацию, что другой принимает? Запрос похож на выбор * из my_table; и сообщение об ошибке ORA-29983: неподдерживаемый запрос для непрерывного уведомления о запросах. Спасибо!
Chris
1

голосов
2

ответ
17k

Просмотры

Подключение Oracle с использованием ODP.NET с Enterprise Library DAAB

Наше приложение использует Enterprise Library Daab для поддержки как оракул и SQL база данных. Один из хранимой процедуры для загрузки изображения в таблицу. Это поле BLOB и параметр установлен в DbType.Binary. Эта функция работает без каких-либо проблем для SQL, но когда доходит до Oracle я попал предельный размер вопрос 32K параметра. Как было предложено в SO, я перенес код в ODP.NET, но я до сих пор сталкиваются с той же проблемой. Моя установка App.config файл: В моем коде приложения я использую библиотеку предприятия для доступа к БД базы данных БД = DatabaseFactory.CreateDatabase (); DbCommand CMD = db.GetStoredProcCommand (ИмяХранимойПроцедуры); cmd.CommandType = CommandType.StoredProcedure; db.AddInParameter (CMD, "DOCIMAGE", DbType.Binary, GetByteArrayFromFile (Filepath)); db.AddOutParameter (CMD, "return_value", DbType.Int32, 128); INT = строка db.ExecuteNonQuery (CMD); У меня есть следующие узлы, на которые ссылаются в моем проекте: Теперь, когда я запустить приложение, Ent Lib DAAP предполагается использовать Oracle.DataAccess.Client, но он по-прежнему подключен к БД Oracle через System.Data.OracleClient. Поэтому предел 32K еще есть. Почему он не использует поставщик данных Oracle, как я четко упоминается в App.config? В одном посте, Он упоминается использовать следующий фрагмент в качестве обходного пути, DbProviderFactory providerFactory = DbProviderFactories.GetFactory ( «Oracle.DataAccess.Client»); База данных БД = GenericDatabase (ConnectionString, providerFactory); Это одна кажется работает. Но экземпляр базы данных имеет GenericDatabase вместо OracleDatabase, может быть, поэтому даже эта работа вокруг до сих пор бросает исключение, когда размер файла превышает 32К. Как использовать ODP.NET с Enterprise Library для 32K размер лимита выдачи? ПОСТАНОВИЛИ: Я последовал за hridya через него пройти. Как он отметил, были ошибка комментария XML, который может быть отключен (Посмотрите здесь). Также было несколько конфликтов пространств имен, которые были решены путем выбора Oracle.DataAccess.Client. После этого, он успешно скомпилирован. Вот мой фрагмент кода из примера приложения я сделал это, чтобы проверить изменения. (Пример решения в настоящее время ссылается на новые собранные данные и общие библиотеки DLL.) Дб Database = DatabaseFactory.CreateDatabase (); DbCommand CMD = db.GetStoredProcCommand (SQLCODE); cmd.CommandType = CommandType.StoredProcedure; db.AddInParameter (CMD, "DOCIMAGE", DbType.Binary, GetByteArrayFromFile (Filepath)); db.AddOutParameter (CMD, "return_value", DbType.Int32, 128); INT RowId = db.ExecuteNonQuery (CMD); Я проверил объект команды, теперь типа Oracle.DataAccess.Client.OracleCommand тогда как ранее это было System.Data.OracleClient.OracleCommand. Помните, так как я уже изменил Daab использовать ODP.NET, мне не нужно, чтобы установить поставщика явно в конфигурационном файле с помощью тега providerMappings. Но я все еще получаю ту же ошибку, когда размер файла превышает 32К, шагая в код построчно показал, что проблема с DbType.Binary. Это не переодеться в соответствующую OracleDbType. Для того, чтобы сделать его работу, я добавил еще один код исправления в Project Data Enterprise библитеков. Файл: \ Oracle \ OracleDatabase.cs Метод: AddParameter Оригинальный код: общественный переопределения недействительным AddParameter (команда DbCommand, имя строки, DbType DBTYPE, внутр размер, ParameterDirection направление, BOOL обнуляемым, байт точность, байт масштаба, строка SourceColumn, DataRowVersion SourceVersion, значение объекта) {если (DbType.Guid.Equals (DbType)) {объект convertedValue = ConvertGuidToByteArray (значение); AddParameter ((OracleCommand) команда, имя, OracleDbType.Raw, 16, направление, обнуляемая, точность, масштаб, SourceColumn, SourceVersion, convertedValue); RegisterParameterType (команда, имя, DBTYPE); } Еще {base.AddParameter (команда, имя, DbType, размер, направление, обнуляемая, точность, масштаб, SourceColumn, SourceVersion, значение); }} Добавлено условие DbType.Binary Modified Код: публичное переопределения недействительным AddParameter (команда DbCommand, имя строки, DBTYPE DBTYPE, размер Int, направление ParameterDirection, BOOL Nullable, байт точность, байт масштаба, строка SourceColumn, DataRowVersion SourceVersion, значение объекта) {если (DbType.Guid.Equals (DbType)) {объект convertedValue = ConvertGuidToByteArray (значение); AddParameter ((OracleCommand) команда, имя, OracleDbType.Raw, 16, направление, обнуляемая, точность, масштаб, SourceColumn, SourceVersion, convertedValue); RegisterParameterType (команда, имя, DBTYPE); } Иначе, если (DbType.Binary.Equals (DbType)) {AddParameter ((OracleCommand) команда, имя, OracleDbType.Blob, размер, направление, обнуляемый, точность, масштаб, SourceColumn, SourceVersion, значение); } Еще {base.AddParameter (команда, имя, DbType, размер, направление, обнуляемый, точность, масштаб, SourceColumn, SourceVersion, значение); }} Я не знаю, если это правильный способ сделать это или какой-либо другой гладкий обходной путь уже доступно. Но это сработало.
vijay
1

голосов
1

ответ
3.2k

Просмотры

LDAP lookup using ODP.NET, Managed Driver Beta (Oracle.ManagedDataAccess.dll) fails in C# application

Я использую ODP.NET, управляемый Driver Beta (Oracle.ManagedDataAccess.dll) в моем C # приложения для доступа к базе данных Oracle. Это заменить с использованием нативной версии ODP.NET для того, чтобы удалить все локальные зависимости на Oracle Client 10g / 11g / и т.д.. так что это не обязательно должны быть установлены локально. Это решение, которое я нашел здесь. Это мой C # код: новый OracleConnection ( "Источник данных = ABCDEFG1; Пользователь Id = myuserid; Password = мойпароль;") Open ();. Эта линия будет достигнута, и объект OracleConnection создан успешно, тем самым предполагая, все зависимости будут загружены успешно. Тем не менее, он бросает OracleException на вызове Open (). Сообщение об ошибке: транспортная сеть: Не удалось разрешить имя узла подключения Моя организация выполняет имя хоста с помощью LDAP-запросов, и это делается с помощью файлов ORA, используя параметр DIRECTORY_SERVER. Тем не менее, у меня возникают трудности с получением его сделать это, используя управляемую версию ODP.NET. Файлы ORA хранятся в C: \ Apps \ оракула \ сети \ администратор. tnsping на моем источнике данных ( «ABCDEFG1») работает отлично. Таким образом, я использовал выход tnsping и добавил запись для ABCDEFG1 в tnsnames.ora, используя этот вывод. Мое приложение затем подключается успешно. Так, я знаю, что это, безусловно, поиск и использование файлов ORA, но по какой-то причине, он не будет выполнять поиск LDAP, что не-управляемый ODP.NET (в других приложениях) использует. Кто-нибудь, кто использовал этот новый управляемый ODP.NET знает об этой проблеме или то, что я могу делать неправильно? м, имеющих трудности с получением его сделать это, используя управляемую версию ODP.NET. Файлы ORA хранятся в C: \ Apps \ оракула \ сети \ администратор. tnsping на моем источнике данных ( «ABCDEFG1») работает отлично. Таким образом, я использовал выход tnsping и добавил запись для ABCDEFG1 в tnsnames.ora, используя этот вывод. Мое приложение затем подключается успешно. Так, я знаю, что это, безусловно, поиск и использование файлов ORA, но по какой-то причине, он не будет выполнять поиск LDAP, что не-управляемый ODP.NET (в других приложениях) использует. Кто-нибудь, кто использовал этот новый управляемый ODP.NET знает об этой проблеме или то, что я могу делать неправильно? м, имеющих трудности с получением его сделать это, используя управляемую версию ODP.NET. Файлы ORA хранятся в C: \ Apps \ оракула \ сети \ администратор. tnsping на моем источнике данных ( «ABCDEFG1») работает отлично. Таким образом, я использовал выход tnsping и добавил запись для ABCDEFG1 в tnsnames.ora, используя этот вывод. Мое приложение затем подключается успешно. Так, я знаю, что это, безусловно, поиск и использование файлов ORA, но по какой-то причине, он не будет выполнять поиск LDAP, что не-управляемый ODP.NET (в других приложениях) использует. Кто-нибудь, кто использовал этот новый управляемый ODP.NET знает об этой проблеме или то, что я могу делать неправильно? ора, используя этот вывод. Мое приложение затем подключается успешно. Так, я знаю, что это, безусловно, поиск и использование файлов ORA, но по какой-то причине, он не будет выполнять поиск LDAP, что не-управляемый ODP.NET (в других приложениях) использует. Кто-нибудь, кто использовал этот новый управляемый ODP.NET знает об этой проблеме или то, что я могу делать неправильно? ора, используя этот вывод. Мое приложение затем подключается успешно. Так, я знаю, что это, безусловно, поиск и использование файлов ORA, но по какой-то причине, он не будет выполнять поиск LDAP, что не-управляемый ODP.NET (в других приложениях) использует. Кто-нибудь, кто использовал этот новый управляемый ODP.NET знает об этой проблеме или то, что я могу делать неправильно?
Neo
1

голосов
1

ответ
4.2k

Просмотры

OracleDataAdapter CommandText для обновления набора данных

Я использую сетки в моем проекте те заполняются через DataSets и DataTables. Я использую DataNavigators на сетках для вставки, удаления и обновления строк, и я хочу, чтобы зафиксировать изменения в базу данных через OracleDataAdapter.Update. Как должен я установить CommandText из OracleDataAdapter для обновления, удаления и вставки в то время как есть только один CommandText?
gesus

Просмотр дополнительных вопросов