C# sql 实例化,是否可以列出对象实例上下文中未释放的所有 sql 连接?

标签 c# sql

我收到了一些与代码块相关的非常愚蠢的错误,我知道这些代码块绝对可以在自行清理后进行清理。

本质上,我有一个 N 层应用程序框架,它调用“数据提供者”,而“数据提供者”又与 SQl 数据库对话。

我想对数据提供者说“显示所有已使用但尚未处置的连接”,这样我就可以在需要时“强制处置”任何不应打开的连接。

如果我不能在 C# 中执行此操作,Sql 服务器上是否有其他替代方案可以让我深入了解正在发生的情况?

编辑:

在这个实例中,代码是从应用程序中的任何位置调用的,该应用程序基于调用 API 层中单个位置的业务对象实例。 API 层公开一个调用方法的接口(interface)。

我希望让实现接口(interface)的对象或 API 层查看调用堆栈并决定等待、抛出异常或进行调用(打开一个新连接)。

我发现的问题是,我有一个像“人”这样的业务对象,它有一个名为“车辆”的属性,并且是一个车辆类型的对象,其中包含一个名为“所有者”的属性,这当然指回了父对象。

现在,由于我的编码错误,系统进入了一种循环,在 2 个对象的嵌套实例之后创建嵌套实例。

所以修复非常简单......至少在 2 个级别中的 1 个级别上进行延迟加载,或者完全删除循环引用。

但是,我仍然想在运行时查看我的调用堆栈并提出问题......如果我尝试创建此业务对象的实例,这会导致问题吗?

这让我开始思考缓存(稍后将在 API 层中实现)...如果它到位,连接过多的问题就会消失,但会被更大的“我要咀嚼”所取代所有你的内存”问题。

所以我开始思考...为什么我不能分析调用堆栈?

答案...

如果我写出好的代码,我就不必这样做......但我仍然想:)

最佳答案

不了解 C#,但在 Sql Server 中您可以使用该查询来监视打开的连接:

1.获取数据库列表和连接数

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame

2.获取用户的所有连接 - sp_who 'userName'

3.获取连接信息DBCC INPUTBUFFER(1)

关于C# sql 实例化,是否可以列出对象实例上下文中未释放的所有 sql 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5258729/

相关文章:

c# - View 和 View 模型之间的快捷方式(Visual Studio 2012)

sql - 数量未知的 PostgreSQL 一对多

javascript - sequelize 不在关联模型数据中包含联结表

c# - 无法通过 JSON-RPC 将 CREATEAWTRANSACTION 发布到比特币核心

c# - 如何检查值类型的值是否为 IntPtr.Zero

javascript - Jquery - 尝试将数据发送到Ajax,但数据为空

c# - Silverlight 3 浏览器之间的不同行为

sql - 在SQL Server中增加整数

mysql - 何时/为何使用(组合)索引?

sql - Electron 和Sqlite : SQLITE_NOTADB: file is not a database