Sql-Server

如何在腳本組件中使用 HTTP 連接管理器?(不是腳本任務)

  • April 16, 2021

我正在嘗試執行與以下連結中相同的場景;創建一個 SSIS 腳本組件作為數據源,該組件使用預先存在的 HTTP 連接管理器通過 GET 檢索頁面並將行發送到數據流管道。

http://www.sqlis.com/sqlis/post/Downloading-a-file-over-HTTP-the-SSIS-way.aspx

我的目標平台是 SQL Server 2008,因此是 C#。MSDN 文件提供了文件和 SQL 連接管理器的範例,但沒有提供 HTTP 連接管理器的範例。

https://msdn.microsoft.com/en-us/library/ms136060%28v=sql.100%29.aspx

具體問題是我無法弄清楚為什麼在我目前的上下文中沒有 HttpClientConnection 建構子。該類的 MSDN 文件似乎不適用於腳本組件,並且將其轉換為有用的東西顯然超出了我的範圍。

https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.httpclientconnection.httpclientconnection%28v=sql.100%29.aspx

我的非工作程式碼如下所示 -

using System;  
using System.Data;  
using System.Text;  

using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
using Microsoft.SqlServer.Dts.Runtime.Wrapper;  

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]  
public class ScriptMain : UserComponent  
{  
   public override void AcquireConnections()  
   {  
       IDTSConnectionManager100 connMgr = this.Connections.MyWebServer;  
   }  
   public override void PreExecute()  
   {  
      base.PreExecute();  

      HttpClientConnection clientConn = new HttpClientConnection(connMgr));  

      Byte[] buffer = clientConn.DownloadData();  
      String Document = Encoding.ASCII.GetString(buffer);  
   }  

我錯過了什麼?

我知道這個問題已經有一段時間了,但我找到了一個可能的解決方案。

此連結提供了有關如何使用為 SSIS 中的腳本組件啟用的連接管理器中可用連接的說明和範例https://msdn.microsoft.com/en-us/library/ms136060.aspx

[我們感興趣的程式碼部分是這樣的:

IDTSConnectionManager100 connMgr;
HttpClientConnection100 hcc;

IDTSComponentMetaData100 compMetadata = this.ComponentMetaData; //Just for output purposes.       

connMgr = this.Connections.MyWebServer;

hcc = (HttpClientConnection100)cm.AcquireConnection(null);
compMetadata.FireInformation(1, "Message: ", "URL: " + hcc.ServerURL + " User: " + hcc.ServerUserName + " Pwd: " + hcc.GetServerPassword(), "", 0, ref fail);

```](https://msdn.microsoft.com/en-us/library/ms136060.aspx)

引用自:https://dba.stackexchange.com/questions/91445