第一次尝试 CLR 集成,这样我就可以使用正则表达式工具。
我创建程序集:
CREATE ASSEMBLY SQLRegexTools
FROM 'D:\CODE\SQLRegexTools\SQLRegexTools\bin\Release\SQLRegexTools.dll'
此操作成功,并且程序集出现在 SELECT @ FROM sys.assemblies 中。
但是没有记录返回到 SELECT * FROM sys.Assembly_modules。
当我尝试创建函数来调用其中一种方法时,
CREATE FUNCTION RegExMatch(@pattern varchar(max)
, @SearchIn varchar(max)
, @options int)
RETURNS varchar
EXTERNAL NAME SQLRegexTools.Functions.RegExMatch
我收到错误“消息 6505,在程序集“SQLRegexTools”中找不到类型“函数”。
VB 模块的类名称是“Functions”。为什么这在错误中被称为类型,为什么我在模块中看不到任何内容?
最佳答案
当 SQL Server 无法解析所提供的名称时,会发生此错误。尝试下面的代码片段,看看是否可以解决问题。
CREATE FUNCTION RegExMatch(@pattern varchar(max)
, @SearchIn varchar(max)
, @options int)
RETURNS varchar
AS EXTERNAL NAME SQLRegexTools.[Functions].RegExMatch
用于访问 native 代码的各个函数/方法的解析与多部分对象名称(例如类型)相对难以区分。
额外注意的是,利用嵌套命名空间的 native 代码必须完全限定同一对引号内的嵌套命名空间。例如,如果 RegExMatch
位于 SQLRegexTools.A.B.C.RegExMatch
,则在将其与SQL Server 中的外部名称
。
关于sql-server - 创建Assembly成功,sys. assembly_modules中没有找到任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44935686/