Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подключение к удаленному SQL Server через Excel VBA  [new]
dmitriy_po
Member

Откуда:
Сообщений: 58
Добрый день.
Подскажите, пожалуйста. Есть машина 192.168.xxx.xxx. Для доступа к данной машине необходима аутентификация (логин - dmitriy_po, пароль - 123). На машине есть SQL Server, доступ к которому осуществляется также через логин и пароль (логин - dmitriy_po, пароль - 1234). Название базы данных - MyDataBase.
Как осуществить доступ к данному серверу средствами VBA из Excel? Во всех примерах, которые я нашел в интернете, указывается только логин и пароль для доступа к серверу, но не к самой машине, на которой стоит сервер. Из мастера подключения к данным в Excel мне также не удается подключиться.

Буду благодарен за помощь.
18 май 16, 09:56    [19187299]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
iiyama
Member

Откуда:
Сообщений: 642
dmitriy_po,

Проверяли?
18 май 16, 10:30    [19187517]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
dmitriy_po
Member

Откуда:
Сообщений: 58
iiyama
dmitriy_po,

Проверяли?


Да. Проверил.

Шаг 1.
Попробуйте «пропинговать» сервер БД как по имени так и по IP-адресу, командой
Ping [SQLServerDNSName], где SQLServerDNSName – DNS имя сервера БД в сети. Если возникли проблемы с пингом по имени, то необходимо устранить проблемы со службой DNS в Вашей сети. Если сервер не пингуется по IP-адресу, то необходимо решить проблемы, либо с маршрутизацией пакетов в сети, или проверить саму сеть на наличие физических обрывов.


Пинг есть.

Шаг 2.
Выполняется при условии, что шаг 1 выполнился успешно.
Простая проверка к соединения с сервером БД осуществляется командой
telnet [SQLServerIPAdress] [port] – где SQLServerIPAdress IP-адрес сервера, port-порт подключения к серверу, по умолчанию 1433. При удачном подключении, экран терминала telnet будет чистым с мигающим курсором.


Проверил. Экран терминала является чистым с мигающим курсором.

Шаг 3 - это выполнение подключения. Вот именно с этим у меня и проблема, потому что в всех примерах, которые я нашел в интернете, указывается только логин и пароль для доступа к серверу, но не к самой машине (192.168.102.27), на которой стоит сервер. Не удается также подключиться и через мастер.

Не поможет ли кто VBA кодом?
18 май 16, 11:14    [19187718]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
dmitriy_po,

к самой машине подключаться и не надо. Какая ошибка при попытке подключения?
18 май 16, 11:18    [19187735]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Брайзер запущен ? Какой протокол открыт для сервера ?
18 май 16, 11:18    [19187736]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
dmitriy_po
Шаг 3 - это выполнение подключения. Вот именно с этим у меня и проблема, потому что в всех примерах, которые я нашел в интернете, указывается только логин и пароль для доступа к серверу, но не к самой машине (192.168.102.27), на которой стоит сервер. Не удается также подключиться и через мастер.
А можете показать любой из таких примеров "в интернете"?

Ещё раз говорю, что,
1. во первых, нет понятия "логин и пароль к самой машине", если логин и пароль пользователя Windpws.
2. При использовании Windpws-аутоидентификации этот логин и пароль указать нельзя.
3. Если логин и пароль указать можно, то это не логин и пароль пользователя Windpws, а логин и пароль пользователя SQL Server
18 май 16, 11:18    [19187738]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Maxx
Брайзер запущен ? Какой протокол открыт для сервера ?
телнетом же подключается
Вот то, что подключаться может не по TCP/IP, это да.
18 май 16, 11:19    [19187746]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
Maxx,
экземпляр наверняка именованный. Но это так, в порядке "угадайте"
18 май 16, 11:20    [19187752]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
dmitriy_po
Буду благодарен за помощь.
Да, и ещё - просьба о помощи начинается с публикации оригинального сообщения об ошибке :-)
18 май 16, 11:21    [19187755]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
dmitriy_po
Не поможет ли кто VBA кодом?

Ну погуглите же по фразе "ADODB Vba SQL Server example"!!!
Нужно срочно в FAQ добавить статью "Как научиться искать в интернете?"
18 май 16, 11:22    [19187758]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
dmitriy_po,
Например:
+
Sub cn_open()

On Error GoTo ErrorConnect

' Set connection properties.
Set Cn = New ADODB.Connection
Cn.ConnectionTimeout = 25
Cn.CommandTimeout = 180
Cn.Provider = "sqloledb.1"

Cn.Properties("Data Source").Value = ServerName
Cn.Properties("Initial Catalog").Value = DatabaseName
Cn.Properties("User ID").Value = "..."
Cn.Properties("Password").Value = "..."
Cn.CursorLocation = adUseClient

' Change mousepointer while trying to open database.
Application.Cursor = xlWait

' Open the database.
Cn.Open

' Change mousepointer back to the default after open.
Application.Cursor = xlDefault

cn_ok = True 'формируем признак
Exit Sub

ErrorConnect:
' Change mousepointer back to the default after open.
Application.Cursor = xlDefault

cn_ok = False

MsgBox "No server connection.", , "Login"

End Sub

Sub cn_close()
Cn.Close
Set Cn = Nothing
cn_ok = False 'формируем признак
End Sub
18 май 16, 11:24    [19187768]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
ConnectionString = "Provider=SQLNCLI11;Data Source=(local);Initial Catalog=EPS;User Id=sa;Password=нескажу"

да вот вангую, что не поможет
18 май 16, 11:26    [19187780]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1090
connectionstrings.com спасут отца русской демократии
18 май 16, 11:28    [19187790]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
dmitriy_po
Member

Откуда:
Сообщений: 58
Вот такой код я использую для подключения:

Sub Test()
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.xxx.xxx\MYSQLSERVER,1433;" & _
                  "Initial Catalog=MyDataBase;" & _
                  "Integrated Security=SSPI;User ID=sa;Password=не скажу;"
     cn.Open
    cn.Close
    Set cn = Nothing
    
End Sub


Чтобы "вручную" зайти на машину, на которой установлен сам сервер, я использую rdp-подключение и всегда ввожу пароль в окне "Безопасность Windows". А уже там я ввожу логин и пароль пользователя SQL Server.
18 май 16, 11:42    [19187841]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
dmitriy_po
Member

Откуда:
Сообщений: 58
Да, текст сообщения об ошибке: "SQL Server не существует или доступ запрещен".
18 май 16, 11:44    [19187851]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
dmitriy_po
Вот такой код я использую для подключения:

Sub Test()
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    
    cn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.xxx.xxx\MYSQLSERVER,1433;" & _
                  "Initial Catalog=MyDataBase;" & _
                  "Integrated Security=SSPI;User ID=sa;Password=не скажу;"
     cn.Open
    cn.Close
    Set cn = Nothing
    
End Sub
Хм, у вас реально именованный инстанс, но порт как у дефаултного инстанса? Редкий случай, хотя и возможно.

Посмотрите на сервере, в менеджере конфигурации, какие всё таки у вас инстансы, какие у них порты, и какие для них разрешены протоколы.

dmitriy_po
Чтобы "вручную" зайти на машину, на которой установлен сам сервер, я использую rdp-подключение и всегда ввожу пароль в окне "Безопасность Windows". А уже там я ввожу логин и пароль пользователя SQL Server.
Вы запустите на той машине, на которой у вас этот эксель, программу SSMS, и подключитесь к сиквелу. Без РДП.
18 май 16, 11:59    [19187911]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
dmitriy_po
На машине есть SQL Server, доступ к которому осуществляется также через логин и пароль
Ещё раз - у вас на сервере установлено несколько SQL Server, и подключиться нужно к одному из них, к тому, который не дефаултный, а именованный?
Это точно?
18 май 16, 12:01    [19187920]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
dmitriy_po
Integrated Security=SSPI
Это тоже неправильно.
Вы указываете, что нужно подключаться, не используя логин и пароль. А потом указываете логин и пароль.
Похоже, вы скомпилировали из интернет-примеров по максимуму, для надёжности :-)
18 май 16, 12:04    [19187941]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
DirksDR
dmitriy_po,
Например:
+
Sub cn_open()

On Error GoTo ErrorConnect

' Set connection properties.
Set Cn = New ADODB.Connection
Cn.ConnectionTimeout = 25
Cn.CommandTimeout = 180
Cn.Provider = "sqloledb.1"

Cn.Properties("Data Source").Value = ServerName
Cn.Properties("Initial Catalog").Value = DatabaseName
Cn.Properties("User ID").Value = "..."
Cn.Properties("Password").Value = "..."
Cn.CursorLocation = adUseClient

' Change mousepointer while trying to open database.
Application.Cursor = xlWait

' Open the database.
Cn.Open

' Change mousepointer back to the default after open.
Application.Cursor = xlDefault

cn_ok = True 'формируем признак
Exit Sub

ErrorConnect:
' Change mousepointer back to the default after open.
Application.Cursor = xlDefault

cn_ok = False

MsgBox "No server connection.", , "Login"

End Sub

Sub cn_close()
Cn.Close
Set Cn = Nothing
cn_ok = False 'формируем признак
End Sub


Я бы не рекомендовал использовать такие конструкции

Cn.CursorLocation = adUseClient


Как показывает практика, очень часто VBA не может распознать такие константы и пишет маловразумительные ошибки.
Лучше делать что то типа

Cn.CursorLocation = 3


Точное значение можно найти в интернете
18 май 16, 12:56    [19188210]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
dmitriy_po
Чтобы "вручную" зайти на машину, на которой установлен сам сервер, я использую rdp-подключение и всегда ввожу пароль в окне "Безопасность Windows". А уже там я ввожу логин и пароль пользователя SQL Server.
После rdp, когда вы подключаетесь к SQL серверу, (я подозреваю через SSMS), тоже вводите имя сервера, как "192.168.xxx.xxx\MYSQLSERVER,1433;" ?
18 май 16, 22:16    [19191061]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 612
dmitriy_po
Как осуществить доступ к данному серверу средствами VBA из Excel? Во всех примерах, которые я нашел в интернете, указывается только логин и пароль для доступа к серверу, но не к самой машине, на которой стоит сервер. Из мастера подключения к данным в Excel мне также не удается подключиться.

Буду благодарен за помощь.


ничего не получится при таких раскладах. Как я понимаю, Excel стоит на локальной машине, а SQL Server - на удаленной машине.
при этом, работа с SQL Server возможна через Remote Desktop.
Скорее всего, админы закрыли доступ к SQL Server извне.

Так что либо установить Excel на удаленную машину и оттуда уже, предварительно "вручную" залогинившись через Remote Desktop, работать с сервером через VBA, либо просить админов открыть доступ к SQL Server. С локальной машины доступа к серверу, скорее всего, нет.
18 май 16, 23:34    [19191316]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
o-o
Guest
и что же тодга "успешно" пинговал ТС?
или уже зайдя на комп по rdp, его же и пинговал?
18 май 16, 23:39    [19191331]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
dmitriy_po
Member

Откуда:
Сообщений: 58
o-o
и что же тодга "успешно" пинговал ТС?
или уже зайдя на комп по rdp, его же и пинговал?


Пинговал с локальной машины. Вход по rdp уже был осуществлен.
19 май 16, 18:03    [19195181]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к удаленному SQL Server через Excel VBA  [new]
o-o
Guest
Пинговать надо оттуда, где Эксель.
А самому себе стучать какой смысл, когда уже вошел?
19 май 16, 18:14    [19195212]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить