我正在处理一个使用VB6编写的应用程序,但我在连接到我们办公室服务器上安装的SQL Server 2008数据库时遇到了麻烦。
以下是表现症状:
当我尝试使用ADO中的连接字符串通过VB6连接时,VB6会挂起,然后最终给出以下错误:“运行时错误'-2147467259(80004005)':[Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。”
如果我创建一个空白的.udl文件并双击它,在“数据链接属性”对话框的“连接”选项卡中,在“选择或输入服务器名称”的下拉列表中,如果我单击下拉列表以查看列表或单击“刷新”按钮,则会挂起。
当我尝试通过SQL Server 2005 Management Studio连接时(SQL Server 2005已安装在我正在处理VB6程序的客户机上),当我尝试通过以下方式进行连接时:
TCP/IP:我收到消息“此版本的Microsoft SQL Server Management Studio只能用于连接到SQL Server 2000和SQL Server 2005服务器。 (ConnectionDlg)”
共享内存:我收到消息“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。验证实例名称是否正确,并确保SQL Server配置为允许远程连接。 (提供程序:SQL Network Interfaces,错误:41-无法打开远程SQL服务器的共享内存连接)(Microsoft SQL Server,错误:87)”
命名管道:“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。验证实例名称是否正确,并确保SQL Server配置为允许远程连接。 (提供程序:Named Pipes Provider,错误:40-无法打开到SQL Server的连接)(Microsoft SQL Server,错误:1326)”
以下是我在网上看到的一些常见解决方案(当然还没有解决问题):
已在SQL Server 2008中启用了远程连接。
通过telnet到端口1433,我得到一个空白屏幕(即它连接,但没有给我错误)。
服务器上的netstat -a显示TCP端口1433已打开。
SQL Server 2008中已设置混合身份验证,因此它可以接受Windows身份验证或SQL Server身份验证。
我真的不知道该如何处理这个问题,因为我不知道(甚至是否)有详细的日志可供我浏览,以告诉我连接尝试何时开始以及每个步骤发生了什么。我希望有一个简单的解决方法,我不够了解。 < p > 更新:以下是迄今为止提出的跟进问题的答案:
以下是表现症状:
当我尝试使用ADO中的连接字符串通过VB6连接时,VB6会挂起,然后最终给出以下错误:“运行时错误'-2147467259(80004005)':[Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。”
如果我创建一个空白的.udl文件并双击它,在“数据链接属性”对话框的“连接”选项卡中,在“选择或输入服务器名称”的下拉列表中,如果我单击下拉列表以查看列表或单击“刷新”按钮,则会挂起。
当我尝试通过SQL Server 2005 Management Studio连接时(SQL Server 2005已安装在我正在处理VB6程序的客户机上),当我尝试通过以下方式进行连接时:
TCP/IP:我收到消息“此版本的Microsoft SQL Server Management Studio只能用于连接到SQL Server 2000和SQL Server 2005服务器。 (ConnectionDlg)”
共享内存:我收到消息“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。验证实例名称是否正确,并确保SQL Server配置为允许远程连接。 (提供程序:SQL Network Interfaces,错误:41-无法打开远程SQL服务器的共享内存连接)(Microsoft SQL Server,错误:87)”
命名管道:“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问。验证实例名称是否正确,并确保SQL Server配置为允许远程连接。 (提供程序:Named Pipes Provider,错误:40-无法打开到SQL Server的连接)(Microsoft SQL Server,错误:1326)”
以下是我在网上看到的一些常见解决方案(当然还没有解决问题):
已在SQL Server 2008中启用了远程连接。
通过telnet到端口1433,我得到一个空白屏幕(即它连接,但没有给我错误)。
服务器上的netstat -a显示TCP端口1433已打开。
SQL Server 2008中已设置混合身份验证,因此它可以接受Windows身份验证或SQL Server身份验证。
我真的不知道该如何处理这个问题,因为我不知道(甚至是否)有详细的日志可供我浏览,以告诉我连接尝试何时开始以及每个步骤发生了什么。我希望有一个简单的解决方法,我不够了解。 < p > 更新:以下是迄今为止提出的跟进问题的答案:
- 操作系统:Vista 64位,客户端和服务器均适用
- 据SQL Server Configuration Manager显示,SQL浏览器服务器正在服务器上运行
- 连接字符串 - VB程序中涉及的行如下: fooSQL.Open“SERVER= SERVERNAME; DRIVER = SQL Server; DATABASE = DATABASENAME”,用户名,密码 (其中fooSQL是一个ADODB.Connection)
- 当客户端或服务器(或两者皆然)关闭防火墙时仍会发生此情况
关于MDAC
根据这篇维基百科文章,我检查了HKEY_LOCAL_MACHINE \ Software \ Microsoft \ DataAccess \ FullInstallVer并且值为“6.0.6001.18000”。我还运行了Component Checker,在启动时单击“执行对您的机器进行分析并自动确定发布版本”的消息后,单击“确定”后,我收到以下消息:
“已匹配以下产品发布:
未知”
更新:SQL服务 关于gator的评论,在计算机管理>服务上运行的服务器上的SQL Services如下:
- SQL Active Directory Helper Service
- SQL Full-Text Filter Daemon Launcher (MSSQLSERVER)
- SQL Server (MSSQLSERVER)
- SQL Server Agent (MSSQLSERVER)
- SQL Server Analysis Services (MSSQLSERVER)
- SQL Server Browser
- SQL Server Integration Services 10.0
- SQL Server Reporting Services (MSSQLSERVER)
- SQL Server VSS Writer