2012-03-26 6 views
1

Fill()을 호출하려고하면 다음 오류가 기록되고 PowerShell 세션이 충돌합니다.Oracle.DataAccess.Client.OracleDataAdapter.Fill()을 호출 할 때 오류가 발생했습니다.

이벤트 종류 : 오류 이벤트 원본 : .NET 런타임 설명 : .NET 런타임 버전 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] 

내가 가지고 : 같은

내 스크립트 보인다

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은 문제없이 작동합니다.

답변

0

본 적이 있습니까? An access violation occurs when you run a .NET Framework 2.0-based application that has a virtual call the IList, IEnumerable, or ICollection interface in an LCG (Lightweight Code Generation) method. DataSet은 IEnumerable을 구현하는 IList를 반환하는 GetList() 메서드가있는 IListSource를 구현합니다.

+0

이 부분에 적용되는 세부 정보를 추가 할 수 있습니까? – slipsec

+0

기술 자료 기사에 따르면 일부 상황에서는 언급 한 오류가 발생하는 것으로 보입니다 (패치도 있습니다). Reflector에서 Oracle.DataAccess.Client.OracleDataAdapter를 보면 IListSource가 상당히 많이 사용된다는 것을 알 수 있습니다. 해당 KB를 확인하고 패치를 적용하는 데 도움이 될 수 있습니다. 그렇지 않을 수도 있습니다. –

+0

작업 기계 - 핫픽스를로드 할 수 없습니다. 그리고 나는 반사경을 가지고 있지 않다. (만약 내가 지원 티켓을 찾는데 도움이된다면, 슬픈 듯이 그들에게 더 많은 것을 가져야한다. – slipsec

관련 문제