【问题标题】:provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server, pgsql提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server、pgsql 的连接
【发布时间】:2016-09-28 07:15:21
【问题描述】:

我正在使用 Dapper 连接到 pgsql 数据库。下面的代码几天前就可以工作了。但不知道为什么它现在不起作用。相同的凭据适用于 pgadmin3,但不适用于 c# 代码。 这是控制器方法,为简单起见,我在Get方法中编写了所有db代码。

下面的代码是

public IEnumerable<Item> Get()
    {
        string connString = "Server=192.168.1.11;Database=db_alpha1;Uid=postgres;Pwd=xxxxxx";

        using (IDbConnection db = new SqlConnection(connString))
        {
            db.Open();

            return db.Query<Item>("Select * From items").ToList();
        }
    }

这是db.Open();线上的错误:

与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)

另外,我已经配置了pg_hba.conf文件,添加了我的系统ip地址。

【问题讨论】:

  • SqlConnection是一个用于连接Sql Server的类。您应该使用 Npgsql ADO.NET 提供程序中的适当类
  • 我正在使用 Dapper 库进行数据库连接,我认为这是正确的连接方式,即使几天前它还在工作。
  • 不行,SqlConnection 是用于 Sql Server 的,要使用 Postgres,您应该使用 this。 Dapper 与连接数据库的代码无关。这是通过库存 NET 类(SqlConnection、OleDbConnection)或通过特定的 ADO.NET 提供程序(MySqlConnection、OracleConnection 和NpgsqlConnection)完成的
  • 哦,谢谢史蒂夫,这是我的错误,我在另一个项目中使用了 ngpsql,现在它可以工作了。用 SqlConnection 替换 NpgsqlConnection 。

标签: c# postgresql asp.net-web-api2 dapper


【解决方案1】:

感谢@Steve。问题已解决,这是一个愚蠢的错误,我更换了 SqlConnection 与 NpgsqlConnection,并添加了 npgsql 包。

【讨论】:

    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 2011-03-08
    • 2013-05-14
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多