首页 > 解决方案 > 使用资源 DLL 的 SQL Server CLR 函数 - 示例或建议?

问题描述

我有一个我们已经使用了一段时间的 SQL Server CLR 函数 DLL。唯一真正的问题是它在需要返回人类可读的字符串时使用硬编码字符串(例如'Yes'、'No')。我们桌面应用程序的所有其余部分都使用资源字符串和图形来使应用程序语言独立(例如,允许使用英语、法语、西班牙语等)。我想找到一种方法来允许从存储过程或函数中查找语言资源 DLL 中的资源,但还没有找到任何引用此的文章(到目前为止)。这将采用接受语言代码和资源名称(例如 GetResourceString('EN-US', 'ApplicationName') 并按请求类型返回适当资源的函数的形式。

有没有人有显示如何将资源程序集加载到 CLR 函数 DLL 旁边的 SQL 服务器的过程或方法?我假设每个程序集都需要签名,但我不知道正常的资源加载机制是否可以在 SQL Server 中工作,或者我是否可以通过使用反射从 CLR 函数中加载程序集来“自己动手”?

标签: sqlsql-serverclrembedded-resourcesqlclr

解决方案


我没有尝试过这个特定的要求,但是 SQL CLR 程序集可以依赖于并使用来自其他 SQL CLR 程序集的函数。

创建程序集时,SQL Server 还会在同一位置查找该程序集的任何依赖程序集并上传它们。它将它们设置为与您正在加载的主程序集具有相同的所有者。

加载程序集时,还可以将“is_visible”设置为false,这样程序集仅用于为数据库中的其他程序集提供内部实现,而不是直接编目。

没有理由不能用它来提供语言资源 DLL 的等价物,即使标准机制没有直接实现。

然后,您可以通过查询 sys.assembly_references 目录视图来查看程序集之间的引用。


推荐阅读