Je crée un paquet SSIS qui importe 10 fichiers CSV différents, mais la disponibilité de chaque fichier varie - je veux donc faire en sorte que la vérification du fichier tourne jusqu'à ce que tous les fichiers soient là et puis commencez à importer le processus.SSIS For Loop - Attendre que le fichier continue
Je vérifie ce via un script T-SQL
IF OBJECT_ID('tblFileCheck') IS NOT NULL
DROP TABLE tbFileCheck;
CREATE TABLE tblFileCheck (
id int IDENTITY(1,1)
,subdirectory nvarchar(512)
,depth int
,isfile bit);
INSERT tblFileCheck
EXEC xp_dirtree '\\reports\Reports\CSV', 10, 1
BEGIN
IF EXISTS (
SELECT COUNT(id)
FROM tblFileCheck
HAVING count(id) > 9
)
BEGIN
PRINT 'Success - Import Latest File'
END
ELSE
BEGIN
RAISERROR ('Looping back to start - insufficient files to run', 16, 1);
END
END
Cependant, je ne peux pas obtenir la boucle de travailler, j'ai créé une varWaitForData
variable (int32, val = 0), a créé un éditeur de tâches SQL avec result set = single row
et définissez l'option de jeu de résultats sur le paramètre. Définissez InitExpression @varWaitForData = 0
et EvalExpression @varWaitForData == 0
.
Mais je continue à obtenir l'erreur [Execute SQL Task] Error: An error occurred while assigning a value to variable "varWaitForData": "Exception from HRESULT: 0xC0015005".
Lorsque vous exécutez la requête de votre tâche SQL d'exécution, quel est son résultat? –