我用几种方法编写了一个CLR类,它们作为SQL Server 2005数据库中的函数链接。当在一个事务或连接的范围内使用其中几个函数时,我需要另一个函数来自动执行以清理某些东西,在事务处理或连接关闭时(现在时间好,以后我会决定哪个是最好的)。我认为从另一个新的CLR函数接收事件可以做,但我不知道如何实现。
任何人都可以向我指出有关模块,文档或其他任何内容的信息,这些信息可以帮助我了解如何在CLR类中接收事务或连接关闭事件,或者在发生这些事件时如何执行特定功能?
编辑:我创建了一个C#类,其中包含一个用于存储值的静态成员,以及两个用于设置和从该成员获取值的静态方法。编译为DLL并将其作为程序集添加到SQL Server 2005.方法作为CLR函数添加到同一服务器。结合不同的连接和事务来交替获取和设置值,让我看到静态成员没有被重置。我希望有一种自动方式将存储的值封装到一个事务或连接中(或清理静态成员),因此每个存储的值不会干扰其他值
答案 0 :(得分:0)
SQLCLR,就像在SQL Server中运行的CLR一样,只有在从函数,过程,聚合或CLR类型方法调用CLR代码时才运行代码。 CLR代码无法在调用之间保持状态,因此无法运行清理代码。事务提交,连接关闭模块卸载或类似事件没有回调。它们不是必需的,也不是支持的。