诊断与SQL Server的连接

时间:2012-11-15 20:00:58

标签: sql-server connection odbc

我正在尝试创建与SQL Server的ODBC连接,但是当我这样做时,我收到错误:

Connection failed:
SQLState: '01000'
SQL Server Error: 10060
[Microsoft][ODBC_SQL Server Driver][TCP/IP Sockets] COnnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC_SQL Server Driver][TCP/IP Sockets] SQL Server does not exist or access denied.

这是我尝试过的:

  1. 不是防火墙问题:尝试关闭SQL Server上的防火墙,并关闭客户端。也可以从客户端telnet 1433,并且工作正常。
  2. 不是访问问题:我可以使用我在客户端上使用的帐户(使用SQL Server身份验证)从许多不同的计算机登录,包括SQL Server本身
  3. 我可以ping主机名和IP地址。 (我已经试过了)
  4. 我唯一能想到的是客户端计算机是Windows Server 2003,并且设置了各种角色:

    • 文件服务器
    • Application Server
    • 终端服务器
    • 域控制器
    • DNS服务器

    我不知道为什么要设置这些服务,但暂时我无法关闭它们。它是否是其中任何一个,如果有的话,是否有办法禁用它们的任何方面,这可能会阻止SQL。

    任何建议真的很感激!

5 个答案:

答案 0 :(得分:4)

发现了这个问题。出于某种原因,即使SQL未在客户端上使用,它也已安装,并且通过转到所有程序 - > Microsoft SQL Server - >客户端网络实用程序,我发现protocal TCP / IP使用端口4717.我不知道为什么这个端口正在使用,甚至更进一步,我不知道为什么它甚至会重要 - 我只是建立一个odbc连接,而不是使用sql server(在客户端上)。无论哪种方式,我将其更改为典型端口(1433),并且像繁荣一样,ODBC连接就像魅力一样!

答案 1 :(得分:0)

有问题的服务器是否可能未配置为使用命名管道?

  

原因
  此连接尝试失败的最常见原因是   此DSN或ODBC数据源尝试使用连接进行连接   TCP / IP套接字Net-Library,即Dbmssocn.dll。因为SQL   服务器未侦听TCP / IP套接字的传入连接   客户端,连接失败。从ISQL / w,第二条错误消息   如上所述将被退回。操作系统错误是10061,而且   失败的函数调用是ConnectionOpen(connect())。

     

替代方法
  默认情况下,SQL Server将侦听传入连接   由Named Pipes客户制作。命名管道是默认的IPC机制   客户端连接到SQL Server版本4.2,6.0和6.5   服务器。命名管道DLL是Dbnmpntw.dll,它应该被找到   在Windows \ System或Winnt \ System32目录中。 TCP / IP套接字   netlib DLL是Dbmssocn.dll,也应该在Windows \ System中   或Winnt \ System32目录。这个问题最常见的解决方案   是配置客户端计算机使用命名管道进行连接。   配置命名管道如果Microsoft数据访问组件(MDAC)   已经在计算机上安装了ODBC驱动程序,你可以做到这一点   在“创建新数据源”向导的第二步中进行更改。

     

注意:您可以从以下位置下载MDAC驱动程序:

     

http://msdn2.microsoft.com/en-us/data/aa937730.aspx配置   客户端,启动“创建新数据源”向导,单击“客户端”   配置按钮,并执行以下步骤,基于   您正在使用的SQL Server ODBC驱动程序的版本:

     

对于SQL Server ODBC驱动程序版本3.50

Click the Net Library tab and use the drop down list box to set the 
default network (Net Library) to Named Pipes.
On the Advanced tab, remove any advanced entries that reference the 
server you are connecting to.
Click Done.
     

对于SQL Server ODBC驱动程序版本3.70

In the Network Libraries section of the Edit Network Library Configuration 
dialog box, select Named Pipes.
Click OK.
     

如果您没有安装MDAC ODBC驱动程序,则可以使用   SQL Server客户端配置实用程序工具设置默认值   Net-Library到命名管道。您可以从中安装客户端实用程序   来自i386目录的SQL Server CD。

来源:http://support.microsoft.com/kb/195566

答案 2 :(得分:0)

默认情况下,SQL Native Client似乎在寻找MSSQLSERVER实例。但是,如果您使用SQLEXPRESS,则所有连接都将失败。

非常奇怪,但尝试使用MSSQLSERVER实例名称安装SQL Server - 它应该可以工作!

答案 3 :(得分:0)

要为SQL Server创建新的数据源,请执行以下步骤:

  1. 在主机/服务器上转到Sql server management studio - >左手打开安全部分 - >右键单击Login,选择New Login,然后为要连接的数据库创建一个新帐户。

  2. 检查TCP / IP协议是否启用。转到所有程序 - > Microsoft SQL Server 2008 - >配置工具 - >打开Sql server配置管理器。在左侧选择客户端协议(基于您的操作系统32/64位)。在右侧,选中要启用TCP / IP协议。

  3. 在远程计算机/服务器中,打开数据源管理员。控制面板 - >管理工具 - >数据源(ODBC)。

  4. 在用户DSN或系统DSN中,单击“添加”按钮并选择“Sql Server驱动程序”,然后按“完成”。

  5. 输入姓名。

  6. 输入服务器,请注意:如果要输入主机地址,则应输入该地址而不输入“\\”。例如。 192.168.1.5并按Next。

  7. 使用用户输入的登录ID和密码选择使用SQL Server身份验证。

  8. 在下面输入您在第一步创建的登录ID和密码。然后单击“下一步”。

  9. 如果显示Database是您的数据库,请单击Next,然后单击Finish。

答案 4 :(得分:0)

为上述所有答案添加另一个检查点。如果您使用的是 Sql Server 的命名实例 (ServerName\InstanceName)

,则有效
  • 确保使用 SQL Server 默认 UDP 端口在 Windows 防火墙中启用 UDP 端口 编号 1434。如果不存在,请在防火墙中为 UDP 1434 端口创建新的传入规则,然后在 SQL 配置管理器中重新启动 SQL Server 浏览器服务。