Sql server 将“经典ASP/ADO”应用程序从SQL Server 2008移动到SQL Server 2017时,使用什么连接字符串和/或OLEDB/ODBC驱动程序?
我的经典ASP应用程序位于Windows Server 2003上,使用ADO连接到SQL Server 2008数据库 数据库服务器正在从一个不断变化的数据库升级,并将运行SQL server 2017 我试图证明旧的应用程序仍然可以工作,连接到这个新版本的SQL Server 到目前为止,我还没有成功地从旧的WS2003计算机连接到SQL Server 2017安装 我不确定需要安装哪些OLEDB或ODBC提供程序或驱动程序才能使其正常工作,并且最终不确定连接字符串需要是什么 我创建了一个小的演示程序,使用与实际应用程序相同的代码进行连接。本质上,我在这里所做的只是提供一个连接字符串并尝试连接。这是使用ADO的VB6:Sql server 将“经典ASP/ADO”应用程序从SQL Server 2008移动到SQL Server 2017时,使用什么连接字符串和/或OLEDB/ODBC驱动程序?,sql-server,ado,Sql Server,Ado,我的经典ASP应用程序位于Windows Server 2003上,使用ADO连接到SQL Server 2008数据库 数据库服务器正在从一个不断变化的数据库升级,并将运行SQL server 2017 我试图证明旧的应用程序仍然可以工作,连接到这个新版本的SQL Server 到目前为止,我还没有成功地从旧的WS2003计算机连接到SQL Server 2017安装 我不确定需要安装哪些OLEDB或ODBC提供程序或驱动程序才能使其正常工作,并且最终不确定连接字符串需要是什么 我创建了一个小
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,我没有指定提供程序,所以我认为它默认为MSDASQL,微软的OLEDB ODBC提供程序
因此,要从WS2003应用程序服务器连接,这就是我遇到的问题。这可能吗
我尝试了这些连接字符串,结果如下:
Driver={SQL Server};Server=<IP address of SQL2008 server>;Database=yyy;Uid=xxx;Pwd=xxx;
此操作立即失败,并显示以下消息:
[ODBC驱动程序管理器]未找到数据源名称,也没有默认驱动程序
指定的
这是否意味着WS2003计算机上没有安装{SQL Server Native Client 11.0}ODBC驱动程序?可以安装吗
我尝试在这里查看Microsoft的各种ODBC驱动程序安装:
但是,我不确定是否需要这样做,或者它们是否与WS2003兼容
SQL Server的Microsoft ODBC驱动程序17:至少需要Windows Server 2008 R2。与Microsoft ODBC驱动程序13和11相同。我确实安装了版本11,尽管它可能不受支持。我确实使用它成功地为旧的SQL2008数据库创建了一个新的ODBC数据源,但没有为SQL2017数据库创建新的ODBC数据源
我需要做什么来解决这个问题?ADO不使用ODBC术语中的驱动程序。它使用OleDb提供程序。除了MSDASQL之外,SQL Server还有三个OleDb提供程序,MSDASQL是ODBC驱动程序的OleDb提供程序,SQL Server不需要它,因为它有本机OleDb提供程序 从WindowsServer2003开始,旧的SQLOLEDB提供程序就包含在Windows中,它可能是从旧服务器连接的正确提供程序。当前的一个是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
ADO不使用ODBC术语中的驱动程序。它使用OleDb提供程序。除了MSDASQL之外,SQL Server还有三个OleDb提供程序,MSDASQL是ODBC驱动程序的OleDb提供程序,SQL Server不需要它,因为它有本机OleDb提供程序 从WindowsServer2003开始,旧的SQLOLEDB提供程序就包含在Windows中,它可能是从旧服务器连接的正确提供程序。当前的一个是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
非常感谢您提供了非常清晰和翔实的答案。您给出的脚本示例也是检查连接和连接字符串的非常好和快速的方法。在我的例子中,我在连接上仍然有问题,但我现在认为这一定是防火墙问题或其他网络问题,而不是OLEDB问题或W2003和SQL2017之间的某些不兼容。再次感谢!非常感谢您提供了非常清晰和翔实的答案。您给出的脚本示例也是检查连接和连接字符串的非常好和快速的方法。在我的例子中,我在连接上仍然有问题,但我现在认为这一定是防火墙问题或其他网络问题,而不是OLEDB问题或W2003和SQL2017之间的某些不兼容。再次感谢!