2010-07-27 19 views
5

Sto tentando di eseguire un pacchetto SSIS in SQL 2005 utilizzando i seguenti:SSIS DTEXEC pacchetto Spazio variabile carattere non accettato

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 
/SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\" 

questa rendimenti:

Option "Batch " is not valid. 

Lo spazio al termine della la parola Batch all'interno delle virgolette mi ha dato un suggerimento che forse sta trattando l'ultima barra rovesciata come un personaggio di fuga. Così ho provato in questo modo:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 
/SET "\Package.Variables[FileFolder].Value";"\\\\SomeServer\\Someshare\\Output Batch\\" 

Questo ha permesso il pacchetto di correre, ma quando questa variabile è utilizzato come nome di un flatfile per inviare dati ad, ora dà il seguente errore:

Warning: 2010-07-27 14:36:38.23 
    Code: 0x8007007B 
    Source: Data Flow Task Flat File Destination [72] 
    Description: The filename, directory name, or volume label syntax is incorrect. 
End Warning 
Error: 2010-07-27 14:36:38.23 
    Code: 0xC020200E 
    Source: Data Flow Task Flat File Destination [72] 
    Description: Cannot open the datafile "\\\\SomeServer\\Someshare\\Output Batch\FlatFile.txt". 
End Error 

Cosa dà?

risposta

8

Nel messaggio di errore che elenca il file di dati di errore, la singola barra retroversa dopo la parola Batch dà il suggerimento che forse solo quella barra rovesciata è interessata.

Alcuni test hanno dimostrato che, per qualche strana ragione, quando l'ultimo carattere di una variabile di pacchetto deve essere un backslash, SSIS richiede che sia raddoppiato. Ciò si applica anche quando si utilizza la GUI e si sceglie un lavoro di tipo "Pacchetto di SQL Server Integration Services" e facendo clic sulla scheda "Imposta valori": una barra rovesciata finale deve essere raddoppiata.

Il comando di lavoro finale è stato:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF 
/SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\\" 

Con un doppio-barra rovesciata finale.

+0

Questo potrebbe essere considerato un bug Microsoft? –

+0

Penso che sia piuttosto normale scappare dalle virgolette con una barra rovesciata. La parte strana è che l'escape del backslash è permesso solo quando è prima di un carattere di doppia citazione - in pratica, backslash che esegue l'escape di "" 'o' \ "' e nient'altro. Questo potrebbe essere il normale comportamento del comando batch di DOS, ma non ne sono sicuro. – ErikE

+0

Apprezzo molto la tua domanda e risposta. Quando avevo percorsi di rete come \\ mio server \ mio percorso \ lo dividerei in \\ mio "" server \ mio "" \ percorso \ finché non ho trovato la soluzione. Ho iniziato a fare ricerche per la prima volta questo mese fa, fino a quando ho trovato il tuo post. –

Problemi correlati