Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore di connessione SSIS - Nome file non valido

Sulla base delle informazioni presentate, stai facendo tutto correttamente. Se non conosci SSIS, una cosa che suggerirei è di ottenere una copia dell'eccellente componente aggiuntivo BIDSHiper . Ha ottime funzionalità che possono davvero farti risparmiare tempo, soprattutto per quanto riguarda le configurazioni e le espressioni.

Ho creato un pacchetto di riferimento che aveva un Connection Manager di Excel che puntava a C:\ssisdata\so_paulsmithjr.xls e cablato tutto.

A questo punto, so che le cose stanno funzionando, quindi era ora di spostare il pacchetto. Ho creato le seguenti variabili e i loro valori

  • File corrente - C:\ssisdata\so_paulsmithjr.xls
  • Segnaposto - ##FILE_PATH##
  • TemplateConnection - Provider=Microsoft.Jet.OLEDB.4.0;Data Source=##FILE_PATH##;Extended Properties="Excel 8.0;HDR=YES";

Una quarta variabile è impostata per essere un'espressione (fai clic con il pulsante destro del mouse sulla variabile, finestra delle proprietà. Imposta Valuta come Espressione =Vero ed Espressione è sotto)

  • CurrentConnection - REPLACE(@[User::TemplateConnection], @[User::PlaceHolder], @[User::CurrentFile])

Ho confrontato il valore CurrentConnection con ReferenceConnection (che è il valore originale della stringa di connessione di Excel Connection Manager) e le cose erano una corrispondenza. A questo punto, se dovessi modificare il valore di CurrentFile in C:\ssisdata\so_paulsmithjr - Copy.xls, ciò si rifletterebbe automaticamente nel valore di CurrentConnection.

Il trucco finale sarebbe utilizzare un'espressione su Excel Connection Manager. Ancora una volta, fai clic con il pulsante destro del mouse su CM e in Proprietà ci saranno Espressioni. Non si espanderà perché non c'è nulla sotto di esso. Invece fai clic sui puntini di sospensione e quindi seleziona la proprietà ConnectionString e seleziona nuovamente i puntini di sospensione e questa volta trascina il @[User::CurrentFile] variabile. Fai clic su OK x2 e ora il tuo gestore di connessione è impostato per l'uso ovunque specifichi la variabile CurrentConnection.

Funziona meglio?