连接SQL Server 2008遇到问题

4
我正在处理一个使用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 > 更新:以下是迄今为止提出的跟进问题的答案:

  • 操作系统: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

我建议在这里发布您正在使用的连接字符串...它是拼图中的重要部分。 - Scroll Lock
你的服务器上是否运行了SQL浏览器服务器? - Jeroen Landheer
你连接的客户机是什么操作系统? - Jeremy
客户端上的MDAC版本是多少? - Jeremy
你发布的连接字符串 - 它是你实际使用的连接字符串吗?你的服务器真的叫做'SERVERNAME',数据库叫做'DATABASENAME'吗? - dsteele
我现在也遇到了完全相同的错误!规格也一样。 - lb.
5个回答

2

0
非常重要的一個問題是在MSSQLSERVER後安裝Active Directory!首先,我要說,如果您想在Active Directory之後安裝它,您將收到來自MS SQL的消息!因此,您需要在AD之前安裝MS SQL。
經過檢查常見問題後:
1- 在“SQL Manager”中通過右鍵單擊“服務器名稱”,然後從左側菜單中選擇“連接”,再單擊“屬性”,允許從遠程連接到該服務器。
2- 在“SQL Server Configuration Manager”的“SQL Server Network Configuration”中啟用TCP/IP。
3- 在“SQL Server Configuration Manager”的“SQL Server Network Configuration”中啟用命名管道。
4- 確保在“SQL Server Configuration Manager”的“SQL Server Services”中啟動了“SQL Server Browser”。
5- 在本地計算機的“Windows Firewall with Advanced Security”中打開1433端口(默認)為MSSQLSERVER。
最後,請確保Active Directory正在運行。
我的問題是,我刪除了Active Directory,但我忘記了用戶仍然在域空間中,所以我必須重新安裝“Active Directory Domain Service”。
此致敬意。

0

尝试安装SQL 2008管理工具,并通过TCPIP从VB6机器连接。我还建议尝试安装最新的(2008)ODBC驱动程序。


0
SQL Server 2008是安装为默认实例还是命名实例?如果是命名实例,那么您需要微调连接字符串才能与其通信。
当您通过RDP连接到计算机时,能否使用客户端工具对本地SQL Server实例进行身份验证?

我能向你购买一些大麻吗?:p不开玩笑了 - 我知道你的话是有帮助的,但是我对你说的几乎一无所知。你能为我简化一下吗?首先,我该如何判断SQL Server 2008是作为默认实例还是命名实例安装的? - user15486
此版本的Microsoft SQL Server Management Studio仅可用于连接SQL Server 2000和SQL Server 2005服务器。(ConnectionDlg)您使用的SQL 2005客户端工具是否升级到Service Pack 3?当您RDP到框时,您可以使用本地工具进行连接吗?如果可以,它们是使用“\servername\SQLServerName”类型的连接还是只是“localhost”类型的连接?此外,当您在“计算机管理”中查看计算机上运行的服务时,它是否将SQL Server列为“SQL Server(MSSQLSERVER)”或是否有其他相关内容? - Gator
是的,Service Pack 3已安装。我仍然不知道如何查看他们是否进行了“\servername\SQLServerName”或“localhost”连接。在运行SQL Server Management Studio时弹出的登录屏幕中,在“服务器”文本框中输入“SERVERFOO-PC”(服务器名称),如果这就是你的意思。此外,我还更新了问题,列出了计算机管理>服务中运行的SQL服务列表,因为我在此评论中没有足够的空间来这样做(但简短的答案是“它不仅仅是SQL Server(MSSQLSERVER)”)。 - user15486

0
Jordan(或者未来的读者),解决这类问题的至少一个方法是确保同时指定服务器名称和实例名称(即使各种工具,如迁移助手或连接字符串,如上面所示,只提示输入服务器名称)。
例如,在您的情况下,似乎应该是serverfoo-pc\mssqlserver。或者运行Express的人会使用servername\sqlexpress,或者如果将实例名称更改为其他内容,则使用该名称。如果客户端工具与SQL Server在同一台计算机上,则可以使用.\代替servername\,例如.\sqlexpress。
我认为这就是Gator想表达的意思,但在你们的来回交流中没有明确说明。希望能对你有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接