在 SQL-CLR 程序集中..
有没有一种方法可以让我加载某些数据并可能从 上的数据库中读取数据仅装配负载 ?
假设我有一类用户定义的函数,这些函数使用一些正则表达式,这些表达式必须根据我在数据库中的某些表中的数据构建和编译,有没有一种方法可以从表中读取,创建我的 Regex 对象并使这些对象在 AppDomian 的生命周期内保持事件状态,这样无论何时调用任何使用这些对象的用户定义函数,它都不必重建它们?
编辑:静态构造函数不是读取数据的有效上下文。
我希望我让自己足够清楚,提前致谢。
最佳答案
Is there a way that enables me to load certain data and possibly read from database on assembly load only ?
这取决于您对“某些数据”的位置和/或
PERMISSION_SET
的灵活程度。大会的。如果程序集必须保留为
SAFE
(如果可能的话,这是首选),那么唯一可以从程序集外部读取的两个源是:appSettings
部分)。 更新:到目前为止,似乎从配置文件中读取在 Linux(SQL Server 2017 的新平台)上不起作用。 虽然这些都不像从该表中读取那样是“动态的”,但可以在该设置表上设置触发器以将适当的数据写出到 sqlservr.exe.config 文件。对于高度事务性的表,我不会完全推荐这个,但我在这里假设用于此目的的值不会经常更改,特别是因为计划无论如何都将它们缓存在
static readonly
中。类变量。如果程序集已设置为
EXTERNAL_ACCESS
,那么你可以做一个常规/外部 SqlConnection
从数据库中获取数据。但是,如果这是您将程序集设置为 EXTERNAL_ACCESS
的唯一原因。 ,那么我会选择上面提到的配置文件选项,因为如果程序集设置为 SAFE
,确定性方法的性能会更好。 .
关于sql-server - SQLCLR 静态类构造函数中的数据访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5686183/