Проблема с параметрами запросов
Проблема с параметрами запросов
Здравствуйте.
Stimulsoft Reports.Net 2009.3.511
Использовал Stimulsoft.Report.OracleClient.dll.
Создаю источник данных (OleDB, Oracle, Oracle Provider for OleDB).
Запрос:
select 1 from dual where :p1 = 5 or :p1 < 0
При открытии источника возникает ошибка:
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Такая ошибка возникает если в запросе один и тот же параметр встречается больше одного раза.
От типа параметра не зависит.
Похоже ошибка при биндинге параметров.
Спасибо.
Stimulsoft Reports.Net 2009.3.511
Использовал Stimulsoft.Report.OracleClient.dll.
Создаю источник данных (OleDB, Oracle, Oracle Provider for OleDB).
Запрос:
select 1 from dual where :p1 = 5 or :p1 < 0
При открытии источника возникает ошибка:
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Такая ошибка возникает если в запросе один и тот же параметр встречается больше одного раза.
От типа параметра не зависит.
Похоже ошибка при биндинге параметров.
Спасибо.
Проблема с параметрами запросов
Здравствуйте,
Спасибо.
Такая ошибка встречается при попытке чтения защищенной памяти из неуправляемого кода. В нашем генераторе отчетов практически не используется неуправляемый код (только в некоторых экспортах для обратки изображений). Значит ошибка произошла где то в недрах .Net или в коде адаптера Oracle. Можно увидеть полный стек ошибки?"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Спасибо.
Проблема с параметрами запросов
----------------------------
[Customer Explanation]
----------------------------
[General Info]
Application: Stimulsoft Reports.Net
Framework: v2.0.50727
Version: Version: 2009.3.511 from 12 October 2009
MachineName: nnn
OSVersion: Microsoft Windows NT 5.1.2600 Service Pack 3
UserName: uuu
----------------------------
[Exception Info]
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source: System.Data
StackTrace:
at System.Data.Common.UnsafeNativeMethods.ICommandText.Execute(IntPtr pUnkOuter, Guid& riid, tagDBPARAMS pDBParams, IntPtr& pcRowsAffected, Object& ppRowset)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Stimulsoft.Report.Dictionary.StiOleDbSource.UpdateParameters()
at Stimulsoft.Report.Dictionary.StiOleDbAdapterService.ConnectDataSourceToData(StiDictionary dictionary, StiDataSource dataSource, Boolean loadData)
at Stimulsoft.Report.Dictionary.StiDataSource.Connect(StiDataCollection datas, Boolean loadData)
at Stimulsoft.Report.Dictionary.StiDataSource.Connect(Boolean loadData)
at Stimulsoft.Report.Design.Dictionary.StiViewDataForm.Build()
----------------------------
[Assemblies]
mscorlib, Version = 2.0.0.0
Stimulsoft.Base, Version = 2009.3.511.0
Stimulsoft.Controls, Version = 2009.3.511.0
Stimulsoft.Report, Version = 2009.3.511.0
Stimulsoft.Report.Design, Version = 2009.3.511.0
Stimulsoft.Report.Win, Version = 2009.3.511.0
System, Version = 2.0.0.0
System.Drawing, Version = 2.0.0.0
System.Windows.Forms, Version = 2.0.0.0
System.Xml, Version = 2.0.0.0
[Customer Explanation]
----------------------------
[General Info]
Application: Stimulsoft Reports.Net
Framework: v2.0.50727
Version: Version: 2009.3.511 from 12 October 2009
MachineName: nnn
OSVersion: Microsoft Windows NT 5.1.2600 Service Pack 3
UserName: uuu
----------------------------
[Exception Info]
Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source: System.Data
StackTrace:
at System.Data.Common.UnsafeNativeMethods.ICommandText.Execute(IntPtr pUnkOuter, Guid& riid, tagDBPARAMS pDBParams, IntPtr& pcRowsAffected, Object& ppRowset)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Stimulsoft.Report.Dictionary.StiOleDbSource.UpdateParameters()
at Stimulsoft.Report.Dictionary.StiOleDbAdapterService.ConnectDataSourceToData(StiDictionary dictionary, StiDataSource dataSource, Boolean loadData)
at Stimulsoft.Report.Dictionary.StiDataSource.Connect(StiDataCollection datas, Boolean loadData)
at Stimulsoft.Report.Dictionary.StiDataSource.Connect(Boolean loadData)
at Stimulsoft.Report.Design.Dictionary.StiViewDataForm.Build()
----------------------------
[Assemblies]
mscorlib, Version = 2.0.0.0
Stimulsoft.Base, Version = 2009.3.511.0
Stimulsoft.Controls, Version = 2009.3.511.0
Stimulsoft.Report, Version = 2009.3.511.0
Stimulsoft.Report.Design, Version = 2009.3.511.0
Stimulsoft.Report.Win, Version = 2009.3.511.0
System, Version = 2.0.0.0
System.Drawing, Version = 2.0.0.0
System.Windows.Forms, Version = 2.0.0.0
System.Xml, Version = 2.0.0.0
Проблема с параметрами запросов
С ODP все в порядке.
Нормально работает в аналогичной ситуации у меня в программах.
Да и в том же FastReport.Net работает правильно.
Нормально работает в аналогичной ситуации у меня в программах.
Да и в том же FastReport.Net работает правильно.
Проблема с параметрами запросов
Здравствуйте,
Проверил сейчас работу с параметрами для Oracle 10g и cо стандартным провайдером OleDb и с доступным на сайте:
http://www.stimulsoft.com/Downloads/OracleDatabase.zip
OracleConnector.
Для работы с пререлизом 2009.3.511 Database pack из "OracleDatabase.zip" обязательно перекомпилировал, т.е. с изменением Stimulsoft dll каждый раз нужно перекомпилировать и Database pack.
Все работало без вопросов в обоих случаях.
Имя параметра указал как :p1
Какая версия Oracle у Вас установлена?
Библиотеку Stimulsoft.Report.OracleClient.dll лучше сразу удалите и из папки Вашего приложения и из папки "Stimulsoft.Report.OracleClient" чтобы быть уверенным, что библиотека будет использована новая.
Спасибо.
Проверил сейчас работу с параметрами для Oracle 10g и cо стандартным провайдером OleDb и с доступным на сайте:
http://www.stimulsoft.com/Downloads/OracleDatabase.zip
OracleConnector.
Для работы с пререлизом 2009.3.511 Database pack из "OracleDatabase.zip" обязательно перекомпилировал, т.е. с изменением Stimulsoft dll каждый раз нужно перекомпилировать и Database pack.
Все работало без вопросов в обоих случаях.
Имя параметра указал как :p1
Какая версия Oracle у Вас установлена?
Скорее всего Вам необходимо пересобрать и коннектор и Ваш проект с библиотеками версии 2009.3.511.fantomus писал(а):Stimulsoft Reports.Net 2009.3.511
Использовал Stimulsoft.Report.OracleClient.dll.
Библиотеку Stimulsoft.Report.OracleClient.dll лучше сразу удалите и из папки Вашего приложения и из папки "Stimulsoft.Report.OracleClient" чтобы быть уверенным, что библиотека будет использована новая.
Спасибо.
Проблема с параметрами запросов
- Удалил все Stimulsoft.Report.OracleClient.dll
- Скачал заново OracleDatabase.zip
- Скомпилировал
- Скопировал Stimulsoft.Report.OracleClient.dll в c:\Program Files\Stimulsoft Reports.Net 2009.2\Bin\
- Запустил c:\Program Files\Stimulsoft Reports.Net 2009.2\Bin\Designer.exe
- Создал соединение: Новое соединение - OleDB соединение - Oracle Provider for OleDB
- Создал источник данных:
select * from dual where :a = :a
- Создаю параметр "а" типа Integer
- Нажимаю "просмотреть результаты запроса" - ошибка
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Проверил на 2 версиях Oracle Server 9.2.0.6 и 10.2.0.1.
Кстати, в не которых случаях при использовании типа параметра Variant возникает другая ошибка, но закономерность я пока не определил.
Такого типа:
ROW-00001: Cannot allocate memory
- Скачал заново OracleDatabase.zip
- Скомпилировал
- Скопировал Stimulsoft.Report.OracleClient.dll в c:\Program Files\Stimulsoft Reports.Net 2009.2\Bin\
- Запустил c:\Program Files\Stimulsoft Reports.Net 2009.2\Bin\Designer.exe
- Создал соединение: Новое соединение - OleDB соединение - Oracle Provider for OleDB
- Создал источник данных:
select * from dual where :a = :a
- Создаю параметр "а" типа Integer
- Нажимаю "просмотреть результаты запроса" - ошибка
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Проверил на 2 версиях Oracle Server 9.2.0.6 и 10.2.0.1.
Кстати, в не которых случаях при использовании типа параметра Variant возникает другая ошибка, но закономерность я пока не определил.
Такого типа:
ROW-00001: Cannot allocate memory
Проблема с параметрами запросов
Кстати, в свойствах параметра имя можно указывать без двоеточия, а в запросе (естественно) с двоеточием обязательно.
Работает и так и так.
Работает и так и так.
Проблема с параметрами запросов
По ходу обнаружил проблемы с созданием и переименованием соединений.
Создание:
- Создаем новое соединение "Соединение1"
- Создаем еще одно соединение с таким же именем.
Первое соединение заменяется новым без предупреждений
Переименование:
- Создаем новое соединение "Соединение1"
- Переименовываем его в "Соединение2"
При этом "Соединение1" остается, но становится недоступным для редактирования и появляется новое соединение "Соединение2" с пустыми свойстами.
Создание:
- Создаем новое соединение "Соединение1"
- Создаем еще одно соединение с таким же именем.
Первое соединение заменяется новым без предупреждений
Переименование:
- Создаем новое соединение "Соединение1"
- Переименовываем его в "Соединение2"
При этом "Соединение1" остается, но становится недоступным для редактирования и появляется новое соединение "Соединение2" с пустыми свойстами.
Проблема с параметрами запросов
Здравствуйте.
А нет ли у Вас в GAC наших библиотек? В этом случае что-то подобное возможно и происходило бы при использовании разных версий в одном проекте одновременно в OracleConnector и в основном приложении.
Какую версию Windows Вы используете?
Спасибо.
В каждом источнике данных просто хранится текстовое значение содержащее имя соответствующего "Соединения". Если Вы измените любое из "Соединение1", в "Соединение2", то оставшееся "Соединение1" и будет использовано.По ходу обнаружил проблемы с созданием и переименованием соединений.
Создание:
- Создаем новое соединение "Соединение1"
- Создаем еще одно соединение с таким же именем.
Первое соединение заменяется новым без предупреждений
Зто происходит потому, что "Соединение1" отсутствует, а ссылки в источниках данных на него остались. Как только вновь появляется "Соединение1" - (в runtime или в design-time), то все работает как предполагалось.Переименование:
- Создаем новое соединение "Соединение1"
- Переименовываем его в "Соединение2"
При этом "Соединение1" остается, но становится недоступным для редактирования и появляется новое соединение "Соединение2" с пустыми свойствами.
Как ни пытался, не смог воспроизвести - ни с версией 2009.2.500 ни 2009.3.511.- Удалил все Stimulsoft.Report.OracleClient.dll
- Скачал заново OracleDatabase.zip
- Скомпилировал
- Скопировал Stimulsoft.Report.OracleClient.dll в c:\Program Files\Stimulsoft Reports.Net 2009.2\Bin\
- Запустил c:\Program Files\Stimulsoft Reports.Net 2009.2\Bin\Designer.exe
- Создал соединение: Новое соединение - OleDB соединение - Oracle Provider for OleDB
- Создал источник данных:
select * from dual where :a = :a
- Создаю параметр "а" типа Integer
- Нажимаю "просмотреть результаты запроса" - ошибка
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
А нет ли у Вас в GAC наших библиотек? В этом случае что-то подобное возможно и происходило бы при использовании разных версий в одном проекте одновременно в OracleConnector и в основном приложении.
Какую версию Windows Вы используете?
Если получится воспроизвести и найти закономерность, дайте, пожалуйста, знать, будем рады исправить.Кстати, в не которых случаях при использовании типа параметра Variant возникает другая ошибка, но закономерность я пока не определил.
Такого типа:
ROW-00001: Cannot allocate memory
Спасибо.
Проблема с параметрами запросов
Здравствуйте
По поводу создания/переименования.
Я понимаю почему это происходит, но считаю, что с точки зрения пользователя такое поведение не очень логично.
В первом случае пользователь случайно может заменить существующее соединение новым и отчет может перестать работать.
Во втором случае при переименовании соединения должны меняться и все ссылки не него.
Но это меня не сильно пока беспокоит.
Можно обсудить позже в отдельной ветке.
По поводу создания/переименования.
Я понимаю почему это происходит, но считаю, что с точки зрения пользователя такое поведение не очень логично.
В первом случае пользователь случайно может заменить существующее соединение новым и отчет может перестать работать.
Во втором случае при переименовании соединения должны меняться и все ссылки не него.
Но это меня не сильно пока беспокоит.
Можно обсудить позже в отдельной ветке.