1

业务问题:我们希望从数据库中读取多行(具有特定条件),迭代这些行并向该行中的电子邮件发送电子邮件,然后更新该行表明电子邮件已发送(以防止每天或每天多次向该人发送电子邮件)。Azure逻辑应用程序中的Sql连接器

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

简单的逻辑应用流量:复发(每天一次)=> SqlConnector(StoredProcedure的或选择语句)=>的foreach行(emailapi(row.email)=> SqlConnector(更新行))

并发症:

逻辑应用程序需要从我们的一个sql数据库读取。所以我们通过创建一个sql连接器来处理这个连接器,并且从这个连接器中我们可以公开存储过程,表格等等。与sql连接器有关的主要问题是我们想要调用的存储过程只是从表中选择数据其中涉及sql函数,并且sql连接器无法生成逻辑应用程序读取select语句返回的行所需的元数据。 sql连接器只能为out参数或返回值生成元数据,所以我们无法通过其中任何一个返回多行。

下一个想法和第二个复杂因素是,因为我们意识到我们不能调用这个存储过程并获取行,我们试图通过sql连接器使用select语句来获取行。这个方法的问题是我们的where子句必须有一个sql函数,并且这不被支持。

忽略并发症:

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

我的问题:我们可以完成我们试图用sql连接器完成的任务,还是应该寻找替代方案?

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

回答

1

执行存储特效现在在这里的逻辑应用程序预览可用在快照enter image description here

+0

请问这种方法能够产生从返回的行的元数据?或者元数据只能从输出参数/返回中生成。我们的存储过程会返回很多行,根据我的理解,元数据不能从选择的存储过程中生成。我会使用“Get rows”,但我们使用的sql函数不被“Get rows”支持。 –

相关问题