试图通过发出"sp_reset_connection"来理解Sql Profiler的含义.
我有以下,"exec sp_reset_connection"行后跟BatchStarting和Completed,
RPC:Completed exec sp_reset_connection
SQL:BatchStarting SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
Run Code Online (Sandbox Code Playgroud)
基本上第一行"exec sp_reset_connection"意味着整个过程(我的连接被打开,选择stmt运行,然后连接关闭并释放回池)刚刚发生?或者我的联系仍处于开放阶段.
而且,为什么sp_reset_connection在我自己的select语句之前执行,不应该在用户的sql之后复位吗?
我想知道有什么方法可以更详细地了解连接何时打开和关闭?
通过查看"exec sp_reset_connection",这是否意味着我的连接已关闭?
sql-server database-connection sql-server-profiler sp-reset-connection
我想为我的c#应用程序中的某些进程应用一些sql-session级别设置.
例如,我想DEADLOCK_PRIORITY为一些后台进程设置LOW.
问题是:
如果我打开一个新的SQL连接,那会启动一个新的sql-session吗?
sql-session会一直存在,直到连接关闭?如果我在SqlConnection打开后立即应用我的设置,它们是否对在相同的情况下执行的所有查询有效SqlConnection?
连接池怎么样?这可能是我的SET DEADLOCK_PRIORITY LOW设置将被我的系统中的其他进程(我不想要)重用,因为SqlConnection实际上并没有关闭(asp.net连接池决定重用它).
谢谢!
我有一个带有两个类A和B的应用程序.类A有一个对类B的引用.类的析构函数执行一些资源清理,但它们必须按正确的顺序调用,首先是A的析构函数和那么B的析构函数
发生的事情是,以某种方式首先调用B的析构函数,然后A的析构函数崩溃,因为它试图从已处置的对象执行方法.
GC的这种行为是否正确?我希望GC检测到A有对B的引用,然后先调用A析构函数.我对吗?
谢谢伙伴们!
PD:如果对析构函数/终结器/处理器等有疑问,那就是我们所拥有的:
~A()
{
this.Dispose();
}
~B()
{
this.Dispose();
}
Run Code Online (Sandbox Code Playgroud) GC.SuppressFinalize(object)多次呼叫有什么缺点吗?处置模式的
受保护Dispose(bool)方法检查之前是否调用它,但是在公共方法中没有这样的检查.Dispose()
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (_Disposed)
return;
if (disposing)
{
// Cleanup managed resources.
}
// Cleanup unmanaged resources.
_Disposed = true;
}
~MyClass() { Dispose(false); }
Run Code Online (Sandbox Code Playgroud)
可以多次调用实例的Dispose()方法MyClass吗?