SQL Server 版本:2005
.NET 版本:3.5
我正在尝试使用关于内存和性能的最有效方法来使用 CLR UDF。因此,SQL Server 似乎带有来自 GAC 的预加载 .NET 程序集。但是,SQL Server 禁止您将自定义程序集从 GAC 加载到您的 SQL 数据库。为了找到解决此问题的替代方法,我通过在每个数据库上加载程序集来试验 SQL CLR,并使用我的 CLR UDF 运行 SQL 查询,以发现每个数据库都分配有自己的 appdomain。此外,每个 appdomain 都会加载程序集的副本(我的主程序集及其依赖项)。说得通。
好的,然后我尝试将程序集创建到单个数据库中,然后通过其他数据库中的 dbname.dbo.clrudfname 引用 CLR UDF 以找到一些有趣的东西。加载的唯一 appdomain 属于托管程序集的数据库。此外,加载的唯一程序集是那些托管在该 appdomain 中的程序集。此外,引用另一个数据库的程序集与托管自己的副本的数据库相比,性能几乎相同。
有没有人认为这种方法在更有效地管理 CLR 内存方面存在问题?