SQL SERVER 2016 汇出SQL CLR组件

因工作需求怕汇入的组件与版控上的不同,于是需汇出并用ILSPY查看内容

--找出組件號碼
SELECT *
FROM sys.assembly_files

--啟用 OLE Automation Procedures
EXEC sp_configure 'Ole Automation Procedures', 1;

--匯出組件資訊
DECLARE @IMG_PATH VARBINARY(MAX)
DECLARE @ObjectToken INT

SELECT @IMG_PATH = content FROM sys.assembly_files WHERE assembly_id = 65544

EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT
        EXEC sp_OASetProperty @ObjectToken, 'Type', 1
        EXEC sp_OAMethod @ObjectToken, 'Open'
        EXEC sp_OAMethod @ObjectToken, 'Write', NULL, @IMG_PATH
        EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, 'c:\temp\myassembly.dll', 2
        EXEC sp_OAMethod @ObjectToken, 'Close'
        EXEC sp_OADestroy @ObjectToken
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 2016 支持使用 HTTP 请求从外部系统或 Web 服务中获取数据。这可以通过以下步骤实现: 1.启用 SQL Server 数据库引擎中的外部数据源: ``` sp_configure 'clr enabled', 1; GO RECONFIGURE; GO sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO ``` 2.创建一个存储过程,该存储过程将使用 CLR(公共语言运行时)进行编写,以获取 HTTP 请求的响应。下面是一个简单的示例存储过程: ``` CREATE PROCEDURE dbo.GetHttpResponse @url NVARCHAR(2000) AS EXTERNAL NAME HttpRequests.HttpRequest.GetHttpResponse; ``` 3.创建 CLR 程序集,以便在 SQL Server 中使用。以下是一个简单的 C# 程序集示例: ``` using System.Net; using System.IO; using System.Data.SqlClient; using Microsoft.SqlServer.Server; public class HttpRequest { [SqlProcedure] public static void GetHttpResponse(SqlString url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.Value); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); SqlContext.Pipe.Send(reader.ReadToEnd()); } } ``` 4.将 CLR 程序集部署到 SQL Server 中: ``` CREATE ASSEMBLY HttpRequests FROM 'C:\HttpRequests.dll' WITH PERMISSION_SET = UNSAFE; ``` 5.测试存储过程: ``` EXEC dbo.GetHttpResponse 'http://www.example.com'; ``` 这将从 http://www.example.com 获取响应,并将其发送回 SQL Server

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值