.NET 连接到 oracle 时出现连接字符串问题
目前我正在尝试连接到本地服务器。 例如,通过 TOAD 连接效果很好。当我尝试使用 .NET 连接时,我收到 ora-12154。 这让我感到困惑,因为我使用的是 TNSNAMES.ora 文件中的连接字符串:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myPC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
如下:
private string connectionString = "Data Source=(DESCRIPTION ="
+" (ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = myPC)(PORT = 1521)))"
+" (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE));"
+"User Id=sys;Password=zsxyzabc;";
有什么想法吗?
At the moment I'm trying to make a connection to a local server.
Connecting via, say, TOAD works fine. When I try to connect using .NET I get ora-12154.
Which puzzles me, since I'm using the connectionstring from my TNSNAMES.ora file:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myPC)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
As follows:
private string connectionString = "Data Source=(DESCRIPTION ="
+" (ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = myPC)(PORT = 1521)))"
+" (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE));"
+"User Id=sys;Password=zsxyzabc;";
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您正在以 SYS 身份连接。因此,您需要包含 SYSDBA 权限:
使用 SYS 帐户进行常规应用程序工作,甚至常规 DBA 工作都是不好的做法。但有时这是必要的,当必要时我们必须以 sysdba 身份连接。
编辑
这是一个微妙的问题:字符串末尾缺少一个括号!
在这些情况下,拥有带有括号匹配的 IDE(我使用 TextPad)是一个福音。
You are connecting as SYS. Therefor you need to include the SYSDBA privilege:
It is bad practice to use the SYS account for regular application work, or even regular DBA work. But it is necessary sometimes, and when it is necessary we have to connect
as sysdba
.edit
It is a subtle one: you have a missing bracket at the end of the string!
Having an IDE with bracket matching (I use TextPad) is a boon in these cases.
这是一个解决连接字符串问题的好网站:
www.connectionstrings.com
This is a great site for sorting out your connection string issues:
www.connectionstrings.com
您可能只能通过 Oracle 的 .NET 提供程序来执行此操作。该提供程序确实支持连接字符串中的“DBA Privilege=SYSDBA”设置。
为什么要用SYS用户登录?这很危险,您可以创建一个新用户并与其连接。您可能想给予任何您想要的特权。也试试这个:
You may only be able to do this with the Oracle's .NET provider. That provider does support a "DBA Privilege=SYSDBA" setting in your connection string.
Why are you login with SYS user? It's dangerous, you may create a new user and connect with it. You may want to give any privileges you want. Try also this one :