SQL 服务器中的程序集不断定期卸载和加载
Assemblies in SQL Server keep unloading and loading again periodically
SQL 服务器不断加载和卸载我的程序集,将它们标记为不安全。知道为什么会那样做。
我在下面附上日志文件。
由于日志中所述的确切原因,正在卸载程序集:内存压力。您无法采取任何具体措施来防止这种情况发生(即没有禁用此行为的选项)。您最多可以做的是通过添加更多内存来减少它发生的机会 and/or 减少查询的内存消耗 and/or SQLCLR 对象。
以上建议并不意味着您的查询或 .NET 代码中目前有任何低效的地方,只是如果您需要更多内存,您要么需要添加更多内存,要么需要使用更少内存。如果您当前使用的内存尽可能少,那么您几乎需要添加更多内存。
如果没有看到您的 .NET 代码,就无法确定是否有任何可以改进的地方。但是,问题更有可能出在您的 SQLCLR 代码之外。您需要确定您拥有多少内存以及它的使用位置。尝试在 DBA.StackExchange:
上浏览这个问题
SQL Server 2012 memory consumption outside the buffer pool
此外,SQL 服务器未将程序集标记为 UNSAFE
。这就是您设置 Assembly 的方式。如果它真的只是在执行文件系统访问操作,您可以尝试将程序集更改为 EXTERNAL_ACCESS
。
SQL 服务器不断加载和卸载我的程序集,将它们标记为不安全。知道为什么会那样做。
我在下面附上日志文件。
由于日志中所述的确切原因,正在卸载程序集:内存压力。您无法采取任何具体措施来防止这种情况发生(即没有禁用此行为的选项)。您最多可以做的是通过添加更多内存来减少它发生的机会 and/or 减少查询的内存消耗 and/or SQLCLR 对象。
以上建议并不意味着您的查询或 .NET 代码中目前有任何低效的地方,只是如果您需要更多内存,您要么需要添加更多内存,要么需要使用更少内存。如果您当前使用的内存尽可能少,那么您几乎需要添加更多内存。
如果没有看到您的 .NET 代码,就无法确定是否有任何可以改进的地方。但是,问题更有可能出在您的 SQLCLR 代码之外。您需要确定您拥有多少内存以及它的使用位置。尝试在 DBA.StackExchange:
上浏览这个问题SQL Server 2012 memory consumption outside the buffer pool
此外,SQL 服务器未将程序集标记为 UNSAFE
。这就是您设置 Assembly 的方式。如果它真的只是在执行文件系统访问操作,您可以尝试将程序集更改为 EXTERNAL_ACCESS
。