ODP.NET TCP tansport地址连接到Oracle数据库时出错

ODP.NET TCP tansport地址连接到Oracle数据库时出错,oracle,powershell,odp.net,Oracle,Powershell,Odp.net,我正在PowerShell版本4.0中使用OPD.NET托管数据提供程序(版本12C)。通过使用下面的代码,我能够在本地托管Oracle DB server实例的Windows 2012服务器中成功运行并获得输出。因此,当我在DB服务器(Windows 2012服务器)上本地运行代码时,我能够获得输出。如果我在另一个桌面(Windows 8.1)上运行相同的代码,则会出现以下错误: 网络传输:TCP传输地址连接失败 WIndows 8.1上没有Oracle即时客户端;只有ODP.NET DLL文

我正在PowerShell版本4.0中使用OPD.NET托管数据提供程序(版本12C)。通过使用下面的代码,我能够在本地托管Oracle DB server实例的Windows 2012服务器中成功运行并获得输出。因此,当我在DB服务器(Windows 2012服务器)上本地运行代码时,我能够获得输出。如果我在另一个桌面(Windows 8.1)上运行相同的代码,则会出现以下错误:

网络传输:TCP传输地址连接失败

WIndows 8.1上没有Oracle即时客户端;只有ODP.NET DLL文件存在

Windows 8.1和Windows 2012都具有可解析的网络连接和DNS名称

Windows 2012是64位操作系统,Windows 8.1是32位操作系统。我了解到ODP.Net不依赖于操作系统架构

代码是:

Add-Type -Path "D:\ODP.NET_Managed_ODAC12cR4\odp.net\managed\common\Oracle.ManagedDataAccess.dll"

$ConnectionString = "Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =123.0.0.71)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = AGY));User ID=system;Password=system;Connection Timeout=480;"
$con = New-Object -TypeName Oracle.ManagedDataAccess.Client.OracleConnection($ConnectionString)
$cmd = $con.CreateCommand()
$cmd.CommandText='SELECT * FROM v$version'
try {
    $con.Open()
} catch [System.Exception] {
    Write-Host "Exception caught is = $_"
    break;
}
$rdr=$cmd.ExecuteReader()
if ($rdr.Read()) {
    $rdr.GetString(0)
}

if($con.State -eq "Open") {
    $con.Close() 
}

您是否检查了IP地址和端口(
(主机=123.0.0.71)(端口=1521)
)是否正确,以及您是否可以远程登录到该主机上的该端口?没有从windows 8.1到DB server的远程登录。连接到123.0.0.71…无法在端口1521上打开到主机的连接:连接失败。这就是您的问题所在。检查您是否拥有正确的IP地址和端口,是否可以访问主机(
traceroute
),DB服务器是否正在接受外部接口上的连接(
netstat
),以及防火墙是否允许连接到端口。Tracert.exe在从windows 8.1到DB服务器的1个跃点内工作正常,但telnet失败。我在托管在WindowsServer2012上的DB服务器上运行了netstat-a,它说端口1521处于侦听模式。在windows 2012操作系统上,是否有其他修复程序打开从windows 8.1到DB server的telnet通信?还有其他我需要考虑的配置吗?谢谢Ansgar,我找到了根本原因。在windows 2012操作系统的DB服务器上启用的是windows域防火墙。我关掉电源,它开始工作了