Какие строки подключения и / или драйверы OLEDB / ODBC при переносе приложения "классический ASP / ADO" из SQL Server 2008 в SQL Server 2017? - PullRequest
0 голосов
/ 03 октября 2019

Мое приложение "классический ASP" работает на Windows Server 2003 и использует ADO для подключения к базе данных SQL Server 2008.

Сервер баз данных обновляется после изменения и будет работать под управлением SQL Server 2017.

Я пытаюсь доказать, что старое приложение все еще может работать, подключаясь к этой более новой версии SQL Server. ,

До сих пор мне не удавалось подключиться к установке SQL Server 2017 со старой машины WS2003.

Я не уверен, каких поставщиков или драйверов OLEDB или ODBC мне нужно установитьчтобы это сработало, и, в конечном итоге, то, какой должна быть строка подключения.

Я создал небольшую демонстрационную программу для подключения с использованием того же кода, что и в реальном приложении. По сути, все, что я здесь делаю, - это предоставление строки подключения и попытки подключения. Это VB6 с использованием ADO:

Private Sub btnConnect_Click()

    Dim theConnection As New ADODB.Connection

    theConnection.ConnectionString = Text1.Text 
    theConnection.Open ConnectString

    If theConnection.State = 1 Then
        MsgBox ("connected ")
    Else
        MsgBox ("failed to connect ")
    End If

End Sub

Я могу запустить эту программу на новом сервере - на SQL Server 2017, и он успешно подключается.

Эта строка подключения работает:Драйвер = {Собственный клиент SQL Server 11.0}; Сервер = 192.168.0.23; База данных = TestDB; Uid = user1; Pwd = xxx;

Это также работает: Driver = {SQL Server}; Сервер = 192.168.0.23; Database = TestDB; Uid = user1; Pwd = xxx;

Это точный формат, используемый существующим кодом для подключения.

Теперь я понимаю, что для ADO я не указал поставщика, поэтому я думаю, что по умолчанию используется MSDASQL, поставщик OLEDB от Microsoft для ODBC.

Итак, чтобы подключить его к WS2003сервер приложений, где у меня проблемы. Это будет возможно?

Я пробовал эти строки подключения со следующими результатами:

Driver = {SQL Server}; Сервер =; База данных = yyy; Uid = xxx; Pwd = xxx;Это работает - и это существующая база данных SQL2008.

Драйвер = {SQL Server}; Сервер =; База данных = TestDB; Uid = user1; Pwd = xxx;Это сообщение занимает около 20-30 секунд с ошибкой: [ODBC SQL SERVER DRIVER] SQL Server не существует или доступ запрещен

Возможно ли подключиться к «старому» драйверу {SQL Server}? в SQL2017?

Драйвер = {Собственный клиент SQL Server 11.0}; Сервер = 192.168.0.23; База данных = TestDB; Uid = user1; Pwd = user1;Это немедленно завершается ошибкой с сообщением: [ODBC Driver Manager] Имя источника данных не найдено, и не указан драйвер по умолчанию

Означает ли это, что драйвер ODBC {Собственный клиент SQL Server 11.0} не установлен на компьютере WS2003? Это можно установить?

Я попытался просмотреть различные установки драйвера ODBC от Microsoft здесь: https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017

Однако я не уверен, нужно ли мне это делать или они совместимы с WS2003,

Microsoft ODBC Driver 17 для SQL Server: требуется как минимум Windows Server 2008 R2. То же самое для Microsoft ODBC Driver 13 и 11. Я установил версию 11, хотя она, вероятно, не поддерживается. Я использовал это для успешного создания нового источника данных ODBC для старой базы данных SQL2008, но не для базы данных SQL2017.

Что мне нужно сделать, чтобы решить эту проблему?

1 Ответ

1 голос
/ 03 октября 2019

ADO не использует «Драйверы», это терминология ODBC. Он использует OleDb «Провайдеры». Существует три поставщика OleDb для SQL Server (в дополнение к MSDASQL, поставщику OleDb для драйверов ODBC, который не требуется для SQL Server, поскольку у него есть собственные поставщики OleDb).

Старый поставщик SQLOLEDB имеетбыл включен в Windows начиная с Windows Server 2003, и, вероятно, он подходит для подключения со старого сервера. Текущий - MSOLEDBSQL, он доступен здесь и должен использоваться везде, где это возможно, вместо старого SQLOLEDB или более нового, но устаревшего поставщика SQLNCLI.

Вот VbScript, который вы можете использоватьдля проверки соединений с любого компьютера Windows.

Wscript.Echo "SQLOLEDB"
set theConnection = createobject("ADODB.Connection")
theConnection.ConnectionString = "Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI"
theConnection.Open ConnectString

Wscript.Echo "SQLNCLI"
set theConnection = createobject("ADODB.Connection")
theConnection.ConnectionString = "Provider=SQLNCLI;Data Source=localhost;Integrated Security=SSPI"
theConnection.Open ConnectString

Wscript.Echo "MSOLEDBSQL"
set theConnection = createobject("ADODB.Connection")
theConnection.ConnectionString = "Provider=MSOLEDBSQL;Data Source=localhost;Integrated Security=SSPI"
theConnection.Open ConnectString

Сохраните его в файл .vbs и запустите с помощью команды:

c:\test> cscript test.vbs
...