尝试开始调试我的应用程序时,我发现(非常常见)System.Data.SqlClient.SqlException
关于"与网络相关或特定于实例的错误"显然发生了。
我已经明白这意味着我的连接字符串存在问题,但我的配置文件中有很多不同的连接字符串,用于不同的配置等,所以我&#39 ;我知道哪一个给我带来了麻烦。
当抛出此错误时,有没有办法找到正在使用的连接字符串?
答案 0 :(得分:3)
不一定是连接字符串问题,但无法连接到数据源......例如。网络连接问题
最直接的做法是调试应用程序。抛出异常时,您可以轻松遍历调用堆栈,直到调用SqlConnection.Open
,您将能够看到整个连接字符串。如果您直接使用System.Data.SqlClient
提供商的课程
如果您正在使用ORM工具,可能会稍微困难一点,您需要参考该特定工具的文档才能输出调试和/或跟踪信息
希望我能更具体,但步骤取决于您如何设置数据访问逻辑,因为它从一种方法到另一种方法的差异很大
我进入并打开了一个使用Fluent NHibernate的项目,故意拼写表名,故意在下面的实体映射中创建了一个错误...
internal class RiskLevelDOMap : ClassMap<RiskLevelDO>
{
internal RiskLevelDOMap()
{
Id(x => x.Id);
Map(x => x.MatrixId, "RiskMatrixId");
Map(x => x.DisplayText).Length(256);
Map(x => x.Description).Nullable().Length(2000);
Map(x => x.BackgroundColor).Nullable().Length(64);
Map(x => x.ForeColor).Nullable().Length(64);
Map(x => x.DisplayInReports);
Map(x => x.IsActive);
Table("rm_RiskLevel1");
}
}
运行调试器并查看下面附带的屏幕截图...纯文本中的连接字符串...
但是,值得注意的是,我确实有一个非常结构良好的数据访问实现,我在那里吐出了大量的调试信息
答案 1 :(得分:0)
在Debug菜单(Visual Studio)的例外对话框中,您可以启用调试器以专门停止此错误(System.Data.SqlClient.SqlException),然后您可以上调调用堆栈并查看正在使用哪个字符串二手...
答案 2 :(得分:0)
一种方法可能是记录ClientConnectionId
。假设连接已建立,SqlConnection
和SqlException
都可以使用这些内容。
ClientConnectionId
ClientConnectionId
ClientConnectionId
。