2011-01-28 12 views
8

Próbuję połączyć lokalną bazę danych Oracle 11g za pomocą eksploratora serwerów w Visual Studio 2010. Próbowałem skonfigurować wszystko zgodnie z instrukcją, ale nadal jestem uzyskanie błędu ORA-12504.ORA-12504: TNS: detektor nie otrzymał SERVICE_NAME w CONNECT_DATA

Tutaj jest błąd:

enter image description here

Oto moje zawartość TNSNAMES.ORA: zawartość pliku

# tnsnames.ora Network Configuration File: C:\app\rsahi\product\11.2.0\dbhome_1\network\admin\tnsnames.ora 
# Generated by Oracle configuration tools. 


VENUS = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = SPRPRG020)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = VENUS) 
    ) 
) 

LISTENER_VENUS = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = SPRPRG020)(PORT = 1521)) 

listener.ora,

# listener.ora Network Configuration File: C:\app\rsahi\product\11.2.0\dbhome_1\network\admin\listener.ora 
# Generated by Oracle configuration tools. 

LISTENER = 
    (DESCRIPTION_LIST = 
    (DESCRIPTION = 
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 
     (ADDRESS = (PROTOCOL = TCP)(HOST = SPRPRG020)(PORT = 1521)) 
    ) 
) 

ADR_BASE_LISTENER = C:\app\rsahi 

Odpowiedz

-1

Doświadczyłem tego samego problemu, gdy próbowałem utworzyć LinkedServer z Oracle 11g. Moja nazwa instancji oracle brzmiała: PC-2.my.xgen, a moją nazwą słuchacza było "NB". Ostatnim parametrem pierwszej instrukcji jest faktycznie konkatenacja nazwy instancji i nazwy odbiornika serwera Oracle.

Więc zapisuję następujące instrukcje w serwerze SQL.

--add a linked server into SQL server 
--last parameter contains OracleInstance/Listener Name of desired database 
EXEC sp_addlinkedserver 'OracleLinkedServer4', 'Oracle', 'MSDAORA', 'PC-2.my.xgen/nb' 

--add login information into linked server 
EXEC sp_addlinkedsrvlogin 'OracleLinkedServer4', false, Null, 'system', '123456' 

W bazie danych Oracle "NB" Mam tabeli o nazwie: CRD_CIL_NOTIFICATION_TYPE. Napisałem więc następujące oświadczenie, aby uzyskać zapisy.

select * from OracleLinkedServer4..SYSTEM.CRD_CIL_NOTIFICATION_TYPE 
1

Bez konieczności dużo wiedzy w łączeniu ODP.NET z bazą danych Oracle DB, sugeruję, abyś zaczął korzystać g SERVICE_NAME (np .: VENUS) w parametrach połączenia.

Oracle twierdzi, że:

Od 11g r cechą pomocą hosta przewidzianego w pliku/etc/hosts, jak sama nazwa aliasu/usługi została zmieniona. W rezultacie użytkownik będzie musiał podać nazwę usługi podczas łączenia LUB skonfigurować docelowy obiekt nasłuchujący z domyślną nazwą usługi.

Jednym ze sposobów na ominięcie wymogu stronie klienta SERVICE_NAME jest zmuszenie Listener zawsze wysyłam cię na tę samą usługę, informując go, aby to zrobić w tnsnames.ora

DEFAULT_SERVICE_LISTENER = VENUS 

Ale nie proponujemy zrób to, ponieważ jest dość restrykcyjne.

15

Spróbuj w panelu Connection Server Explorer danych Visual Studio:

Data source name: SPRPRG020/VENUS

tj formacie nazwa źródła danych jest SERVER_NAME_OR_IP/DATABASE_NAME

+1

Korzystanie SSIS, to końcówka robi opisać format Jest to potrzebne w polu Źródło danych w kroku "Wybierz źródło danych" w Kreatorze importu i eksportu SQL Server. –