微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有什么方法可以创建一个excel文件并保存或通过电子邮件发送?

如何解决有什么方法可以创建一个excel文件并保存或通过电子邮件发送?

是否可以使用SSIS(或任何MSsql Server功能自动运行存储过程,并将输出保存为Excel文件(甚至是平面文件),然后通过电子邮件将新创建的文件发送给人们? 对不起,我是SSIS的一名新手。

解决方法

概括地说,您将拥有一个包含2个任务和3个连接管理器的SSIS程序包。

第一个任务是数据流任务。顾名思义,数据将在这里流动-就您而言,是从SQL Server到Excel。

在“数据流”任务中,将OLE DB源添加到数据流。它将询问要使用什么连接管理器,然后您将针对您的源系统创建一个新的连接管理器。将源从表选择器更改为查询,然后引用您的存储过程EXECUTE dbo.ExportDaily'

希望该过程不过是select col1,col2,colN from table where colDate = cast(getdate() as date),否则,您可能会遇到组件确定源元数据的挑战。元数据是SSIS数据流中游戏的名称。如果遇到问题,分辨率取决于版本-2012年之前,您可以选择一个空操作作为起点。在2012年以后的版本中,您可以使用WITH RESULT_SETS来描述输出形状。

在我们确定来源之后,我们需要将数据放置在某个地方,您已指示Excel。将Excel目标位置拖到画布上,这将再次需要一个连接管理器,因此在定义数据应放置的位置后让它创建一个。 在何处放置数据很重要。在您的计算机上,C:\ user \ pmaj \ Documents是有效路径,但是当它在服务器上以ServerUser1的身份运行时...不是很多。我的模式为C:\ ssisdata \ SubjectArea \ Input&Output&Archive文件夹。

单击Columns(列)选项卡,由于将源列自动映射到目标,因此此处无需执行任何操作。通过单击标题对目标列名称进行排序。一个好的做法是滚动列表,查找未映射的任何内容。

运行程序包,并确认我们已经生成了一个新文件并且包含数据。关闭Excel并再次运行。它应该已经破坏了我们制作的文件。如果出现错误(通过在Excel中打开文件,文件上没有“手指”,那么您需要在Excel目标位置中找到“覆盖现有文件”的设置)

您现在已经解决了将数据导出到Excel的任务。现在,您想与他人分享新发现的智慧,并希望使用电子邮件来做到这一点。

有两种发送电子邮件的方法。最常见的是电子邮件任务。您需要建立与SMTP服务器的连接,我发现这在基于云的世界中会变得更加困难-尤其是在身份验证和将其作为无人值守的工作运行的情况下。

在这一点上,我假设您已经建立了有效的SMTP连接管理器。发送电子邮件任务很简单。定义接收电子邮件的人,主题,正文,然后添加附件。

发送邮件任务的替代方法是使用执行SQL任务。 DBA可能已经在您的服务器上配置了sp_send_dbmail,因为他们希望服务器在发生不良情况时向他们发出警报。通过该过程发送文件更加容易,因为其他人已经解决了smtp连接,权限等棘手的问题。

EXECUTE msdb.dbo.sp_send_dbmail 
    @profile_name = 'TheDbasToldMeWhatThisIs',@recipients ='pmaj@a.com;billinkc@b.com',@subject = 'Daily excel',@body = 'Read this and do something',@file_attachments = 'C:\ssisdata\daily\daily.xlsx';

除了使用现有的和维护的机制来发送文件之外,还可以通过?占位符轻松地对Execute SQL Task进行参数化,因此当通过dev / uat / prod部署软件包时,如果您需要更改配置文件,则创建SSIS变量和参数,并将值映射到过程的参数,并在部署后配置这些值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。