SQL 使用资源 DLL 的服务器 CLR 函数 - 示例或建议?
SQL Server CLR Functions Using Resource DLLs - examples or suggestions?
我有一个 SQL 服务器 CLR 函数 DLL,我们已经使用了一段时间。它唯一真正的问题是它在需要 return 人类可读字符串(例如 'Yes'、'No')时使用硬编码字符串。我们桌面应用程序的所有其余部分都使用资源字符串和图形来使应用程序语言独立(例如,允许使用英语、法语、西班牙语等)。我想找到一种方法来允许从存储过程或函数中查找语言资源 DLL 中的资源,但尚未找到任何引用此内容的文章(到目前为止)。这将采用接受语言代码和资源名称的函数形式(例如 GetResourceString('EN-US', 'ApplicationName') 和 returns 请求类型的适当资源。
除了 CLR 函数 DLL 之外,是否有人有说明如何将资源程序集加载到 SQL 服务器的过程或方法?我假设每个程序集都需要签名,但我不知道正常的资源加载机制是否可以在 SQL 服务器中工作,或者我是否可以 'do-it-myself' 通过使用反射从 CLR 函数中加载程序集?
我没有尝试过这个特定要求,但是 SQL CLR 程序集可以依赖于其他 SQL CLR 程序集,并使用来自其他 SQL CLR 程序集的函数。
当您创建程序集时,SQL服务器还会在同一位置查找该程序集的任何依赖程序集,并上传它们。它将它们设置为与您正在加载的主程序集具有相同的所有者。
加载程序集时,也可以将"is_visible"设置为false,这样程序集只用于为数据库中的其他程序集提供内部实现,而不是直接编目。
即使没有直接实现标准机制,也没有理由不能使用它来提供等效的语言资源 DLL。
然后您可以通过查询 sys.assembly_references 目录视图查看程序集之间的引用。
正如格雷格所说;没有什么可以阻止您将资源 dll 作为 SQLCLR 程序集,并针对它创建一个函数来检索任何内容。
但是,当您可以将资源保存在数据库中的表中时,为什么要有资源 dll?
我有一个 SQL 服务器 CLR 函数 DLL,我们已经使用了一段时间。它唯一真正的问题是它在需要 return 人类可读字符串(例如 'Yes'、'No')时使用硬编码字符串。我们桌面应用程序的所有其余部分都使用资源字符串和图形来使应用程序语言独立(例如,允许使用英语、法语、西班牙语等)。我想找到一种方法来允许从存储过程或函数中查找语言资源 DLL 中的资源,但尚未找到任何引用此内容的文章(到目前为止)。这将采用接受语言代码和资源名称的函数形式(例如 GetResourceString('EN-US', 'ApplicationName') 和 returns 请求类型的适当资源。
除了 CLR 函数 DLL 之外,是否有人有说明如何将资源程序集加载到 SQL 服务器的过程或方法?我假设每个程序集都需要签名,但我不知道正常的资源加载机制是否可以在 SQL 服务器中工作,或者我是否可以 'do-it-myself' 通过使用反射从 CLR 函数中加载程序集?
我没有尝试过这个特定要求,但是 SQL CLR 程序集可以依赖于其他 SQL CLR 程序集,并使用来自其他 SQL CLR 程序集的函数。
当您创建程序集时,SQL服务器还会在同一位置查找该程序集的任何依赖程序集,并上传它们。它将它们设置为与您正在加载的主程序集具有相同的所有者。
加载程序集时,也可以将"is_visible"设置为false,这样程序集只用于为数据库中的其他程序集提供内部实现,而不是直接编目。
即使没有直接实现标准机制,也没有理由不能使用它来提供等效的语言资源 DLL。
然后您可以通过查询 sys.assembly_references 目录视图查看程序集之间的引用。
正如格雷格所说;没有什么可以阻止您将资源 dll 作为 SQLCLR 程序集,并针对它创建一个函数来检索任何内容。
但是,当您可以将资源保存在数据库中的表中时,为什么要有资源 dll?