.NET使用connectionstring连接到oracle问题

时间:2010-04-22 10:28:58

标签: .net oracle exception connection

目前我正在尝试连接本地服务器。 比如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;";

有什么想法吗?

3 个答案:

答案 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)

这是一个很好的网站,用于整理您的连接字符串问题:

www.connectionstrings.com

答案 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)))";