使用 Quartz.net 的 SQL CLR 函数

问题描述

我正在尝试创建一个 CLR 函数,并在里面使用了下面的quartz.net 代码片段

 public static class sqlCron
{
    [sqlFunction(IsDeterministic = true,IsPrecise = true)]
    public static DateTimeOffset? GetNearestDate(sqlString expression,sqlDateTime baseDateTime)
    {
        if (expression.IsNull || baseDateTime.IsNull)
            return (DateTime?)null;

        try
        {
            var schedule = new CronExpression(expression.Value);
            var res = schedule.GetTimeAfter(baseDateTime.Value);
            return res;
            //return new DateTimeOffset();
        }
        catch (Exception ex)
        {
            return (DateTime?)null;
        }
    }
}

当我尝试将此程序集注册sql 服务器时抛出异常。

CREATE ASSEMBLY MyCron
FROM 'D:\Projects\MyCron\bin\Debug\MyCron.dll' 
--WITH PERMISSION_SET = UNSAFE--UNSAFE --EXTERNAL_ACCESS --PERMISSION_SET = SAFE;
GO

CREATE FUNCTION CronNearestDate(
    @Expression NVARCHAR(100),@BaseDateTime DATETIME)
RETURNS DATETIME
AS 
EXTERNAL NAME [MyCron].[MyCron.sqlCron].[GetNearestDate]
GO


sp_configure 'clr enabled',1;
GO
RECONfigURE
GO

--Every month last day
--0 59 23 L * ? *
select dbo.CronNearestDate('0 59 23 L * ? *',GETDATE())
GO

以上将注册程序集并创建 sql clr 函数。但是在程序集注册本身失败了

错误

警告:Microsoft .NET Framework 程序集“system.diagnostics.tracing,版本=4.2.0.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a。”您正在注册的未在 sql Server 托管环境中进行全面测试,因此不受支持。将来,如果您升级或维护此程序集或 .NET Framework,您的 CLR 集成例程可能会停止工作。有关详细信息,请参阅 sql Server 联机丛书。 消息 6586,级别 16,状态 1,第 3 行 无法安装程序集“System.Diagnostics.Tracing”,因为现有策略会阻止使用它

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...