SSIS foreach 容器部署后出错

0
今天做的SSIS包, 在BIDS里可以正常运行,但部署到另一个服务器后 用SQL JOB运行出错。 可以看到包的其他部分都运行正常, 出错的是 FOREACH 容器。 这个容器主要是读取在远程服务器的平面文件 (在SQL 所在的服务器上通过 K Drive连接),历遍K下面文件夹里的所有文件,将路径和文件名存成变量,例如:K:FOLDER\FOLDER\File.log 再用到FLAT FILE CONNECTION MANAGER 上动态连接,然后将数据LOAD到数据库。过程并不复杂,在本地运行没有问题,用SQL JOB 显示也是成功,但实际没有读取文件。网上搜了搜,有人说要用UNC 路径名,该怎么用呢? 是在变量中设置吗? 如果我的文件在K DRIVE ,就是 \\SERVERNAME\K:FOLDER\FOLDER 吗?本人是新手,望多指导。谢谢了!
已邀请:
1

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-03-29 回答

首先你要看看这个K盘,你在你部署Package的服务器上是否也配置了。否则它是加载不到的。
我的建议是你不应该将 远程读取文件 和 加载数据 都交给一个SSIS包做的加载数据任务去做。
你可以分成2部分来完成:
1. 写一个SSIS的Package专门用来从远程服务器抓取文件,可以定时从服务器的某个目录将文件抓取到你本地的目录
2. 再写一个Package用来加载数据,这时候 Foreach Loop的目录就是你本地的目录而不是网络上某个地址的目录

或者你也可以用一个来做,把2个部分合在一起做。并且加入CheckPoint功能提供更好的健壮性
1

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-03-29 回答

另外补充一下,你可以使用第三方的C#控件来达到效果。
比如下面这个:
http://winscp.net/eng/docs/library
示例代码在它的网站上,你在ScriptTask里引用Dll后就可以直接调用。可以很方便的将远端的文件比如 压缩文件下载到本地,或者你也可以直接在远端解压缩,加载,移动。 等等
0

ever 2015-03-30 回答

谢谢大侠指点。 分部操作是个好办法,以后可以照办。只是这次部署PACAKGE的服务器已经配置了K 盘,但还是没办法读取,是不是在FOREACH LOOP CONTAINER 的 COLLECTION 这一步路径名 要在K 盘前加上服务器名? 
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-03-30 回答

你在本地测试的时候,是直接连接这个K盘的服务器吗?
还是K盘就在本地
你在服务器执行的时候,没有报错?那它是否有对K盘执行操作呢?
你可以记个日志看看,如果读取了就标记一下

要回复问题请先登录注册