SQL Сервер на Linux: ODB C соединение с Windows работает, приложение не - PullRequest
1 голос
/ 09 января 2020

У меня есть тестовая среда с сервером Linux Ubuntu 16.04, работающим под управлением MS SQL Server 17, где размещена база данных компании. Мой клиентский компьютер - Windows 7.

  • Мне удалось импортировать базу данных на сервер Linux, и я могу создать и успешно протестировать соединение ODB C с Windows клиент.
  • SQL Server Management Studio на Windows P C может создавать / удалять таблицы, создавать пользователей, объекты и т. Д. На экземпляре SQL Server на Linux. * 1006. *

Я подключаюсь следующим образом в VB 6.0

Dim rec1 As ADODB.Recordset 
Set rec1 = New ADODB.Recordset 
rec1.Open "Select * from tblSysReg", gstrDefaultDB, adOpenDynamic, adLockOptimistic 
  • gstrDefaultDB - строка, содержащая имя зарегистрированного и проверенного соединения ODB C.
  • Учетные данные для проверки соединения: системный администратор (sa) и пароль.
  • Для соединения установлено использование SQL Аутентификация сервера

Здесь ошибка генерируется следующим образом:

  • код ошибки автоматизации -2147217843

Однако, когда я запускаю программу из клиента Windows, она не может «прочитать» из таблицы базы данных (tblSysReg) и генерирует ошибку автоматизации.

Успешные параметры подключения ODB C следующие:

  • Тип: TCP / IP
  • Сервер: 10.0.0.3
  • Порт : 1433

Я вхожу как 'sa' с моим SQL Серверным паролем для SQL Сервер на Linux.

Я пытаюсь понять, как происходит соединение тест пройден успешно, но программа, использующая соединение, не может прочитать ни из одной таблицы в базе данных сервера SQL на Linux?

Заранее спасибо.

1 Ответ

0 голосов
/ 09 января 2020

Исходя из кода в ваших комментариях, вы пытаетесь передать строку подключения в rec1.Open() вместо объекта подключения. Вам нужно использовать объект Connection, чтобы открыть соединение с базой данных, а затем использовать этот объект при открытии набора записей.

Примерно так

Dim conn as ADODB.Connection
Dim rec1 As ADODB.Recordset

Set conn = New ADODB.Connection
Set rec1 = New ADODB.Recordset

conn.Open gstrDefaultDB
rec1.Open "Select * from tblSysReg", conn, adOpenDynamic, adLockOptimistic
... [do more stuff] ...
rec1.Close
conn.Close

Вы также можете использовать Execute метод Connection для возврата набора записей.

Dim conn as ADODB.Connection
Dim rec1 As ADODB.Recordset

Set conn = New ADODB.Connection

conn.Open gstrDefaultDB
Set rec1 = conn.Execute("Select * from tblSysReg")
... [do more stuff] ...
rec1.Close
conn.Close

Посмотрите на эту страницу еще много примеров:
https://support.microsoft.com/en-us/help/168336/how-to-open-ado-connection-and-recordset-objects

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...