1

我正在尝试创建到 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 上的防火墙并关闭客户端。还能够从客户端远程登录 1433,并且工作正常。
  2. 不是访问问题:我可以使用我在客户端上使用的帐户从许多不同的计算机登录,包括 SQL Server 本身(使用 SQL Server 身份验证)
  3. 我可以 ping 主机名和 IP 地址。(我都试过了)

我唯一能想到的是客户端计算机是 windows server 2003,并且具有各种角色设置:

  • 文件服务器
  • 应用服务器
  • 终端服务器
  • 域控制器
  • DNS 服务器

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

任何建议真的很感激!

4

5 回答 5

5

发现问题。出于某种原因,即使客户端上没有使用 SQL,它也已安装,通过转到所有程序 -> Microsoft SQL Server -> 客户端网络实用程序,我发现协议 TCP/IP 正在使用端口 4717。我不知道为什么要使用该端口,甚至更进一步,我不确定它为什么会很重要-我只是设置了一个 odbc 连接,而根本没有使用 sql server(在客户端上)。不管怎样,我把它改成了典型的端口(1433),就像繁荣一样,ODBC 连接就像魅力一样!

于 2012-11-15T20:44:01.053 回答
1

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

原因
此连接尝试失败的最常见原因是此 DSN 或 ODBC 数据源尝试使用 TCP/IP 套接字 Net-Library(即 Dbmssocn.dll)建立连接。因为 SQL Server 没有侦听 TCP/IP 套接字客户端的传入连接,所以连接失败。从 ISQL/w 将返回上述第二条错误消息。操作系统错误为 10061,失败的函数调用是 ConnectionOpen(connect())。

替代方法
默认情况下,SQL Server 将侦听由命名管道客户端进行的传入连接。命名管道是客户端连接到 SQL Server 4.2、6.0 和 6.5 服务器的默认 IPC 机制。命名管道 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 客户端配置实用工具将默认的网络库设置为命名管道。您可以从 i386 目录中的 SQL Server CD 安装客户端实用程序。

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

于 2012-11-15T20:19:36.173 回答
0

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

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

于 2015-02-18T17:23:37.790 回答
0

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

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

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

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

  4. 在 User DSN 或 System DSN 中,单击 Add 按钮并选择 Sql Server driver 然后按 Finish。

  5. 输入名字。

  6. 输入服务器,注意:如果要输入主机地址,则应输入该IP地址,不带“\\”。例如。192.168.1.5,然后按下一步。

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

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

  9. 如果显示的数据库是您的数据库,请单击下一步,然后单击完成。

于 2016-05-25T07:31:23.917 回答
0

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

  • 确保 UDP 端口在 Windows 防火墙中启用,SQL Server 默认 UDP 端口号为 1434。如果不存在,请在防火墙中为 UDP 1434 端口创建新的传入规则,并在 SQL 配置管理器中重新启动 SQL Server 浏览器服务。
于 2021-07-09T13:38:24.667 回答