2014-11-11 3 views
0

Хорошего дня,DSN подключения к удаленной базе данных повсеместной

Я создал небольшую процедуру VBA, чтобы получить данные из Pervasive базы данных, используя имя DSN. Это отлично работает, когда я нахожусь в той же сети, что и сервер. Мне нужно иметь возможность запускать эту процедуру, когда я не в той же сети. Я пробовал много разных строк соединения, но не смог открыть соединение. Я не уверен, с чего начать стрельбу, чтобы заставить ее работать. У меня есть доступ к серверу через удаленный рабочий стол с использованием имени dyndns - не уверен, могу ли я использовать это как адрес сервера в моей строке соединения?

Ниже приведен код VBA, который работает, когда локальный. Мне нужен способ сделать эту работу удаленно.

Sub GetData() 

Dim adoConn As ADODB.Connection 
Dim adoRs As ADODB.Recordset 
Dim sSql As String 

    sSql = "SELECT AccDesc, BalanceThis01, " & _ 
     "FROM LedgerMaster WHERE NumberSubAccs = 0" 

    Set adoConn = New ADODB.Connection 
    adoConn.Open "DSN=KAYDAV" 


    Set adoRs = New ADODB.Recordset 
    adoRs.Open Source:=sSql, _ 
     ActiveConnection:=adoConn 

With Sheet2 
    .Range(Cells(5, 1).Address, Cells(5000, 44).Address).Value = vbNullString 
    .Cells(5, 2).CopyFromRecordset adoRs 
End With 

    Set adoRs = Nothing 
    Set adoConn = Nothing 

End Sub 

ответ

0

Чтобы получить доступ к удаленной распространяющийся двигатель с помощью ODBC, который может быть за брандмауэром, вам необходимо открыть порт 1583.
Вы можете использовать DSN до тех пор, как DSN указывает на нужное имя машины , В вашем случае вы должны использовать имя DynDNS. Вы можете использовать строку подключения в виде «Driver = {Pervasive ODBC Client Interface}; ServerName = myServerAddress; dbq = dbname;"

Если это не сработает, вам необходимо предоставить дополнительную информацию, включая ошибки и версию Pervasive, которую вы используете.

+0

Спасибо - я попрошу, чтобы он открыл порт и повторил попытку. Просто для подтверждения, для «myServerAddress» я бы использовал «mydyndns.com»? – Niel

+0

Правильно, «myServerAddress» - это ваше имя сервера («mydyndns.com»), а «dbname» - это имя базы данных, к которому вы пытаетесь получить доступ (например, DEMODATA). – mirtheil

+0

ОК, я попробовал следующий код ниже. Я получаю эту ошибку: [Pervasive] [Клиентский интерфейс ODBC] [ClientLNA] Тайм-аут подключения. Диспетчер подключений SQL может быть неактивным или использовать другой протокол от клиента. Sub TestConnection02() Dim adoConn Как ADODB.Connection Dim adoRs Как ADODB.Recordset Dim connString As String connString = «Driver = {Pervasive ODBC Client Interface}; ServerName = mydns.co.za; DSN = MYDSN; " Set adoConn = New ADODB.Connection adoConn.Open connString End Sub – Niel

Смежные вопросы