當我嘗試調用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都可以正常工作。
請問您可以添加一些關於此處的細節嗎? – slipsec 2012-03-26 21:29:44
正如KB文章所述,似乎在某些情況下,您會遇到您提到的錯誤(並且有補丁)。如果你看看Reflector中的Oracle.DataAccess.Client.OracleDataAdapter,你會發現它使用了IListSource很多。可能會幫助您檢查該KB並應用該修補程序。或者可能不。 – 2012-03-27 06:24:39
工作機器 - 我無法加載修補程序。我沒有反射器:(如果我要獲得任何支持熱修補程序的支持票,我將不得不對他們採取比「可能...或可能不會」 – slipsec 2012-03-27 14:50:01