programing

오류입니다. ORA-12154: TNS: 지정된 연결 식별자를 확인할 수 없습니까?

css3 2023. 9. 2. 08:44

오류입니다. ORA-12154: TNS: 지정된 연결 식별자를 확인할 수 없습니까?

다음 코드가 있습니다.

OracleConnection con = new OracleConnection("data source=localhost;user id=fastecit;password=fastecit"); 
con.Open(); string sql="Select userId from tblusers";    
OracleCommand cmd = new OracleCommand(sql, con);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{ messageBox.Show(dr[0].Tostring()); } 

두 프로젝트 모두 동일한 코드입니다.

프로젝트 1에서 "WinForm"이 올바르게 작동하고 있습니다.

프로젝트 2 "Excel 2007 addins"에서 다음 오류가 나타납니다.

ORA-12154: TNS: 지정된 연결 식별자를 확인할 수 없습니다

저는 C#.net 2010, Office 2007, windows8, oracle 10g을 사용하고 있습니다.

그림과 같이 데이터베이스에 대한 수동 연결을 준비할 때

Visual Studio에서 보기 메뉴 + 서버 탐색기를 엽니다.

Data Connection + Add Connection + Oracle Database server Name : my machine의 localhost 또는 name을 마우스 오른쪽 버튼으로 클릭하고 사용자 이름과 암호를 설정한 후 Test Connection을 클릭합니다. Test is not success.enter image description here

ORA-12154: TNS: 지정된 연결 식별자를 확인할 수 없습니까?

TNS가 정의되어 있지 않은 경우 다음을 시도할 수도 있습니다.

사용 중인 경우C#.net 2010또는 다른 버전의 VS 및 Oracle 10g Express Edition 이하 버전을 사용하면 다음과 같은 연결 문자열을 만들 수 있습니다.

static string constr = @"Data Source=(DESCRIPTION=
    (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=yourhostname )(PORT=1521)))
    (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));
    User Id=system ;Password=yourpasswrd"; 

그런 다음 오류 메시지가 표시됩니다.ORA-12154: TNS:could not resolve the connect identifier specified그런 다음 먼저 시스템을 다시 시작하고 프로젝트를 실행해야 합니다.

또한 Windows가 64비트인 경우 Oracle 11g 32비트를 설치해야 하며 11g 64비트를 설치한 경우 OTN에서 Oracle 11g Oracle Data Access Components(ODAC)를 Oracle Developer Tools for Visual Studio 버전 11.2.0.1.2 이상과 함께 설치하고 Oracle Universal Installer에서 다음 사항을 확인해야 합니다.

Oracle Data Provider for .NET 2.0

Oracle Providers for ASP.NET

Oracle Developer Tools for Visual Studio

Oracle Instant Client 

그런 다음 Visual Studio를 다시 시작하고 프로젝트를 실행합니다.참고:- 이러한 유형의 오류를 해결하려면 시스템을 다시 시작해야 합니다.

데이터베이스 이름(예: DB1)이 있어야 합니다. 다음 이름을 사용하십시오.

OracleConnection con = new OracleConnection("data source=DB1;user id=fastecit;password=fastecit"); 

TNS가 정의되어 있지 않은 경우 다음을 시도할 수도 있습니다.

OracleConnection con = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DB1)));
User Id=fastecit;Password=fastecit"); 

명령 프롬프트에서 다음 명령을 실행합니다.

tnsping 데이터 원본

이것은 아래와 같은 응답을 제공해야 합니다.

C:>tnsping *********

*** Windows용 TNS Ping 유틸리티:버전 *** - 프로덕션 on ***

저작권 (c) 1997, 2014, Oracle.무단 전재 금지.

사용된 매개 변수 파일: c:\oracle****

****를 사용하여 연락 시도 별칭을 확인했습니다(설명=(address_list=(address=(address=(host=)(host=)(port=)))(connect_data=(server=)(service_name=)(address_mode=(type=)(type=)(retries=)(retries))).확인(****밀리초)

시작 부분에 'Datasource=' 텍스트를 추가하고 끝 부분에 자격 증명을 추가합니다.마지막 문자열은 다음과 같아야 합니다.

데이터 원본=(description=(address_list=(address=(protocol=host=)(host=)(port=))(connect_data=(server=)(service_name=)(failover_mode=(type=)(method=)(retries=)(delay)));사용자 ID=;암호=;**

이 문자열을 오라클 DB에 연결하기 위한 연결 문자열로 사용합니다.

언급URL : https://stackoverflow.com/questions/20361325/this-is-error-ora-12154-tnscould-not-resolve-the-connect-identifier-specified