在源表上进行修改时,SSIS包正在执行

时间:2017-12-20 07:40:54

标签: sql-server ssis etl ssis-2012

我使用简单的DFT创建了一个SSIS包,并将文件从OLEDB源传输到OLEDB目的地。当我在源表中添加新列时,包仍然成功执行,但我希望我的包失败。任何人都可以建议如何解决它。

2 个答案:

答案 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 TaskScript 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源表中添加或删除了任何列,则可能导致失败。