- 准备工作:
查看SQL Server是否开启了CLR 集成。如果未开启,需要开启
SELECT value FROM sys.configurations WHERE name = 'clr enabled';
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