【发布时间】:2014-02-25 10:08:20
【问题描述】:
我的应用程序具有连接 4 个不同数据库服务器(MS SQL、MySql、SQLite 和 Oracle)的功能,如果不存在数据库,它将创建一个具有指定数据库名称的新数据库。此逻辑适用于除 Oracle 之外的所有服务器。如果数据库存在,我可以在所有四台服务器上连接到它,所以我认为问题与我的 tns、错误的 dll 或类似的东西无关,但在这种情况下我的连接字符串可能是错误的。
Oracle 服务器版本是 11.0.0.1,我安装了必要的 odac 驱动程序。我的电脑上有一个 tns 设置,当数据库存在时一切正常。在这种情况下,连接字符串如下所示:
User Id=<myuser>; Password=<mypassword>; POOLING=true; Connection Lifetime=15;
Connection Timeout=15; incr pool size=10; Data Source=
(
DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=<myserveraddress>)
(PORT=<myport>)
)
(
CONNECT_DATA=
(SID=<mysid>)
(SERVICE_NAME=<mydatabasename>)
)
);
现在,如果我从连接字符串中删除 servicename 部分,我会收到“ORA-12505:TNS:listener 目前不知道连接描述符中给出的 SID”异常。
当我只想连接到服务器而不是直接连接到数据库时该怎么办?
【问题讨论】:
-
您想检查给定的
service name是否启动并运行? -
如果不是数据库,你到底想连接什么?
-
我想把服务名从连接字符串中去掉,就像我在连接到 MSSQL 服务器时那样。所以,我想连接到服务器,而不是数据库。想象一个没有任何数据库的全新服务器。你会在 servicename 变量中指定什么? :)
-
我认为这里存在术语问题。没有数据库实例,Oracle 中就没有任何东西可以连接。
-
安装 Oracle 服务器时,您没有数据库。我的程序想要连接到服务器,然后创建一个新数据库。创建新数据库后,我可以使用上面的连接字符串连接到它。我可以在其他 3 个数据库中做到这一点,但不能使用 Oracle。