2009-08-24 2 views
0

У меня есть две базы данных на одном сервере с тем же именем и другим номером порта. tnxnames.ora запись выглядит (на самом деле одна база данных является клоном другой.)Подключение к Oracle через VBScript

AAAA.FSA.GOV.UK = 
(DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = SERVERNAME)(Port = 1530))) 
(CONNECT_DATA = (SID = AAAA))) 


AAAA.FSA.GOV.UK = 
(DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = SERVERNAME)(Port = 1521))) 
(CONNECT_DATA = (SID = AAAA))) 

Я использую MS-Access для разработки приложения и использовать подключение ADODB для доступа к серверу. Я пытаюсь получить доступ к данным с сервера. Моя строка подключения выглядит следующим образом:

sConStr = "Driver={oracle in oraclient10g_home1};SERVER=SERVER_NAME;DBQ=AAAA;UID=username;Pwd=pswd" 

Set oConn = New ADODB.Connection 

oConn.connectionstring = sConStr 
oConn.open 

Моя проблема, мой ADODB всегда подключиться к базе данных номер порта 1530. Я не могу установить его в строке connetion, чтобы получить доступ к базе данных в порту 1521.

Можно ли указать номер порта в строке соединения для доступа к другой базе данных с тем же именем и на том же сервере?

Мне нужно подготовить приложение для доступа к клонированной базе данных вместо оригинальной. Ничто, кроме номера порта, не отличается между базами данных.

+0

Привет, я сумел решить эту проблему. Для подключения ADODB существует другая строка соединения. DNS меньше соединения. Я использовал это и упомянул запись tnsnames в той же самой строке соединения, которая помогает мне подключиться к базе данных. – chinnagaja

ответ

1

Вы можете найти это полезным: http://www.connectionstrings.com/oracle

+0

Абсолютно, connectionstrings.com - ваш друг! –

+0

Я проверил в этом. Я использую драйвер Oracle в OraClient10g и тот же, что и в этом списке. Я принимаю Oracle в OraHome92 (Driver = {Oracle в OraHome92}; Dbq = myTNSServiceName; Uid = myUsername; Pwd = myPassword;) параметр похож на мой, но в моем случае myTNSServiceName одинаково для обеих баз данных. – chinnagaja

+0

С этого сайта я получил DNS меньше connectionstring, и я могу достичь того, что мне нужно. – chinnagaja

0

Попробуйте добавить номер своего порта в конец имени сервера, разделенного двоеточием.

SERVER=SERVER_NAME:1521 

Я не являюсь пользователем Oracle, но это будет работать с MS SQL Server.

+0

этот параметр принимает имя сервера, но не распознает номер порта! – chinnagaja

0

Это может быть глупый вопрос ... но оба из этих записей в вашем tnsnames.ora?

AAAA.FSA.GOV.UK = 
(DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = SERVERNAME)(Port = 1530))) 
(CONNECT_DATA = (SID = AAAA))) 


AAAA.FSA.GOV.UK = 
(DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = SERVERNAME)(Port = 1521))) 
(CONNECT_DATA = (SID = AAAA))) 

Попробуйте изменить его, чтобы каждое имя было уникальным.

AAAA.FSA.GOV.UK = 
(DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = SERVERNAME)(Port = 1530))) 
(CONNECT_DATA = (SID = AAAA))) 


AA21.FSA.GOV.UK = 
(DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = SERVERNAME)(Port = 1521))) 
(CONNECT_DATA = (SID = AAAA))) 

Затем в командной строке попробуйте tnsping AAAA.FSA.GOV.UK и tnsping AAAA21.FSA.GOV.UK

+0

Я тоже пробовал. Но соединение ADODB всегда подключается к первой базе данных, поскольку обе базы данных имеют одинаковое имя пользователя и пароль. Я не уверен, что порты распознаются подключением ADODB. – chinnagaja