gpt4 book ai didi

c# - SQL Server CLR 静态变量设置回 null

转载 作者:行者123 更新时间:2023-11-30 15:58:36 26 4
gpt4 key购买 nike

我有一个加载到 SQL Server 中的 CLR DLL(用 C# 编写的源代码)。初始化过程很昂贵,所以我通常只想做一次。但是,有时可能需要再次初始化,我不想必须重新启动 SQL Server 才能执行此操作。因此,我没有将这些静态变量标记为只读。我的问题是我的静态变量以一种看似随机的方式被重置为 null。我非常有信心我没有任何线程问题,而且我的代码都没有将这些值设置为 null。通过分析我的日志文件,我只能猜测 SQL Server 以某种方式将值重置为 null(也许有时会重新加载 DLL?)。 SQL Server 会这样做吗?如果是这样,是否有办法将其配置为不这样做?

最佳答案

SQL Server 在它认为合适的时候加载和卸载 CLR 模块(在内存压力下,在未处理的异常情况下,more on it here)。即使您能够找出所有相关的条件和时间,这在未来的版本中也可能会发生变化。

保留大量数据不会很好地扩展。为此编写一个 Windows 服务,并通过 tcp(例如)从您的托管 UDF 调用它。如果您确实需要进程内状态,请使用持久缓存机制而不是静态变量(数据库、文件系统)——或者预计静态变量可以随时变为 null,只要它发生就重新初始化它们,没有错使用这种方法本身,除了可伸缩性问题和并发/同步之外。

关于c# - SQL Server CLR 静态变量设置回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43063530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com