gpt4 book ai didi

c# - 无法打开与数据库的连接”在 C# 中创建表适配器时

转载 作者:太空狗 更新时间:2023-10-30 01:17:43 26 4
gpt4 key购买 nike

所以,我正在维护一个前同事做的软件。
他使用 xsd 为他的报告和其他内容创建 TableAdapter。

问题是,我需要添加一个新的 TableAdapter 并且出现上述错误。它还说“与 SQL Server 建立连接时发生与网络相关或特定于实例的错误”。

我在这里不知所措,我不知道该怎么办。以下是事实:

  • 我有 2 个连接字符串,一个用于生产环境,一个用于开发环境(我的电脑)。
  • 当我转到设置然后转到连接字符串的编辑窗口时,我点击了“测试连接”,它说它工作正常。
  • SQL Server 2008R2 和 Visual Studio 2010 都在同一台机器上,我的机器。
  • 我没有命名实例。
  • 我右键单击 xsd 设计 View ,然后单击“添加 -> TableAdapter”并使用本地连接字符串(我已经测试并使用过的字符串)
  • 我单击“使用现有存储过程”,然后单击 [下一步]。然后我可以为 Select 部分选择一个存储过程,我可以看到列。
  • 我单击完成,系统锁定了一段时间,然后出现错误。
  • SQL Server 配置中启用了命名管道、TCP/IP。

  • 我有点迷茫,我已经在这上浪费了 2 天。我已经尝试了我所知道的很少,但没有任何效果。我希望我能在你的智慧中找到帮助。

    很抱歉这篇长文章,但我想一次性提供尽可能多的信息。

    Connection test

    Services status

    Protocol Status

    Connection Selection when creating the TableAdapter

    Stored procedure selection

    Error

    SQL Server Instance

    最佳答案

    好的,经过一些试验和错误,我找到了解决方案。至少,我让它在我的环境中工作。

    @Rusland 所说的让我思考,我搜索了另一个设置文件。它不存在。然后我决定删除连接字符串和设置文件以查看项目是否已编译。正如预期的那样,它抛出了大量错误。

    所以,它不是文件。

    我决定一一添加连接字符串并在添加它们时进行测试。我添加的第一个是开发中使用的连接字符串 (localConStr)。表适配器的配置如第一张图所示。如您所见,localConStr 仅在这一次被选中(一如既往),只有一个连接字符串我收到了一个错误,这是一个与以前不同的错误。第二张图中的那个。

    如果没有对它的引用,TableAdapter 怎么可能要求该连接字符串?我删除了它,我的表适配器的 Connection 属性设置为 本地 构造所以...我做了任何绝望的人都会做的事情:CTRL+F 并找到对 rptTbl_loansAgingTableAdapter 的所有引用。我唯一的理由是在代码的某个地方,连接字符串可能是我的前任硬编码的。值得一提的是:我专门使用“loansAgingTableAdapter”作为搜索条件,因为这是我在第一个实例中试图修改的一个 TableAdapter。

    几分钟后,我在代码级别浏览 XSD(它只是一个 XML),令我惊讶的是,我发现了一个名为 Connection 的元素,除了两个!为了清楚起见,直到今天我都没有接触过这个文件(我的意思是,我没有手动接触过它,IDE 已经进行了任何更改)
    两个连接字符串是:

    <Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="localConStr"...


    <Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="loanConStr" ...

    是的,我知道它们看起来很像,但请注意它们是 本地 和贷款。我决定删除第二个 (loanConStr) 因为它不再在我的设置文件中(loanConStr 是我前任留下的原始连接字符串,localConStr 是我创建的,以便我可以在运行时切换连接字符串而不是修改连接每次我必须进行更改并再次部署时重新编译)。

    之后,我确保我的 DataSet 中的所有 DataTables 都使用相同的连接字符串 (localConStr) 并重新编译。然后我尝试了给我带来麻烦的事情:
  • 第一:我新建了一个DataTable:操作成功
  • 第二:我修改了一个现有的DataTable:再次成功

  • 最后,但并非最不重要的是,我尝试执行报告。我运行了应用程序并转到报告并成功!显然,我的问题解决了。

    发生了什么事?我不确定,但如果我不得不猜测,我会说 TableAdapter 试图使用一个连接字符串,该字符串指向我的网络中不存在的服务器(我的客户端服务器),因此,每次我尝试配置时它或更改任何内容,Visual Studio 无法联系该服务器,这就是我遇到连接错误的原因。

    为什么在显式指定本地连接字符串时 TableAdapter 尝试使用该连接字符串?我不知道,但在 XSD 中只有一个连接字符串是我的解决方案。

    作为旁注,您可能会问“但是 Compa,当用户想要运行使用 localConStr 的报告时会发生什么?”很简单,当报告窗口打开时,我在运行时更改了连接字符串,整个应用程序都在使用该窗口。

    抱歉,帖子太长,如果您想要 TL;DR 版本 :
    转到您的 xds 数据集文件,删除所有不需要的连接字符串,然后转到设计 View 并确保您的所有 TableAdapter 使用您的 xsd 中指定的唯一 ConnectionString

    Properties Error

    关于c# - 无法打开与数据库的连接”在 C# 中创建表适配器时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30763186/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com