【发布时间】:2019-10-03 17:31:33
【问题描述】:
我的“经典 ASP”应用程序位于 Windows Server 2003 上,并使用 ADO 连接到 SQL Server 2008 数据库。
数据库服务器正在从更改中升级,并将运行 SQL Server 2017。
我试图证明旧应用程序仍然可以工作,连接到这个新版本的 SQL Server。
到目前为止,我还没有成功地从旧的 WS2003 机器连接到 SQL Server 2017 安装。
我不确定需要安装哪些 OLEDB 或 ODBC 提供程序或驱动程序才能使其正常工作,以及最终连接字符串需要什么。
我创建了一个小型演示程序,使用与实际应用程序相同的代码进行连接。本质上,我在这里所做的只是提供一个连接字符串并尝试连接。这是使用 ADO 的 VB6:
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 的服务器,它连接成功。
此连接字符串有效:
Driver={SQL Server Native Client 11.0};Server=192.168.0.23;Database=TestDB;Uid=user1;Pwd=xxx;
这也有效:
Driver={SQL Server};Server=192.168.0.23;Database=TestDB;Uid=user1;Pwd=xxx;
这是现有代码用于连接的确切格式。
现在,我知道对于 ADO,我没有指定 Provider,所以我认为它默认为 MSDASQL,Microsoft 的 ODBC OLEDB 提供程序。
所以,要让它从 WS2003 应用程序服务器连接,是我遇到问题的地方。这有可能吗?
我已经用这些结果尝试了这些连接字符串:
Driver={SQL Server};Server=<IP address of SQL2008 server>;Database=yyy;Uid=xxx;Pwd=xxx;
这个 WORKS - 这是现有的 SQL2008 数据库。
Driver={SQL Server};Server=<IP address of SQL2017 server>;Database=TestDB;Uid=user1;Pwd=xxx;
这需要大约 20-30 秒才能显示此消息:
[ODBC SQL SERVER DRIVER]SQL Server 不存在或访问被拒绝
“旧”{SQL Server} 驱动程序能否连接到 SQL2017?
Driver={SQL Server Native Client 11.0};Server=192.168.0.23;Database=TestDB;Uid=user1;Pwd=user1;
这会立即失败并显示消息:
[ODBC 驱动程序管理器]找不到数据源名称且没有默认驱动程序 指定
这是否意味着 WS2003 机器上没有安装 {SQL Server Native Client 11.0} ODBC 驱动程序?可以安装吗?
我已尝试查看 Microsoft 的各种 ODBC 驱动程序安装:https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017
但是,我不确定是否需要这样做,或者它们是否与 WS2003 兼容。
Microsoft ODBC Driver 17 for SQL Server:至少需要 Windows Server 2008 R2。 Microsoft ODBC 驱动程序 13 和 11 也是如此。我确实安装了版本 11,尽管它可能不受支持。我确实使用它成功地为旧的 SQL2008 数据库创建了一个新的 ODBC 数据源,但没有为 SQL2017 数据库创建一个新的 ODBC 数据源。
我需要做什么来解决这个问题?
【问题讨论】:
标签: sql-server ado