SQL 表中的基本 URL 连接字符串

Posted

技术标签:

【中文标题】SQL 表中的基本 URL 连接字符串【英文标题】:Base URL connection string from SQL table 【发布时间】:2021-05-12 15:23:37 【问题描述】:

我被要求创建一个流程,我们可以使用从我们的一个应用程序中获取的数据更新云托管数据库上的多个用户记录,并在现场托管。与托管数据库的连接需要将用户名的唯一 ID 指定为 http 连接中基本 URL 的一部分,这意味着任何时候只能更新一个用户记录,没有批量更新选项。

在我们的应用程序中,我可以创建基本 URL 连接字符串并将其添加到用户表 (SQL Server) 中的字段中,此外我还拥有同一个表中用户名的唯一 ID。

Base URL 的格式是:- https://api.hosteddb.com/v1.svc/users/1234567890abcdefg?source=application.hosteddb.com

我们选择的工具是 Visual Studio 2017,我之前用过几次。在 VS 中,我尝试创建一个执行 SQL 任务,以便可以将参数设置为用户表中的基本 URL,但我无法使其正常工作。

如何从我们的Users表上的多条记录中传递Base URL并设置http连接,每一条都通过,更新记录,然后在http连接中设置下一个Base URL?

非常感谢任何帮助。

非常感谢, 基兰

【问题讨论】:

【参考方案1】:

虽然我没有满足您的所有需求,但您正在寻找的一般模式是

执行 SQL 任务

将具有完整结果集的执行 sql 任务定义为您的返回类型并拉回 baseurl(以及您可能需要的其他其他列)。

SELECT BaseUrl FROM dbo.MyTable

将结果推送到 Object 类型的 SSIS 变量中,我将其命名为 rsObject. 随意命名。

Foreach 循环容器

在您的控制流中添加一个 foreach 循环(不是 for 循环)作为后续任务。将 foreach 循环配置为使用 ADO.NET 记录集。不管你在上一步使用的是OLEDB、ADO.NET还是ODBC连接管理器,你想要的枚举类型都是ADO.NET Recordset。

在“变量/映射”选项卡中(从内存中执行此操作),您将需要提供更多 SSIS 变量,以便名为 baseUrl 的变量将转到序号位置 0,依此类推。

此时运行包。 Foreach 循环应该闪烁,完成后,它会保持绿色。这确认执行 SQL 任务按预期工作,并且您已“粉碎”结果集。 (在互联网上搜索“SSIS Shred Resultsset”应该会提供许多如何连接此任务的示例)

网络任务

在 Foreach 循环中放置一个 http/web 任务。在 Web 任务中,将其配置为指向您提供的 URL,以便基本设计正常工作。

然后我们需要为 URL 属性分配一个Expression,以使 URL 值与变量 baseUrl 同步更改。右键单击任务并选择属性。从属性中,找到表达式。在我们可以分配的属性列表中,找到一个听起来像 Url 并在值列中使用 @[User::baseUrl]

此时,通过第一步生成的列表的每个枚举都会更新baseUrl。当 Execute web task 触发时,它将“知道”使用 baseUrl 的当前值。

【讨论】:

以上是关于SQL 表中的基本 URL 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

怎么把同一个表中的字符串字段连接起来

JAVA 中的 MS-SQL 连接字符串

连接表中两个不同行的字符串

如何在 spark sql 连接条件中将字符串数据类型转换为日期:to_date 不起作用并且转换抛出错误

sql语句中字符串的连接符是啥?

oracle 字符串连接的结果过长的问题怎么解决