2010-07-27 18 views
5

aşağıdaki kullanarak SQL üzerinde 2005 yürütmek bir SSIS paket çalışılıyor:SSIS dtexec Paketi Değişken Uzay Karakter Kabul Edilmedi

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

bu verim:

Option "Batch " is not valid. 

sonunda boşluk Alıntılar içindeki Batch kelimesi bana belki de bir final karakteri olarak son ters eğik çizgiyi işlediğine dair bir ipucu verdi. Bu yüzden bu şekilde çalıştı:

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

Bu çalıştırmak için paket izin verilir, ancak bu değişken için çıkış verilerine bir Flatfile adı olarak kullanıldığı zaman, şimdi aşağıdaki hatayı veriyor:

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 

Ne verir?

cevap

8

Hatalı veri dosyasını listeleyen hata iletisinde, Batch sözcüğünden sonraki tek ters eğik çizgi, belki de yalnızca ters eğik çizginin etkilendiğine dair ipucu verir. Bazı testler, bazı değişkenler için, paket değişkeninin son karakterinin ters eğik çizgi olması gerektiğinde SSIS'nin iki katına çıkarılmasını gerektirdiğini kanıtlamıştır. Bu, GUI kullanıldığında ve "SQL Server Entegrasyon Servisleri Paketi" türünde bir iş seçerek ve "Değerleri ayarla" sekmesine tıklayarak bile geçerlidir: sondaki ters eğik çizgi ikiye katlanmalıdır.

son çalışma komutu oldu: nihai çift ters eğik çizgi ile

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

.

+0

Bu bir Microsoft hatası olarak kabul edilebilir mi? –

+0

Sanırım bir ters eğik çizgi ile tırnak kaçmak için bir standarttır. Garip kısım, ters eğik çizgi kaçmak sadece bir çift alıntı karakteri önce olduğu zaman izin verilir - özünde, ters bölü kaçmak "" veya "\" 've başka bir şey. Bu, normal DOS toplu komut davranışı olabilir - ancak emin değilim. – ErikE

+0

Yukarıdaki soru ve cevabınızı gerçekten takdir ediyorum. \\ sunucum \ yolum gibi ağ yollarına sahip olduğumda, çözümünüzü bulana kadar \\ benim "" sunucum \ "" \ yol \ "bölümüne bölerdim. Bu ay önce senin yazılarını bulana kadar araştırma yapmaya başladım. –