我使用简单的DFT创建了一个SSIS包,并将文件从OLEDB源传输到OLEDB目的地。当我在源表中添加新列时,包仍然成功执行,但我希望我的包失败。任何人都可以建议如何解决它。
答案 0 :(得分:0)
在OLEDB源中选择表时,表的元数据将映射到public void changeScene(String scene){
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource(scene));
Parent root = (Parent) loader.load();
subViewController = loader.getController();
subViewController.setModel(mainModel);
Scene newScene = new Scene(root);
Stage newStage = new Stage();
newStage.setScene(newScene);
newStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
组件。
每次运行包时,它都会向SQL服务器发送OLEDB Source
命令,并检索数据,并将SQL表中的每一列映射到SELECT * From Table
列。
如果在SQL中找到了一列但未在OLEDB Source
中定义的列,则会忽略该列。另一方面,如果在SQL中找不到列并且在OLEDB Source
中定义了它,则会抛出异常。
在运行程序包之前验证元数据的唯一方法是在
OLEDB Source
执行之前添加Execute SQL Task
或Script Task
以检查元数据。
<强>参考强>
答案 1 :(得分:0)
在“控制流”区域中,在DFT之前添加Execute SQL Task
。
设置与数据库的连接,对于SQLStatement,请使用以下命令:
CREATE TABLE #temp (<define all columns currently in your OLEDB Source Table>)
INSERT INTO #temp
SELECT TOP 1 *
FROM <your OLEDB Source Table>
使用这个&#34;最糟糕的做法&#34;插入语法,如果OLEDB源表中添加或删除了任何列,则可能导致失败。