|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Bonjour,
J'aimerais dans un lot SSIS (SQL Server 2008 R2) pouvoir paramétrer la propriété TablesList dans un "Transfert d'objet SQL Server". En effet, je ne connais pas à l'avance la structure des tables à transférer et je ne peux pas faire de SELECT * INTO ... car la destination est un serveur lié chez mon hébergeur. (Et je ne peux pas, depuis l'hébergeur, créer un serveur lié vers mon serveur) J'ai essayé de stocker dans une variable la liste des tables à transférer, mais rien n'y fait. En cherchant sur le net je n'ai trouvé que des astuces consistant à passer par un script ActiveX pour modifier dynamiquement TablesList... N'y-a-t'il pas plus simple ? En vous remerciant par avance. Adrien |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() |
En passant dynamiquement la valeur de TableList via les expressions sur la tache de transfert d'objet?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() |
Qu'avez vous tenté de faire avec la variable?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Merci de prendre le temps... ;-)
Pour simplifié, je ne vais pas tenter une liste de table mais simplement une table à la fois (au pire je mettrais le tout dans un ForEach). Je stock donc dans une variable [NOMTABLE] (dont l'entendue est le package entier) de type string le nom de la table à transférer. Ensuite, dans l'éditeur de tâche de Transfert d'objet, dans la partie Expressions, je renseigne l'expression TablesList avec la variable @[User::NOMTABLE] A l'éxécution, j'obtiens le message suivant : Citation:
Cdlt, |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() |
Ok... avez vous mis delayvalidaton à true sur la tache?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Bonjour,
Je l'avais fait sur le Package mais pas sur le tâche. Je viens d'essayer, mais le problème reste le même : Erreur*: Le résultat de l'expression «*@[User::NOMTABLE]*» sur la propriété «*TablesList*» ne peut pas être écrit dans la propriété. L'expression a été évaluée, mais ne peut pas être définie sur la propriété. J'ai aussi essayé en mettant dbo.matable dans ma variable.... idem. J'ai l'impression que le format string de la variable ne convient pas à la propriété... Merci |
|
|
00
|
|
|
#7 | |
|
Membre Expert
![]() |
Citation:
avec vous essayé avec une variable de type object? Mais je doutes que ça fonctionne...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Je doute que cela fonctionne, mais de toute façon, je n'arrive pas à tester cela car si je met ma variable en type Objet, je n'arrive plus à lui attribuer une valeur.
Je vais fouiller un peu + sur les sites anglophones, si je trouve une solution, je viendrai bien sûr la poster ici. cdlt, |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : octobre 2011 Messages : 5 ![]() |
Après plusieurs tests et recherches, j'ai fini par y arriver. Voici comment j'ai procédé :
1- Création du package [UPLOAD_EXTRACTION_PREPROD.dtsx] de transfert avec toutes le connexions enregistrées dans un fichier de configuration (fait en passant par le menu SSIS -> Configuration de Package) 2- Création d'un objet "Transfert d'objet SQL" [movetables] dans lequel les serveurs sources et cibles sont correctement renseignés 3- Création d'un package [UPLOAD_EXTRACTION_PREPROD_CALL.dtsx] 4- Ajout d'une tache de script dans ce package dont le code est ci-dessous Code :
En ce qui me concerne, ça fonctionne, je n'ai plus qu'à passer en paramètre la ou les tables que je veux transférer et à faire référence à ce paramètre dans le script à la place de "TABLE_201110031547_ID376". Les critiques et commentaires sont les bienvenus s'il y a mieux ;-) |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com