在sql server 中使用c# 生成的Dll文件
- 准备工作:
查看SQL Server是否开启了CLR 集成。如果未开启,需要开启
SELECT value FROM sys.configurations WHERE name = 'clr enabled';
--开启了CLR 集成
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
- 用C#创建一个Dll文件,并且生成成功。
- 用 C# 读取 Dll 文件,转换为十六进制表示并写入新文件中:
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
using (BinaryReader reader = new BinaryReader(fileStream))
using (StreamWriter writer = new StreamWriter(newFilePath))
{
byte[] binaryData= reader.ReadBytes((int)fileStream.Length);
// 对读取的二进制数据进行处理
string hexString = BitConverter.ToString(binaryData).Replace("-", "");
writer.Write(hexString);
}
- 再 SQL server中 创建 ASSEMBLY
CREATE ASSEMBLY [MyAssembly]
AUTHORIZATION [dbo]
FROM 0x --复制上方生成的十六进制文件的内容
WITH PERMISSION_SET = EXTERNAL_ACCESS;
- 创建 Sql 函数或存储过程调用。大功告成
CREATE FUNCTION MySqlFunction(@param1 INT, @param2 INT)
RETURNS INT
AS EXTERNAL NAME [YourDLLName].[YourNamespace].[MyCppFunction];
--
CREATE PROCEDURE [dbo].[YhdiHttp]
@requestXml [NVARCHAR](MAX) ,
@responseXml [NVARCHAR](MAX) OUTPUT
WITH EXECUTE AS CALLER
AS EXTERNAL NAME
[YourDLLName].[StoredProcedures].[YhdiHttp];
GO
原文地址:https://blog.csdn.net/qq_39941918/article/details/142633006
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!