2011-01-04 18 views
0

Ich versuche, eine Verbindung zu meinem DB Oracle mit ASP.NET/C# herzustellen.Orakel ASP.NET: TNS-Problem

Hier ist mein Code:

OracleConnection connection = new OracleConnection(); 
connection.ConnectionString = @"Data Source=ORACLEDB;User id=me;Password=xxxx;"; 
try 
{ 
    connection.Open(); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine("Exception occurs when connecting to DB : " + ex.Message + ex.StackTrace); 
} 

und hier ist der Fehler, den ich bekommen:

ORA-12154: TNS : the identifier could not be solved 

Hier ist meine TNSNAMES.ora:

ORACLEDB = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = myComputer.myDomain)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVICE_NAME = ORACLEDB) 
    ) 
) 

ich auf einem win2k3 arbeiten Server R2.

Oracle befindet sich auf demselben Server. Es ist Oracle 11g.

Wenn ich ein tnsping tun, bekomme ich diese:

EZCONNECT adapter used to resolved the alias 
Tentative de contact de (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=169.254.216.123)(PORT=1521))) 
OK (20 msec) 

Und hier ist mein listener.ora:

SID_LIST_LISTENER = 
    (SID_LIST = 
    (SID_DESC = 
     (SID_NAME = CLRExtProc) 
     (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1) 
     (PROGRAM = extproc) 
     (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") 
    ) 
) 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = myComputer.myDomain)(PORT = 1521)) 
    ) 
) 

Antwort

3

die String-Verbindung in den web.config Put:

<connectionStrings> 
    <add name="OracleDatabase" 
      connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME= ORACLEDB)));User Id= me;Password= xxx;Persist Security Info=True;" 
      providerName="System.Data.OracleClient" /> 
    </connectionStrings> 

Und dann aus dem web.config die Verbindungszeichenfolge erhalten:

connection.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDatabase"].ConnectionString; 
0

Was ist der EZConnect Adapter? Vielleicht verwenden TNSPing und Ihr Code andere Treiber?

Versuchen Sie, die IP-Adresse Ihrer Datenbank in der Verbindungszeichenfolge in Ihrem Code zu verwenden. Dies könnte Ihnen zeigen, was das Problem verursacht.

0

Wenn ich versuche zu verwenden myComputer.myDomain als Datenquelle in meine Verbindungszeichenfolge gibt es den Fehlercode

ORA-12504 : TNS : the listener processus didn't obtain SERVICE_NAME in CONNECT_DATA.

Idk was EZConnect ist :-)

der Befehl diese tnsping localhost geben:

C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\sqlnet.ora 


Adaptateur TNSNAMES utilisé pour la résolution de l'alias 
Tentative de contact de (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myComputer.myDomain)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = ORACLEDB))) 
OK (20 msec) 

Vielleicht könnte es helfen: wenn ich versuche, meine DB mit SQL Plus zu verbinden, es funktioniert gut ..

Vielen Dank für Ihre Hilfe.