gpt4 book ai didi

sql-server - SQLCLR 静态类构造函数中的数据访问

转载 作者:行者123 更新时间:2023-12-01 05:40:51 24 4
gpt4 key购买 nike

在 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 (如果可能的话,这是首选),那么唯一可以从程序集外部读取的两个源是:
  • 环境变量
  • app.config 文件(有关详细信息,请参阅我对这个 S.O. 问题的回答:Does SQL Server CLR Integration support configuration files?——是的,它也适用于 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/

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