我有一个使用业务对象提供程序的 SSRS 报告。该 dll 与 Oracle 服务器有连接。每当我运行报告时,我都会不断收到此错误消息:
“Oracle.DataAccess.Client.OracleException ORA-12514: TNS:listener 目前不知道连接描述符中请求的服务”
有谁知道为什么?
我有一个使用业务对象提供程序的 SSRS 报告。该 dll 与 Oracle 服务器有连接。每当我运行报告时,我都会不断收到此错误消息:
“Oracle.DataAccess.Client.OracleException ORA-12514: TNS:listener 目前不知道连接描述符中请求的服务”
有谁知道为什么?
听起来您安装了 oracle 客户端但尚未设置 TNS 侦听器。
应该有一个名为“tnsnames.ora”的文件,在该文件中您需要添加一个新的侦听器。如果是 Windows 安装,则可能还有一个网络配置 GUI。
如果您选择采用这种方式,一般 tnsnames.ora 条目将如下所示:
DBAlias =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xxx.xxx.xxx)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = YourDBServiceName))
)
您的 tnsnames.ora 文件通常位于 ORACLE_HOME/network/admin 目录中。
从技术上讲,您不是在“创建侦听器”,而是为 Oracle 客户端网络连接字符串定义别名,它将在某处引用侦听器。
或者,如果您不想/不能弄乱 tnsnames.ora 条目,您可以指定一个 EZConnect 字符串:
"Data Source=//yourserver:1521/yourDB;User ID=theUser;Password=thePW"
您将需要 sqlnet.ora 文件中的一个条目,其效果是:
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)