【问题标题】:Using Stored Procedures in the SQL Connector?在 SQL 连接器中使用存储过程?
【发布时间】:2016-03-16 23:17:23
【问题描述】:

业务问题:我们希望每天从数据库中读取多行(具有特定条件),遍历这些行并向该行中的电子邮件发送一封电子邮件,然后更新该行,说明该电子邮件已发送(以防止每天或每天多次向该人发送电子邮件)。

我们所有的数据库、服务器、wep 应用程序等都使用 windows azure。看到我们有应用服务,我们开始研究这个问题,并提出了创建逻辑应用的想法。

简单的逻辑应用程序流程:重复(每天一次)=> SqlConnector(StoredProcedure 或 select 语句)=> Foreach 行(emailapi(row.email)=> SqlConnector(更新行))

并发症:

逻辑应用需要从我们的一个 sql 数据库中读取数据。所以我们通过创建一个 sql 连接器来解决这个问题,从该连接器我们可以公开存储过程、表等。sql 连接器的主要问题是我们要调用的存储过程只是根据其中涉及 sql 函数,并且 sql 连接器无法生成逻辑应用读取 select 语句返回的行所需的元数据。 sql 连接器只能为 out 参数或返回值生成元数据,我们无法通过它们返回多行。

下一个想法和第二个复杂之处是,由于我们意识到我们无法调用此存储过程并取回行,因此我们尝试使用 select 语句通过 sql 连接器获取行。这种方法的问题是我们的 where 子句中必须有一个 sql 函数,这是不受支持的。

忽略并发症:

假设我们可以从数据库中读取这些特定的行,然后我们想要遍历这些行,这应该可以通过逻辑应用程序中的“重复”操作获得,并发送一封电子邮件。我们选择使用我们自己的自定义 API 来发送电子邮件(Azure 不为我们的电子邮件服务 SendWithUs 提供托管 API)。电子邮件工作完全正常,我们能够从我们的 azure 逻辑应用程序查看和调用我们的 api 端点。我们对这个发送电子邮件的 api 端点的担忧是它不是最安全的。

我的问题/s:我们能否完成我们尝试使用 sql 连接器完成的任务,还是应该寻找替代方案?

替代方法:将我们想做的所有事情放在提供电子邮件端点的自定义 api 应用程序中。这将需要连接到数据库、调用存储过程、循环存储过程的结果以发送电子邮件,然后更新已发送电子邮件的数据库记录。此时我们的逻辑应用程序将只有一个重复触发器和一个完成所有工作的 api 调用。不过,此 api 端点需要尽可能安全,同时仍可从逻辑应用程序访问。

【问题讨论】:

    标签: azure stored-procedures azure-api-apps azure-sql-database azure-logic-apps


    【解决方案1】:

    现在可以在逻辑应用预览中使用执行存储过程,这里是快照

    【讨论】:

    • 这个方法能从返回的行中生成元数据吗?或者元数据是否只能从输出参数/返回中生成。我们的存储过程将返回许多行,据我了解,元数据无法从选定的存储过程中生成。我会使用“获取行”,但“获取行”不支持我们使用的 sql 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多