3

我们有一个应用程序,我们的客户端通过 SQL Native Client ODBC 数据源连接到 SQL Server 2005 数据库。我们在程序执行期间 ODBC 连接被切断时遇到了一些困难。在询问技术支持人员后,他说他以前见过这种类型的错误,但他们通过将客户端配置为使用命名管道(主要)而不是 TCP/IP 连接来解决问题。

所以我做了一些研究,找到了在服务器上配置客户端访问的位置——通过 SQL Server 配置管理器。但是,似乎没有办法在客户端机器上配置 SQL Native Client ODBC 数据源。较旧的 SQL Server ODBC 驱动程序允许您将其配置为使用命名管道或 TCP/IP,但 SQL Native Client 不允许。

SQL Native Client 数据源是否自动决定使用哪种方法连接数据库?有没有办法配置它?......有没有办法找出特定客户端机器正在使用哪种方法进行连接?

任何帮助,将不胜感激。

——谢谢迈克 C。

4

3 回答 3

5

注意你可以设置连接字符串中使用的协议,不需要配置机器。我建议不要使用 cliconfg 更改机器配置,因为这会影响机器上运行的所有应用程序。

所以有两种方法来设置网络协议。

  1. 使用协议前缀:

    Server=tcp:myserver
    Server=np:myserver

    tcp:前缀表示使用 tcp 协议。 np:前缀表示使用命名管道协议。只需将其粘贴在您要连接的服务器名称的前面。

  2. 第二种方法是在连接字符串中设置 Network 关键字:

    Network=dbmssocn
    Network=dbnmpntw

我更喜欢协议前缀,因为我永远记不住这些网络类型的缩写。

于 2011-08-10T22:35:41.743 回答
1

也许这会让你继续:

4) 如果您使用 SQL Native Client ODBC/OLEDB 提供程序({SQL Native Client} 或 SQLNCLI),请转到 SQL 配置管理器,单击客户端协议,确保 NP 和 TCP 都已启用。右键单击NP的属性,确保客户端使用与服务器相同的管道名称进行连接。

该节点实际上是“SQL Native Client Configuration”,您可以从那里更改优先级并禁用。

来自 http://blogs.msdn.com/sql_protocols/archive/2007/03/31/named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server.aspx

于 2008-12-02T20:38:41.940 回答
0
  1. 不确定命名管道是否能解决 ODBC 连接中断问题。如果没有首先确定问题的根源,我不会指望命名管道。不过我可能是错的。你能看到任何可以解释这个问题的错误吗?这可能与网络有关。

  2. 否则,我认为在客户端机器上配置它应该很容易:只需运行 cliconfg(SQL Server 客户端网络实用程序)。在 General 选项卡中确保启用了 Named Pipes 协议,然后导航到 Alias 选项卡并使用 Named Pipes 为您的服务器创建一个别名。

祝你好运。

于 2008-12-31T21:46:09.863 回答