首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Oracle.ManagedDataAccess打开Oracle连接失败

使用Oracle.ManagedDataAccess打开Oracle连接失败
EN

Stack Overflow用户
提问于 2013-08-28 14:57:27
回答 3查看 5.9K关注 0票数 1

我正在用Oracle.ManagedDataAccess控制台应用程序和powershell脚本测试.Net 4.121.1.0,在我的c#应用程序中一切都很好。不幸的是,当我试图打开与open方法的oracle连接时,我的powershel脚本出现了一个奇怪的问题。

这里是我的Powershell“脚本”

代码语言:javascript
复制
Add-Type -Path 'C:\Oracle\odp.net\managed\common\Oracle.ManagedDataAccess.dll'

$CNX = 'Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY = tcp.world)(PROTOCOL = TCP)(Host = HOST)(Port = 1521)))(CONNECT_DATA=(SID=SID)));User ID=USER;Password=PWD;'
$con = New-Object Oracle.ManagedDataAccess.Client.OracleConnection("$CNX")
$con.open()

引发的错误是

Exception de l‘’appel de Open avec 0 avec(S)论点:“不可能的行为”Oracle.ManagedDataAccess,Version=4.121.1.0,Culture=neutral,PublicKeyToken=89b483f429 c 47342‘C:\oracle\oracle.ps1 :5 Caractère: 10

在c#控制台应用程序中编写的相同代码运行良好。

我觉得是配置问题,但我迷路了.

有人已经有这个问题了吗?

Thx

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-28 17:35:11

新的程序集只支持.NET 4.0及更高版本。如果您使用的是Powershell 2.0,那么您使用的是.NET 3.5或.NET 2.0

您需要使用Powershell v3,或者可以尝试设置Powershell v2以使用更高版本的.NET,如本文所述。注意:这会破坏一些事情,比如远程处理。

http://tfl09.blogspot.com/2010/08/using-newer-versions-of-net-with.html

或者,您可以选择“半管理”11g客户端。

票数 1
EN

Stack Overflow用户

发布于 2013-08-28 15:09:56

不确定它是否有用,但下面是我在PowerShell 3.0上所使用的方法

我根据自述文本文件ODAC1120320Xcopy_x64.zip这里下载和安装。

这是我的剧本:

代码语言:javascript
复制
# getting good assembly
Add-Type -Path "C:\oracle\odp.net\bin\4\Oracle.DataAccess.dll"

# Connexion string
$compConStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.213.6.15)(PORT=3000)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MySERVER)));User Id=toto;Password=toto;"

# Establish connexion
$oraConn= New-Object Oracle.DataAccess.Client.OracleConnection($compConStr)
$oraConn.Open()

下面是我在Oracle.ManagedDataAccess.dll上运行的代码:

代码语言:javascript
复制
# Download the package if it's not on the disk    
$version = '12.2.1100'
try
{
  if (! $(Test-Path ".\NugetPackages\Oracle.ManagedDataAccess.$version\lib\net40\Oracle.ManagedDataAccess.dll"))
  {
    $ManagedDataAccess = Install-Package Oracle.ManagedDataAccess -Destination ".\NugetPackages" -Force -Source 'https://www.nuget.org/api/v2' -ProviderName NuGet -RequiredVersion $version -ErrorAction SilentlyContinue
  }
  Add-Type -Path ".\NugetPackages\Oracle.ManagedDataAccess.$version\lib\net40\Oracle.ManagedDataAccess.dll"
}
catch [System.Management.Automation.ParameterBindingException]
{
  $global:OracleError = New-Object PSCustomObject -Property @{"StackTrace"=$_.ScriptStackTrace;"Detail" = "Ligne $($_.InvocationInfo.ScriptLineNumber) : $($_.exception.message)";"TimeStamp"=([datetime]::Now)}
  $log = $null
}

# Connexion
$oraConn= New-Object Oracle.ManagedDataAccess.Client.OracleConnection (($compConStr)
$oraConn.Open()

# Requête SQL
$sql1 = @"
SELECT XX_MYSESSION_ID FROM XX_SILOGIXWSLOG 
  WHERE xx_name='customer_log'
  AND xx_param_4 IS NOT NULL
"@

$command1 = New-Object Oracle.ManagedDataAccess.Client.OracleCommand($sql1,$oraConn)

# Execution
$reader1=$command1.ExecuteReader()

$n = 0
while ($reader1.read())
{
  $reader1["XX_MYSESSION_ID"]  
}

# Close the conexion
$reader1.Close()
$oraConn.Close()
票数 1
EN

Stack Overflow用户

发布于 2014-07-17 18:00:47

在花了两个小时试验其他方法之后,将连接指定为字符串终于对我起了作用。我正在使用Powershell 4。

$tns=“Source= (DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = myoracle.server.mydomain)(PORT = 1521))(CONNECT_DATA =(SERVICE_NAME =myoracle.server.mydomain);

$con =新对象$con

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18491455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档