我有一个需要一些复杂的数学表达式评估的存储过程。有一个公式,这个存储过程评估它的值。
它调用定义如下的 UDF:
ALTER FUNCTION [dbo].[udfComputeMath]
(@inputString [NVARCHAR](MAX))
RETURNS [NVARCHAR](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [SMP_Assembly].[SuperMathParser.MathParser].[ComputeMath]
这是相当古老的代码,它从 SQL Server 2008 R2(至少)到 2016 年都运行良好。
但是现在我们尝试将我们的数据库更新到 SQL Server 2017,这不再有效。
我收到以下错误:
消息 10314,级别 16,状态 11,过程 GetPermitTypeFeesByPermitID,第 88 行 [Batch Start Line 0]
Microsoft .NET Framework 在尝试加载程序集 id 65536 时发生错误。服务器可能资源不足,或者程序集可能不被信任。再次运行查询,或查看文档以了解如何解决程序集信任问题。有关此错误的更多信息:System.IO.FileLoadException:无法加载文件或程序集“supermathparser,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。发生与安全有关的错误。(来自 HRESULT 的异常:0x8013150A) System.IO.FileLoadException:
在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名,字符串代码库,证据 assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据 assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 throwOnFileNotFound,布尔 forIntrospection,布尔suppressSecurityChecks)
在 System.Reflection.RuntimeAssembly.InternalLoad(字符串 assemblyString,证据 assemblySecurity,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,Boolean forIntrospection)
在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) 在 System.Reflection.Assembly.Load(String assemblyString)
知道如何在 SQL Server 2017 中再次进行这项工作吗?
谢谢