目前我正在尝试连接本地服务器。 比如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;";
有什么想法吗?
答案 0 :(得分:1)
您正在以SYS身份进行连接。因此,您需要包含SYSDBA权限:
+"User Id=sys;Password=zsxyzabc;DBA Privilege=SYSDBA;";
将SYS帐户用于常规应用程序工作,甚至是常规DBA工作都是不好的做法。但有时候这是必要的,当有必要时,我们必须连接as sysdba
。
修改强>
这是一个微妙的问题:你在字符串的末尾有一个缺少的括号!
private string connectionString = "Data Source=(DESCRIPTION ="
+" (ADDRESS_LIST=(ADDRESS = (PROTOCOL = TCP)(HOST = myPC)(PORT = 1521)))"
+" (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE)));"
^
在这些情况下,拥有支架匹配的IDE(我使用TextPad)是一个福音。
答案 1 :(得分:0)
这是一个很好的网站,用于整理您的连接字符串问题:
答案 2 :(得分:0)
您可能只能使用Oracle的.NET提供程序执行此操作。该提供程序确实支持连接字符串中的“DBA Privilege = SYSDBA”设置。
为什么要使用SYS用户登录?这很危险,您可以创建一个新用户并与之建立连接。您可能想要提供您想要的任何权限。试试这个:
string connString = "User Id=sys; Password=zsxyzabc; Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myPC)(PORT=1521))(CONNECT_DATA=(SERVER=dedicated)(SID=xe)))";