【问题标题】:The same connection succeed and fails in different .net solutions相同的连接在不同的 .net 解决方案中成功和失败
【发布时间】:2013-05-29 13:41:59
【问题描述】:

我有两个 .net 解决方案。 他们都有这个代码:

var connectionString = "Server = ServerName; Database = DatabaseName; Trusted_Connection=True;"
var connection = new SqlConnection(connectionString);

connection.Open();
connection.Close();

它们都使用完全相同的连接字符串。它们连接到 MSSQL Server;

在第一个解决方案 connection.Open() 中成功,在第二个解决方案中失败。 错误消息:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接

每次我创建新解决方案时都会失败。所以这种连接只适用于一种特定的解决方案。而且,我的队友对此进行了测试,并没有出现此类问题。 你能帮忙提示一下为什么会这样吗?

【问题讨论】:

  • 抛出什么异常
  • 如果您不提供错误信息,您希望我们如何帮助您?
  • 所有这些不同的 .net 解决方案都可以在您的计算机上运行吗?
  • 应用程序/解决方案的类型是什么。 Trusted_Connection 将使用我相信的当前用户上下文,这将是桌面应用程序的登录用户,但可能是 Web 应用程序的不同帐户(网络服务、IIS 用户)
  • 其中一个解决方案是通过 IIS 执行的,而另一个不是吗?这表明使用了不同的用户进行连接,并且其中一个用户没有连接权限。

标签: c# .net sql-server ado.net


【解决方案1】:

检查您的 SQL 服务器是否启用了 TCP/IP 协议,如果它使用动态端口,请确保 SQL 浏览器服务正在运行。

确保任何防火墙软件(Windows 防火墙等)都为特定 exe 添加了例外(sqlservr.exe 文件被复制到实例文件夹中,该文件夹位于 C:\Program Files\Microsoft SQL Server\{instance name}\MSSQL\Binn 中,其中实例名称可能看起来像如MSSQL11.SQLEXPRESS) 或 TCP 端口 1433 或 UDP 端口 1434(假设标准设置,SQL 服务本身的 TCP 1433,SQL Browser 服务的 UPD 1434)。

检查用于访问服务器的用户帐户(它还应该有足够的权限并且应该启用登录),在这种情况下,它将是您登录的任何 Windows 帐户或您的 IIS 应用程序池的任何帐户运行为,因为您使用的是Trusted_Connection=True

还要检查你的机器上是否有最新的 SQL 客户端,你可以获得最新版本的 windows here

【讨论】:

    【解决方案2】:

    打开 Sql Server 配置管理器并确保为您的 Sql server 实例启用了命名管道选项。

    【讨论】:

      【解决方案3】:

      抱歉打扰了。我的问题是我的注意力不集中。我在另一台网络机器上创建了解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 1970-01-01
        相关资源
        最近更新 更多