2016-02-11 19 views
0

我遇到了运行PowerShell脚本的问题。该脚本使用ODAC(oracle数据访问组件)连接到oracle数据库并获取一些值。PowerShell ORA-12514:TNS:侦听器当前不知道连接描述符中请求的服务

我最近不得不改变我在sql developer中使用的端口号来连接数据库。

然而,当我试图在我的PowerShell脚本更改此端口号,我得到一个错误

ORA-12514:TNS:监听器目前不知道服务的连接描述符请求

有关为何发生这种情况的任何想法?

+0

哪个供应商你使用ODAC吗? (它提供了几个) –

+0

嗨Wenfried。它是ODAC 11.2 64位 – btecndcomp

+0

哪个提供者/驱动程序? “ODBC”,“OLE DB”,“ODP.NET”或“ODP.NET托管驱动程序”? –

回答

0

我使用以下命令:

C:\oracle安装ODAC1120320Xcopy_x64.zip(见新版本here

下面是一个snipet ExecuteReader()你也可以使用ExecuteNonQuery()

# Load Oracle assembly 
Add-Type -Path "C:\oracle\odp.net\bin\4\Oracle.DataAccess.dll" 

$compConStr = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.213.6.15)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=OURSERVICENAME)));User Id=User;Password=Pass;Pooling=False" 
# Establish the connexion 
$oraConn= New-Object Oracle.DataAccess.Client.OracleConnection($compConStr) 
$oraConn.Open() 

$sql1Tpl = @" 
    SELECT masi.yyyy as TYPE_ID FROM xxxx masi 
    WHERE masi.serno = '{0}' 
"@ 

$sql1 = $sql1Tpl -replace "blabla" 

# Exécution 
$command1 = New-Object Oracle.DataAccess.Client.OracleCommand($sql1,$oraConn) 
$command1.CommandTimeout = 1500 
$reader1 =$command1.ExecuteReader() 

$clocationID = $null 
if ($reader1.HasRows -eq $true) 
{ 
    $read =$reader1.read() 
    if ($read -eq $true) 
    { 
    $clocationID = $reader1["C_LOCATION_ID"] 
    } 
} 
# Close the reader 
$reader1.close() 

# Disconect 
$oraConn.Close() 
相关问题