2010-07-27 18 views
5

Estoy intentando ejecutar un paquete SSIS en SQL 2005 utilizando los siguientes:SSIS DTEXEC paquete carácter de espacio variable no aceptado

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

rendimientos esto:

Option "Batch " is not valid. 

El espacio al final de la palabra Batch dentro de las comillas me dio una pista de que quizás esté tratando la última barra invertida como un carácter de escape. Así que he intentado de esta manera:

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

Esto permitió que el paquete para ejecutar, pero cuando esta variable se utiliza como el nombre de un flatfile de datos de salida a, ahora se da el siguiente error:

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 

¿Qué ofrece?

Respuesta

8

En el mensaje de error que enumera el archivo de datos de error, la sola barra invertida después de la palabra Batch da la sugerencia de que tal vez solo esa barra invertida se vea afectada.

Algunas pruebas demostraron que, por alguna extraña razón, cuando el último carácter de una variable de paquete debe ser una barra diagonal inversa, SSIS requiere que se duplique. Esto se aplica incluso cuando se usa la GUI y se elige un trabajo de tipo "Paquete de SQL Server Integration Services" y se hace clic en la pestaña "Establecer valores": una barra invertida final debe duplicarse.

La última orden de trabajo fue:

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

Con una doble barra invertida final.

+0

¿Sería esto un error de Microsoft? –

+0

Creo que es algo estándar para escapar de las comillas con una barra diagonal inversa. Lo extraño es que escaparse de la barra invertida en sí solo se permite cuando está antes de un carácter de comillas dobles, en esencia, barra invertida que escapa '" 'o' \ "' y nada más. Esto puede ser un comportamiento normal del comando por lotes de DOS, pero no estoy seguro. – ErikE

+0

Realmente aprecio su pregunta y respuesta. Cuando tenía rutas de red como \\ mi servidor \ mi ruta \ la dividía en \\ mi "servidor \ mi" "\ ruta \ hasta que encontré su solución. Empecé a investigar hace unos meses hasta que encontré tu publicación. –

Cuestiones relacionadas