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

时间:2015-06-10 17:22:24

标签: c# sql-server

所以,我正在和一位前同事做过软件。 他使用xsd为他的报告和其他东西创建TableAdapters。

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

我在这里失去了,我不知道该怎么办。以下是事实:

  • 我有2个连接字符串,一个用于生产环境,一个用于开发环境(我的电脑)。
  • 当我进入设置,然后是连接字符串的编辑窗口时,我点击了“测试连接”,它说它工作正常。
  • SQL Server 2008R2和Visual Studio 2010都在我的机器上。
  • 我没有命名实例。
  • 我右键单击xsd设计视图,然后单击“添加 - >> 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

2 个答案:

答案 0 :(得分:4)

好的,经过一些试验和错误,我找到了解决方案。至少,我让它适用于我的环境。

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

所以,这不是文件。

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

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

几分钟后,我在代码级导航XSD(它只是一个XML),令我惊讶的是,我找到了一个名为 Connection 的元素,但没有一个,只有两个!为了说清楚,这个文件直到今天都没有受到我的影响(我的意思是,我没有手动触摸它,IDE已经做了任何更改) 两个连接字符串是:

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

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

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

之后,我确保DataSet中的所有DataTable都使用相同的连接字符串( localConStr )并重新编译。然后我尝试了让我烦恼的事情:

  • 首先:我创建了一个新的DataTable:操作成功
  • 第二:我修改了现有的DataTable:再次成功

最后,但并非最不重要的是,我试图执行报告。我运行了应用程序,然后去了报告并取得了成功!显然,我的问题已经解决了。

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

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

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

很抱歉这篇文章很长,如果你想要一个 TL; DR版本转到xds数据集文件,删除任何不需要的连接字符串,然后转到设计视图并确保所有TableAdapter都使用xsd中指定的唯一ConnectionString

Properties Error

答案 1 :(得分:0)

看起来您正好看到了数据库。 (因此,您将获得存储过程列表)。

尝试程序本身的权利。

GRANT EXECUTE on [dbo].[rpt_loansAging] to [TheSqlAuthenticationUserNameWeCannotSeeInTheScreenShot]

APPPEND

由于您已经尝试了其他所有方法,请尝试打开一个新的VS项目(相同版本的VS和Target Framework)并尝试以相同的方式添加TableAdapter。

如果有效,那么你就会继续伏都教。您可以在原始项目中删除并重新创建它们。

每一个蓝色的月亮,有些东西都出现了错误的Visual Studio,特别是以VS2003开始的项目,升级到VS2005,可能升级到VS2010(无论组合)。

我有一个项目,我从VS2003升级到VS2005,它在我的电脑上运行良好。在构建机器上,它开始失败........不知道它是什么。

我最终在&#34; By Project&#34;中看到了一些小异常。引用。我只是删除了所有&#34; By Project&#34;引用(在.sln解决方案中)......并重新添加&#34;按项目&#34;引用,它修复了一切。

去图。