SQL 2005 SSIS中使用FTP控件

在SSIS包中使用FTP控件,从FTP服务器上读取文件,本来是一件很简单的事情,在BIDS中也很容易地调试通过,可是发布到SSIS服务器后,用SQL Agent去定时运行,却怎么也不能成功。错误消息如下:

OnError,XXXX,XXXX/appsuser,Pkg_XXXx,{DE4F22C0-649A-4CF3-BAE4-AD6B645D8D9E},{8DFB2020-24FB-4231-821B-0440E9FD3FE6},12/21/2007 12:30:02 PM,12/21/2007 12:30:02 PM,-1073573489,0x,Unable to connect to FTP server using "FTP Connection Manager".

这是因为Windows Agent Service或SSIS Service运行的用户和开发SSIS包的用户不同,默认,SSIS使用Network Service这个系统用户启动的,而Agent是用Local System这个用户启动的。而默认的SSIS包的package protection level是 EncryptSensitiveWithUserKey。

如果是数据库的Connection,一般使用包配置文件,然后在配置文件中手动填入密码,可解决这个问题,但是对于FTP的connection, 配置文件也不管用,解决这个问题的方法如下:

1)把SSIS包的protection level设置成EncryptSensitiveWithPassword,然后设置包的密码;

2)然后配置包,生成包的配置文件,把包的PackagePassword放在配置文件中(注意,生成配置文件后,配置文件并不包含密码,需要手动打开配置文件,填写密码)

3)发布包;

这样,包就可以在Agent下运行了。

 

特别注意网上有多种解决方法,比如1)修改windows service的用户 2)修改包的Protection Level为DontSaveSensitivePassword等

但是最后都不管用,只有以上方法可用。

 

另外想说一下第二步,如果创建Job直接调用加密包,据说直接在创建Job时输入密码就可以了,不用配置文件,(这个本人没有测试过),但是如果出现PackageA调用PackageB的,而PackageB是加密包,Agent调用的是packageA, 那么在创建Job时就不会提示用户数据密码,这时候就必须使用包配置文件,把PackagePassword放在配置文件中。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值