您的位置:首页 > 大数据 > 人工智能

[转]SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性

2014-03-06 14:35 399 查看
本文转自:/article/4751476.html

在上一个导入列这个例子中我们创建一个实际的表来存储文件路径,在生产环境中我们可能不会创建一个实际的物理表来存储这些信息,而是创建临时表。这里有一个小小的技巧,在Control Flow中拖放两个Execute SQL task,一个创建临时表,另一个销毁临时表,执行这个package,会遇到一个错误,在Progress中提示信息显示不存在这个临时表。错误信息如下:

Error: 0xC002F210 at Execute SQL Task 1, Execute SQL Task: Executing the query "drop table #Table1" failed with the following error: "Cannot drop the table '#Table1', because it does not exist or you do not have permission.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

Task failed: Execute SQL Task 1

很明显即使使用相同的连接对象,这两个Execute SQL任务没有使用相同的连接,查看这个OLE DB Connection的属性,会注意到有一个属性RegainSameConnection,默认的值是false。呵呵,这里要设置成true才能满足需求的。如图6-1



图6-1

每一个task都回单独地使用这个连接,但是临时表只能在一个连接中有效,连接关闭时临时表也就不存在了。将这个属性修改为true,所有的task都会使用同一个连接,这样就不会出错了。在循环任务中需要连接数据库时这个属性设置也很重要,它将避免多次打开,关闭连接。

这个和我们在写sql语句的时候使用临时表是一样的,所以说只要我们足够的熟悉SQL Server中的概念,SSIS也就很容易上手了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: