我正在尝试将 CLR 程序集加载Split.dll
到 SQL Server 2017 数据库中:
从“D:\SqlClr\split.dll”创建程序集拆分,权限设置 = SAFE GO
我已经使用 Visual Studio 2019 构建了这个程序集。但是我收到了这个错误:
消息 10301,级别 16,状态 1,第 1 行
程序集“拆分”引用程序集“netstandard,版本=2.0.0.0,文化=中性,publickeytoken=cc7b13ffcd2ddd51.”,当前数据库中不存在。SQL Server 试图从引用程序集所在的同一位置定位并自动加载引用程序集,但该操作失败(原因:2(系统找不到指定的文件。))。请将引用的程序集加载到当前数据库中,然后重试您的请求。
我尝试对 SQL Server 2014 和 Visual Studio 2015 执行相同的操作。实际上,我使用相同的 C# 代码来获取 DLL,并使用相同的 SQL 语句(如上所示)来加载它。在这种情况下,一切都运行良好。
我读过Sql Server CLR 加载程序集失败,但是当我尝试加载时netstandard.dll
:
CREATE ASSEMBLY netstandard
AUTHORIZATION dbo
FROM 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\netstandard.dll'
WITH Permission_set = SAFE
GO
我收到此错误:
消息 6212,级别 16,状态 1,第 1 行
CREATE ASSEMBLY 失败,因为安全程序集“System.Diagnostics.Tracing”中类型“System.Diagnostics.Tracing.EventCounterGroup”的方法“EnsureEventSourceIndexAvailable”正在存储到静态字段。在安全程序集中不允许存储到静态字段。
有谁能够帮我?为什么相同的代码在 SQL Server 2014 和 Visual Studio 2015 中内置的 DLL 中运行良好,而我现在遇到问题(SQL Server 2017、Visual Studio 2019)?解决这个问题的方法是什么?