使用命名管道阻止Linq2SQL?

时间:2009-03-25 20:05:38

标签: sql linq linq-to-sql

我有一个很好的小Linq2SQL项目但是在部署时数据库在另一台服务器上。我一直收到远程服务器不存在的命名管道错误 - 但是它确实启用了命名管道(协议+表面)SQL 2005. TCP连接工作正常。

我已经尝试将连接字符串中的库设置为TCP,我尝试在服务器名称中强制使用TCP,但是Linq始终只使用命名管道而且无法正常工作。

如果可能的话,任何想法如何强制Linq2SQL仅使用TCP / IP?

感谢

3 个答案:

答案 0 :(得分:2)

我的猜测是,您没有在DBML设计器文件上将连接字符串设置为None,而该文件正在为您创建类型化数据上下文。将连接字符串设置为None(确保选择设计器上没有任何内容),然后手动传入连接字符串,以确保您完全控制它。

如评论中所述,您无法将连接字符串设置为无。

在这种情况下,仍然存在类型为DataContext的重载,它将连接字符串作为参数。我建议首先使用硬编码,看它是否有效。如果是,那么您知道它是配置文件中项目的分辨率。否则,您知道要查看连接字符串本身。

另外,如果配置文件中的分辨率有问题,我通常将其放在我的连接字符串部分 FIRST 中以清除machine.config文件中的条目:

<clear />

答案 1 :(得分:0)

如何更改SQLConfiguration管理器中的协议顺序或使用客户端上的命令工具 cliconfig 并在那里更改它。

答案 2 :(得分:0)

我见过这种情况发生在(其中任何一种):

  • SQL客户端版本不是您期望的版本
  • 正在使用Windows身份验证,通常是无意中
  • 您提供的连接信息与服务器自己的名称不匹配。 (即,select @@server_name不会返回与NETBIOS名称相同的内容。使用sp_dropserver和sp_addserver修复)

有时在客户端计算机上重新安装MDAC会有所帮助,显然是因为驱动程序看起来像是在那里但是没有完全正常工作。

希望这会有所帮助......