我正在尝试构建的ssis包中的数据流任务有问题。该程序包的目标是通过vpn连接使用与包含数据源的远程服务器的连接来更新位于本地服务器中的表。
完全重新下载的表没有问题。
但是有些表必须真实更新。我的意思是他们没有重新下载。对于每个表,我必须检查本地服务器中的日期列的最大值(int YYYMMDD类型),并要求程序包仅下载在该日期之后添加的数据。
我考虑使用标量(@MAXDATE for ex)但问题是,我必须在与本地服务器的会话中声明此标量,并且我不能将其用作OLE DB Source任务中的条件,因为后者意味着一个新的会话,这次与远程服务器。
我只能在远程服务器上查看数据库并导入它。所以无法在其上创建表格。
我希望它足够清楚。你有任何解决这个问题的技巧吗?
提前谢谢你。
Ozgur
答案 0 :(得分:0)
您可以使用执行SQL任务,数据流任务和一个变量轻松完成此操作。我可能会添加一些错误检查,以防万一在本地系统上找不到任何值,但这很大程度上取决于可能出现的问题。
假设VS2008
声明datetime类型的包级别变量。给它一个合适的默认值。
使用返回适当日期值的查询创建执行SQL任务。在属性窗口的第一页上,确保将结果集设置为“单行”。在“结果集”页面上,将日期列映射到包变量。
创建数据流任务。在OLE DB数据源中,编写查询以包含传入日期值的问号。 “和MaxDate>?”。现在,当您单击Paramaters按钮时,您应该会弹出一个允许您将“Parameter0”映射到包级别变量的弹出窗口。