问题描述
我正在尝试创建一个 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;
}
}
}
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 (将#修改为@)