小编Ark*_*ane的帖子

xp_cmdshell 的替代方法,用于将报告作为 CSV 文件通过电子邮件发送

我有一个问题,如果可能的话,我可以用一些想法来解决如何在不使用(或启用)的情况下实现所需的问题xp_cmdshell

我知道它xp_cmdshell本身会带来风险,即使使用代理帐户,但是 - 在我们的环境中它被禁用并且说服 IT 经理启用它充其量是困难的。

我遇到的问题是我有一个存储过程,它从各种表中查找数据并将其全部放入表变量中。

我想做以下事情:

  • 将表变量的内容导出到 CSV 文件。
  • 将创建的 CSV 文件附加到电子邮件并将其发送到特定地址。

这需要在没有任何类型的用户输入的情况下自动发生,它的电子邮件端将由同一存储过程中的变量提供。

我已经想到了两种可能做到这一点的方法,都使用 bcp 和xp_cmdshell.

第一种方法是创建一个临时表,从表变量中选择我想要的记录到临时表中,然后使用 bcp 来触发 SSIS 包或 SQL 代理作业,它将查询临时表,导出到 CSV 和 e-给我发邮件。

第二种方法是创建一个临时表,从表变量中选择我想要的记录放入临时表中,然后使用bcp将临时表选择为CSV文件,然后使用sp_send_dbmail发送。

第三种选择可能是触发另一个 SP/函数,并让它执行上述任一方法,从而将新功能分开 - 但这只是为了让事情变得简单。

所以,我要问的是关于如何安全地实现这一目标的任何想法,最好不使用xp_cmdshell. 我不能使用 PowerShell 或类似的技术,因为这里没有人知道 PowerShell,虽然我熟悉 VB.NET,但是我不确定这有什么帮助(如果有的话)。

如果您需要更多信息以提供帮助,请告诉我。

sql-server t-sql database-mail table-variable xp-cmdshell

5
推荐指数
2
解决办法
1896
查看次数