我在PowerShell 4.0版中使用OPD.NET托管数据提供程序(版本12C)。通过使用以下代码,我能够在本地托管Oracle DB服务器实例的Windows 2012服务器中成功运行并获取输出。因此,当我在作为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不依赖于OS体系结构。
代码是:
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()
}