Wil*_*Low 4 xml sql-server ssis import web-service
我需要每天从托管的 Web 服务中检索数据集。我可以在 SSIS 包中检索 XML“列名”。但是我需要以csv格式检索数据集中的所有数据或直接带入SQL Server。(行和列、标题数据和数据集)。
这在 SSIS 上可行吗?或者有更好的方法吗?非常感谢任何输入或建议。
这是否需要使用 SSIS 来完成?如果是这样,您几乎可以在脚本任务(C# 或 VB.NET)中执行任何您喜欢的操作。这样您就可以将数据直接带入 SSIS 变量并在整个包中使用。
或者,您可以通过 SQLCLR 执行此操作,在这种情况下,您可以直接从 T-SQL 调用它。这使您可以轻松地将它集成到存储过程、SQL 代理作业等中。您甚至可以在 SSIS 的 SQL 任务中调用它。但是,与在 SSIS 中使用脚本任务相比,使用 SQLCLR 需要更加小心。我在 Stack Overflow 上的几个答案中记录了一些需要考虑的事情:
这些答案中最重要的一点是:
查看以下 MSDN 页面:
SQLCLR 是“共享”代码。每个 DB + Owner 组合都有一个应用程序域。因此,所有调用此代码的会话都将在同一个应用程序域中运行。如果同时向同一个 URI 发出多个请求,除前 2 个之外的所有请求都可能“暂停”,因为您受到 ServicePointManager ( ServicePointManager.DefaultConnectionLimit )施加的并发连接限制的约束。默认限制是惊人的2
!这意味着,对该 URI 的所有其他请求,虽然已经有 2 个 active/open HttpWebRequest
s,但将耐心地内联等待。您可以通过设置对象的.ServicePoint.ConnectionLimit
属性来增加它HttpWebRequest
。
您需要将您的程序集标记为WITH PERMISSION_SET = EXTERNAL_ACCESS
. 请不要偷懒转身TRUSTWORTHY ON
。那是一种不必要的安全风险。确保安全的正确方法是执行以下操作:
[master]
数据库中,从程序集的 DLL 创建一个非对称密钥。[master]
,从该非对称密钥创建登录EXTERNAL ACCESS ASSEMBLY
权限PERMISSION_SET
of创建您的程序集EXTERNAL_ACCESS
,而不是 UNSAFE
如果您想沿着 SQLCLR 路径走下去,但又不想弄乱编码等,那么一种选择是获取预构建的函数。在SQL# SQLCLR库(即我写的)有一个功能叫做INET_GetWebPages(未在免费版中提供)调用一个URL(可以在GET或POST数据传递)和传回的响应(和响应头作为一个单独的XML 字段)。
归档时间: |
|
查看次数: |
2562 次 |
最近记录: |