使用PowerShell远程连接Oracle数据库

3
以下是我的Oracle查询,通过PowerShell运行。如果在本地机器上运行它,它可以正常工作,没有错误。
[Reflection.Assembly]::LoadFile("E:\oracle\product\11.2.0\ODP.NET\bin\2.x\Oracle.DataAccess.dll")

$constr = "User Id=system;Password=pass;Data Source=API"
$conn= New-Object Oracle.DataAccess.Client.OracleConnection($constr)
$conn.Open()
$sql="select * from dba_users"
$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
$reader=$command.ExecuteReader()

while($reader.Read()){
  $reader.GetString(0)
}

$conn.Close()

我希望从这台机器上远程运行相同的查询。当我尝试运行时会出现以下错误:

Exception calling "Open" with "0" argument(s): "ORA-12541: TNS:no listener"

我无法在Tnsora文件中添加条目。

有人能给我建议其他实现这个目的的方法吗?

1个回答

1
如果您无法修改tnsora,则必须使用EZConnect连接描述符作为连接字符串。请尝试以下操作:
$userId = 'system'
$password = 'pass'
$host = 'ip or hostname'
$port = '1521'
$serviceName = 'Your service name'

$constr = "User Id=$userId;Password=$password;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$host)(PORT=$port))(CONNECT_DATA=(SERVICE_NAME=$serviceName)))"

感谢您的回答。我会尝试并让您知道。 - Roxx
还有一个问题,$serviceName = '您的服务名称'。我需要在服务名称中放什么?它应该是数据库名称还是其他什么东西? - Roxx
是的,数据库名称。关于我建议您使用的连接描述符的更多信息,请查看我提供给您的链接;-) - Martin Brandl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接