SSIS团队博客撰写了一篇很好的文章, Headers 为“API示例 - OleDB源和OleDB目标”,展示了如何以编程方式创建从OleDB源读取并写入不同Ole DB目标表的数据流 .
http://blogs.msdn.com/mattm/archive/2008/12/30/api-sample-oledb-source-and-oledb-destination.aspx
我遇到的问题是围绕以下几行代码:
destDesignTimeComponent.SetComponentProperty("AccessMode", 3);
destDesignTimeComponent.SetComponentProperty("OpenRowset", "[DimCustomer_Copy]")
仅当表DimCustomer_Copy已存在时,上述代码才有效 . 我要做的是让程序学习源表的结构并自动创建目标表 . 正如文章早期所解释的那样,可以选择将值2传递给AccessMode属性,将sql语句传递给SqlCommand属性 . 所以我做的是
destDesignTimeComponent.SetComponentProperty("AccessMode", 2);
destDesignTimeComponent.SetComponentProperty("OpenRowset", @"CREATE TABLE ...")
但这似乎不起作用 . 我知道我总是可以使用SqlCommand,SqlConnection等创建一个表,但我更喜欢以这种编程方式使用SSIS自动创建目标表 . 所以我的问题是如何做到这一点 .
1 回答
这是因为
ValidateExternalMetadata
被设置为True
. 但是,如果设置为false,则必须实现自己的'disconnected' validation .