利用SSIS在SQL Azure中执行计划任务(上)

日期: 2011-06-12 作者:Roman Rehak翻译:冯昀晖 来源:TechTarget中国 英文

由于SQL Azure还相当新,所以仍然有许多SQL Server的技术没有被移植到该云服务中。其中之一就是SQL Agent,这个工具可供DBA在数据库服务器上执行计划任务。   我们有几种方式可以模拟这种功能,比如,利用“sqlcmd”工具或者创建运行在Windows Azure中的“工作者角色”云应用。但是这些技术都比较复杂,而且不是很完美。

我们在SQL Azure中有更简单的方法可以执行计划任务——那就是在SQL Azure服务器上采用本地SQL Agent来执行SSIS包。   推荐的这两种执行计划任务的方式都有缺陷。你可以定时执行一个批处理任务,来用“sqlcmd”工具执行一个文件……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

由于SQL Azure还相当新,所以仍然有许多SQL Server的技术没有被移植到该云服务中。其中之一就是SQL Agent,这个工具可供DBA在数据库服务器上执行计划任务。

  我们有几种方式可以模拟这种功能,比如,利用“sqlcmd”工具或者创建运行在Windows Azure中的“工作者角色”云应用。但是这些技术都比较复杂,而且不是很完美。我们在SQL Azure中有更简单的方法可以执行计划任务——那就是在SQL Azure服务器上采用本地SQL Agent来执行SSIS包。

  推荐的这两种执行计划任务的方式都有缺陷。你可以定时执行一个批处理任务,来用“sqlcmd”工具执行一个文件,但是你必须指定密码作为参数传进去,因为SQL Azure只支持SQL认证。除非你愿意把密码包含在存储于文件中的命令行中,否则你不得不做一些编码处理来对密码进行加密和解密,然后在“sqlcmd”中使用解密的密码。微软提供了一个示例来展示如何创建运行于Azure中的工作者线程应用,但是(1)你将不得不对每项工作定制编码;(2)你甚至可能还没有可用的Windows Azure账号,所以云应用不是可选的方案。

  利用SSIS包的技术是相当简单的,如果你掌握基本的SSIS技能,只需要花几分钟就能实现。实现思路就是:创建一个SSIS包,定义指向SQL Azure的连接,并执行一个SQL任务。然后,你需要在本地SQL Agent上定义该包计划执行的时间。当任务运行时,它就会连接到SQL Azure并执行定义好的SQL 任务。

  使用本地SQL Agent可以让你访问它的许多功能,你可以定义执行属性(比如:重试次数),任务步骤工作流以及通知。此外,你的任务将会与其它任务一样显示在SQL Agent任务历史中。而且,如果你使用了已经在使用的任务,你就可以少一个监视代理。

  第一步是创建一个SSIS包。在该包中,你需要使用SQL凭据定义指向SQL Azure的连接。选择“新建ADO.NET连接”选项。完成后的对话框大概如下图所示。

图1:“连接管理器”对话框显示了如何配置指向Azure数据库的连接。

  使用SSIS有一个好处就是:密码在存储到包里之前会自动加密,而运行时会自动解密。

  接下来,添加“执行SQL步骤”任务,并把它配置为执行Transact-SQL脚本或者执行一个存储过程。你可以硬编码参数值或者配置包在运行时处理参数传递。

相关推荐