J'ai lu ce fil: SSIS : Dynamically passing Table names et c'est exactement ce que j'essaie d'atteindre. Je suis arrivé au point de créer la variable de chaîne.Noms de table passants dynamiquement - en utilisant la commande SQL de la variable
Cependant, dans l'éditeur de source OleDB, quand j'ai choisi d'utiliser la commande SQL de variable, l'aperçu a donné l'invite d'erreur suivant:
Exception de HRESULT: 0xC0202009 Erreur au flux de données Tâche [OLE DB Source [ 37]]: Code d'erreur SSIS DTS_E_OLEDBERROR. Une erreur OLE DB s'est produite. Code d'erreur: 0x80040E14. Un enregistrement OLE DB est disponible. Source: "Microsoft SQL Server natif client 11.0" Hresult: 0x80040E14 Description: "Énoncé (s) n'a pas pu être préparé.". Un enregistrement OLE DB est disponible. Source: "Microsoft SQL Server natif Client 11.0" Hresult: 0x80040E14 Description: "Doit déclarer la variable de table" @ ".".
Appréciez un peu d'aide sur ce qui pourrait être le problème ici.
Voici les composants que j'ai configurés.
tâche d'exécution SQL:
SELECT nom de sys.tables WHERE nom comme '% $ Société Information'Order par nom Set Résultat: Nom de la variable = utilisateur :: IndivTableName; Nom du résultat = 0; Type de données = objet
pour chaque conteneur Loop:
recenseur: énumérateur ADO Foreach
ADO variable Source Object: User :: IndivTableName
mode Enumeration: lignes dans la première tableau
(Est-ce nécessaire?) Mappages de variables: Variable = Utilisateur :: Indivable; Index = 0; Type de données = objet
Chaîne variable:
Nom de la variable: l'utilisateur :: CompanyInformation
Expression: « , sélectionnez [nom], [adresse], [adresse 2], [ville ], [numéro d'enregistrement _], [type d'entreprise [téléphone pas _], [no_ fax], [TVA Numéro d'enregistrement _]] de "+ "@ [User :: IndivTableName]"
Evaluated Valeur: sélectionnez [ nom], [adresse], [adresse 2], [ville], de @ [User :: IndivTableName]
données Source Editor [téléphone pas _], [fax no_], [TVA Numéro d'enregistrement _], [numéro d'enregistrement _], [type d'entreprise] :
mode d'accès aux données: commande SQL de variables
nom de la variable: l'utilisateur :: CompanyInformation
Valeur variable: sélectionnez [nom], [adresse], [adresse 2], [ville ], [téléphone no _], [fax no_],[No _ enregistrement de la TVA][numéro d'enregistrement _], [type d'entreprise] de @ [User :: IndivTableName]
Bonjour, j'ai changé le type de données de User :: IndivTable en String et j'ai également mis à jour l'expression User :: CompanyInformation comme indiqué, mais cela provoque toujours la même erreur. Dois-je configurer une valeur ou une expression par rapport à cette variable IndivTable? –
@JamieLim, pouvez-vous configurer un point d'arrêt sur DataFlow, vérifier la valeur de * User :: CompanyInformation * et le mettre ici. – Ferdipux
Salut @Ferdipux, j'ai réussi à résoudre ce problème. User :: IndivTable mis en place avec Datatype = String et Value = le premier résultat de la tâche Execute SQL. L'expression finale utilisée pour User :: CompanyInformation est: "SELECT [nom], [adresse], [adresse 2], [ville], [n ° de téléphone], [fax no_], [enregistrement de TVA non _], [enregistrement non _], [type d'entreprise] FROM "+" ["+ @ IndivTable +"] " –