我无法控制的一个进程是每晚在MySQL数据库中删除和重新创建表。如果每次都以相同的方式重新创建表,这不会是一个问题(我认为)。但事实并非如此:每天早上我都会打开我的SSIS项目,我会在随机表/列中得到新的元数据验证错误/警告,因为这一夜间过程将创建长度取决于数据的varchar列,因此昨天我有一个90长度的列,而今天同一表中的同一列现在有208条,明天可能是另一个故事……或者不是。
这个MySQL数据库是我的主要数据源--我在Server上拥有我的暂存数据库,通过链接服务器连接,我使用SSIS从这些表中选择数据并进入server表(添加了几个列),在用远程数据填充它们之前,我要截断这些数据(因此这个临时数据库中的元数据是固定的)。
为什么SSIS需要验证外部元数据?如果我关闭设计时验证,它说它被延迟到运行时--这是否意味着我只会将问题从设计时推到运行时,而仍然得到一个失败的包?
我有一个MySQL脚本可以执行从MySQL到Server暂存表的数据传输,但是该脚本在45分钟内运行,而SSIS包(当所有元数据都是最新的)在大约5分钟内运行--不用说,我更喜欢找到一种方法让SSIS停止抱怨过时的元数据,而不是使用该脚本。
有没有一种方法可以在SSIS中使用数据源的形状转换器并保持我的理智?
发布于 2015-01-26 15:22:06
在这种令人不快的情况下,我认为最好的策略是将其与SSIS分开。要么将其移到具有更改视图的链接服务器上,要么使用其他一些etl工具(如powershell脚本)将其从舞蹈模式中移出到一个固定的表中。如果您有任何历史记录,您应该能够猜测一个合理的值,为更高的字段大小。你总是可以把它变成varchar(最大)。我假设MySql正在做一个“select into”来创建表。在任何情况下,MySql都不会对数据做出任何可靠的断言,因此您需要自己去做,才能让SSIS满意。
https://dba.stackexchange.com/questions/89933
复制相似问题