【问题标题】:Could not connect to SQL Server but Excel and ODBC config can无法连接到 SQL Server,但 Excel 和 ODBC 配置可以
【发布时间】:2014-04-18 23:34:39
【问题描述】:

我有一个 C# 程序来连接到 SQL Server。它在使用 SQL Server 2012 的测试计算机上运行良好,但在使用 2008 的生产环境中无法正常运行。在生产环境中,它会报告异常,

未处理的异常:System.Data.SqlClient.SqlException:网络相关或在 建立与 SQL Server 的连接时发生特定于立场的错误。钍 找不到或无法访问服务器。验证实例名称是否为 c orrect 并且 SQL Server 配置为允许远程连接。 (提供者: 命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)-- -> System.ComponentModel.Win32Exception: 访问被拒绝

这是我的连接代码,

connStrSql = "Server=" + sqlserver + "; Database=" + sqldb + "; Trusted_Connection=True";
SqlConnection sqlConn = new SqlConnection(connStrSql)
sqlConn.Open();

目标平台是x86,目标框架是4.5。有趣的是,Excel 和 ODBC 配置可以毫无怨言地连接到数据库。 C# 程序是否使用不同的方式连接到 SQL Server?我该如何解决这个问题?

【问题讨论】:

  • 您是否正在尝试远程连接到 SQL Server?
  • 是的,我应该尝试不同的网络库,比如 tcp,而不是默认的命名管道?
  • 好的。 Excel 对 SQL Server 来说是远程的还是本地的?
  • Excel 也是远程的。 Excel 和我的程序在同一台计算机上,但 sqlserver 在另一台服务器上。
  • 有不同的客户端协议可用于连接到 SQL Server。这些可以启用/禁用。您知道生产 SQL Server 启用了哪些客户端协议吗? View 可以通过 Sql Server 配置管理器进行检查。

标签: c# excel sql-server-2008 ado.net sql-server-2012


【解决方案1】:

您无法连接到 SQL Server 数据库的可能原因有很多。 This 是一个很好的故障排除指南,可以帮助您解决上述错误。

简单地说:

  1. SQL Server 服务是否正在运行?
  2. 是否已配置 SQL Server TCP/IP 设置?
  3. 防火墙设置是否允许 SQL Server 通过?
  4. 是否已将 SQL Server 本身配置为允许远程连接?

其他需要考虑的事项

  1. sqlserver 的值是否正确?
  2. 您用于连接 SQL Server 的客户端协议(例如 Named Pipes)是否已启用?

【讨论】:

  • 我相信 sqlsever 正在运行,因为我可以在生产服务器上使用 Excel 从该 sqlserver 获取数据。最令人困惑的部分是 Excel 在这种情况下工作得很好,但我的程序却没有。如果 Excel 可以正常工作,是不是意味着 sqlserver 已正确配置为远程连接,为什么我的程序不应该。
【解决方案2】:

在较新版本的 SQL Server 中远程连接被拒绝的最常见原因之一是未打开 SQL 浏览器。安装后默认关闭。另一个常见原因是您没有打开特定协议(在本例中为网络管道),但我会先检查 SQL 浏览器,因为它可能已关闭。

【讨论】:

    【解决方案3】:

    可能是生产中的防火墙/安全限制 - 尝试针对本地 SQL2008 数据库运行,因为我只是针对 SQL2008 运行代码,它确实可以使用正确的 sqlserver 和 sqldb 参数并更改下面的行(缺少;)

    SqlConnection sqlConn = new SqlConnection(connStrSql);

    【讨论】:

      【解决方案4】:

      为 SQL Server 连接试试这个:

      在连接到本地 SQL Server Express 实例时附加数据库文件

      Server=.\SQLExpress;AttachDbFilename=C:\MyFolder\MyDataFile.mdf;Database=dbname;
      Trusted_Connection=Yes;
      

      在连接到本地 SQL Server Express 实例时附加位于数据目录中的数据库文件

      Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;
      Trusted_Connection=Yes;
      

      试试这个 Excel 连接字符串

      Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
      Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
      

      如果有其他关于连接字符串的问题,请参考本站

      MS-Excel:http://www.connectionstrings.com/excel/

      MS SQL 服务器:http://www.connectionstrings.com/sql-server/

      谢谢, 注意

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-29
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 2019-02-09
        • 2012-01-14
        • 2011-07-28
        • 1970-01-01
        相关资源
        最近更新 更多