将“经典ASP / ADO”应用程序从SQL Server 2008迁移到SQL Server 2017时使用什么连接字符串和或OLEDB / ODBC驱动程序?

问题描述 投票:0回答:1

我的“经典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的程序,它可以成功连接。

此连接字符串有效:驱动程序= {SQL Server Native Client 11.0};服务器= 192.168.0.23;数据库= TestDB; Uid = user1; Pwd = xxx;

这也可以:驱动程序= {SQL Server};服务器= 192.168.0.23;数据库= TestDB; Uid = user1; Pwd = xxx;

这是现有代码用于连接的确切格式。

现在,我知道对于ADO,我没有指定提供程序,所以我认为它默认为Microsoft的ODBC的OLEDB提供程序MSDASQL。

因此,要从WS2003应用程序服务器进行连接,这是我遇到的问题。这有可能吗?

我已经用这些结果尝试了这些连接字符串:

Driver = {SQL Server}; Server =;数据库= yyy; Uid = xxx; Pwd = xxx;此工作-这是现有的SQL2008数据库。

Driver = {SQL Server}; Server =;数据库= TestDB; Uid = user1; Pwd = xxx;此消息失败大约需要20-30秒:[ODBC SQL SERVER DRIVER] SQL Server不存在或访问被拒绝

“旧” {SQL Server}驱动程序将能够连接到SQL2017吗?

Driver = {SQL Server Native Client 11.0};服务器= 192.168.0.23;数据库= 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兼容。

用于SQL Server的Microsoft ODBC驱动程序17:至少需要Windows Server 2008 R2。与Microsoft ODBC Driver 13和11相同。我确实安装了版本11,尽管可能不支持该版本。我确实使用它成功地为旧的SQL2008数据库创建了新的ODBC数据源,但没有为SQL2017数据库创建新的ODBC数据源。

我需要怎么做才能解决这个问题?

sql-server ado
1个回答
0
投票

ADO不使用ODBC术语的“ Drivers”。它使用OleDb“提供程序”。有三个用于SQL Sever的OleDb提供程序(除了MSDASQL之外,对于SQL Server来说,ODBC驱动程序的OleDb提供程序也不是必需的,因为它具有本机OleDb提供程序)。

从Windows Server 2003开始,旧的SQLOLEDB提供程序已包含在Windows中,它可能是从旧服务器进行连接的正确方法。当前版本是MSOLEDBSQL,并且可用here,并且应尽可能使用它代替旧的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
© www.soinside.com 2019 - 2024. All rights reserved.