2010-02-09 2 views
0

SSIS Blog de l'équipe a écrit un bon article intitulé "API Exemple - Source OleDB et destination OleDB", montrant comment créer par programmation un flux de données qui lit à partir de la source OleDB et écrit dans une autre table de destination Ole DB.Comprendre la "API Sample - OleDB Source et OleDB Destination" article SSIS blog de l'équipe

http://blogs.msdn.com/mattm/archive/2008/12/30/api-sample-oledb-source-and-oledb-destination.aspx

Le problème que je suis en cours d'exécution en est autour des lignes couple suivantes de code:

destDesignTimeComponent.SetComponentProperty("AccessMode", 3); 
destDesignTimeComponent.SetComponentProperty("OpenRowset", "[DimCustomer_Copy]") 

Le code ci-dessus ne fonctionne que si la table DimCustomer_Copy existe déjà. Ce que j'essaie de faire, c'est que le programme apprenne la structure de la table source et crée automatiquement la table de destination. Comme expliqué au début de l'article, il existe une option de passer une valeur de 2 à la propriété AccessMode et l'instruction sql à la propriété SqlCommand. Donc, ce que j'ai fait est

destDesignTimeComponent.SetComponentProperty("AccessMode", 2); 
destDesignTimeComponent.SetComponentProperty("OpenRowset", @"CREATE TABLE ...") 

Mais cela ne semble pas fonctionner. Je sais que je peux toujours créer une table en utilisant SqlCommand, SqlConnection, etc., mais je préfère que la table de destination soit créée automatiquement en utilisant SSIS de cette manière programmatique. Donc, ma question est de savoir comment le faire.

+0

AccessMode 4 est OpenRowset pour Fast Load à partir d'une variable. Quel code avez-vous utilisé pour définir votre valeur de variable pour OpenRowset? À partir de votre exemple de code, il apparaît que vous essayez de créer la table dans l'appel OpenRowset SetComponentProperty. –

+0

Vous avez raison sur le mode d'accès 4. J'ai changé à 2 dans la question. –

Répondre

1

Il est parce que le ValidateExternalMetadata a été mis à True. Toutefois, si vous définissez sur false, vous devez implémenter votre propre 'disconnected' validation.