CLR (.NET)对象在SQL Server中是如何管理的?
从SQL Server到任何CLR代码的入口点都是静态方法。通常,您只会创建存在于该方法范围内的对象。但是,您可以将对象引用存储在静态成员中,让它们逃离方法调用范围。如果SQL Server在多个存储过程/函数调用之间保留这些对象,则它们可能对缓存应用程序有用-尽管它们也更加危险。
SQL Server如何处理这个问题?它是否允许(非方法)静态成员?如果是,它会在内存中保留它们多长时间?它会在每次CLR调用后回收所有内容吗?它如何处理并发性?
从SQL Server到任何CLR代码的入口点都是静态方法。通常,您只会创建存在于该方法范围内的对象。但是,您可以将对象引用存储在静态成员中,让它们逃离方法调用范围。如果SQL Server在多个存储过程/函数调用之间保留这些对象,则它们可能对缓存应用程序有用-尽管它们也更加危险。
SQL Server如何处理这个问题?它是否允许(非方法)静态成员?如果是,它会在内存中保留它们多长时间?它会在每次CLR调用后回收所有内容吗?它如何处理并发性?
DBCC DROPSYSTEMBUFFERS('ALL')
,以及4)**可能还有其他1或2种方式。 - Solomon Rutzky