Ошибка при попытке вызвать Oracle.DataAccess.Client.OracleDataAdapter.Fill () - PullRequest
1 голос
/ 26 марта 2012

Следующая ошибка регистрируется, когда я пытаюсь вызвать Fill (), и мой сеанс powershell падает.

Тип события: ошибка Источник события: .NET Runtime Описание: .NET Runtime версия 2.0.50727.3625 - Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.

Мой скрипт выглядит так:

$asm = [System.Reflection.Assembly]::LoadWithPartialName(“Oracle.DataAccess”) 
$userName = "foo"
$tnsDbName = "bar"
$pass = "foobar"
$connectionString = "User Id=$userName;Password=$pass;Data Source=$tnsDbName"

$q = @"
SELECT * FROM blah WHERE blar = '5848752'
"@

$cstr = $connectionString 
$conn= New-Object Oracle.DataAccess.Client.OracleConnection($cstr)
$conn.open()
$adapter = New-Object Oracle.DataAccess.Client.OracleDataAdapter($q,$conn)
$dataset = New-Object Data.DataSet
$adapter.Fill($dataset)
$dataset.Tables[0]

Если я только пробежусь через строку "$ adapter =", чтобы увидеть состояние дел перед сбоем, у меня будет:

PS H:\> $asm.GetName()

Version        Name                                                                                         
-------        ----                                                                                         
10.2.0.100     Oracle.DataAccess  

PS H:\> $adapter.SelectCommand.Connection | fl ClientID,ConnectionTimeout,ServerVersion,State


ClientId          : 
ConnectionTimeout : 15
ServerVersion     : 10.2.0.4.0
State             : Open

Я открыт для предложений! МОЖЕТ быть обновление ODP.NET на моем компьютере, но все остальные приложения, которые его используют (некоторые простые приложения winform) и Toad for Oracle, работают без проблем.

1 Ответ

0 голосов
/ 27 марта 2012

Вы видели это? Нарушение доступа происходит при запуске приложения на основе .NET Framework 2.0, которое имеет виртуальный вызов интерфейса IList, IEnumerable или ICollection в методе LCG (облегченная генерация кода). DataSet действительно реализует IListSource, которыйимеет метод GetList (), который возвращает IList, который реализует IEnumerable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...