2012-03-26 129 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
+0

请问您可以添加一些关于此处的细节吗? – slipsec 2012-03-26 21:29:44

+0

正如KB文章所述,似乎在某些情况下,您会遇到您提到的错误(并且有补丁)。如果你看看Reflector中的Oracle.DataAccess.Client.OracleDataAdapter,你会发现它使用了IListSource很多。可能会帮助您检查该KB并应用该修补程序。或者可能不。 – 2012-03-27 06:24:39

+0

工作机器 - 我无法加载修补程序。我没有反射器:(如果我要获得任何支持热修补程序的支持票,我将不得不对他们采取比“可能...或可能不会” – slipsec 2012-03-27 14:50:01