您现在的位置是:网站首页> 数据库
编写MSSQL调用的DLL
- 数据库
- 2023-07-21
- 537人已阅读
--开启clr功能
EXEC sp_configure 'show advanced options','1';
GO
RECONFIGURE;
GO
EXEC sp_configure 'clr enabled','1'
RECONFIGURE;
GO
--要改变的数据库
ALTER DATABASE [nodedb_003] SET TRUSTWORTHY ON
GO
--将dll文件添加到信任白名单
DECLARE @hash AS BINARY(64) = (SELECT HASHBYTES('SHA2_512', (SELECT * FROM OPENROWSET (BULK 'F:\2019LastCode\ASP.NET\MSSQLDll\MSSQLDll\bin\Release\MSSQLDll.dll', SINGLE_BLOB) AS [Data])))
EXEC sp_add_trusted_assembly @hash
go
--解决:在 master 数据库中记录的数据库所有者 SID 与在数据库 '**' 中记录的数据库所有者 SID 不同
sp_changedbowner 'sa',true
--创建程序集,【SQL_CLR_Decode】是创建的程序集名称,可以自定义
CREATE ASSEMBLY SQL_CLR_Decode
FROM 'F:\2019LastCode\ASP.NET\MSSQLDll\MSSQLDll\bin\Release\MSSQLDll.dll'
WITH PERMISSION_SET = unSAFE
GO
--创建函数
CREATE FUNCTION SqlDecode(@source_str NVARCHAR(4000))
RETURNS NVARCHAR(4000)
AS
--SQL_CLR_Decode是创建的程序集名称,DecodeCLR是程序集中命名空间的名称,CLRClass是类名,Decode是要调用的程序集中的方法名
EXTERNAL NAME SQL_CLR_Decode.[MSSQLDll.CLRClass].Decode
GO
--调用函数
select dbo.SqlDecode('1Y3C1Y3Y')
MSSQLDll源码 创建类库,版本.NET3.5
namespace MSSQLDll
{
public class CLRClass
{
[Microsoft.SqlServer.Server.SqlMethod]
public static string Decode(string source_str)
{
return "hello " + source_str;
}
}
}
上一篇:MSSQL问题解决收集