Tack gode gud, tack vare @user_0-svaret och @user3494351s kryptiska svar och kommentar och detta uråldriga foruminlägg kom jag äntligen på det här efter flera timmars dunkande med huvudet i väggen.
Problemet är att BCP gillar att lägga till ytterligare 8 byte till filen som standard. Detta förstör filen och gör att den inte kan öppnas om du bara använder den ursprungliga flaggan -n.
Däremot låter BCP dig ange en formatfil som utdata som kan tillåta dig att tala om för den att inte lägga till de extra 8 byten. Så jag har en tabell som jag skapade (att användas i en markör) i SQL Server som bara har EN RAD och EN KOLUMN med mina binära data. Tabell måste finnas när du kör det första kommandot.
I kommandoraden först måste du göra detta:
bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt
Detta skapar formatfile.fmt i katalogen du befinner dig i. Jag gjorde det på E:\-enheten. Så här ser det ut:
10.0
1
1 SQLBINARY 8 0 "" 1 MyColumn ""
Den där 8 där är variabeln som bcp säger hur många byte som ska läggas till i din fil. Det är jäveln som korrumperar dina filer. Ändra det suget till en 0:
10.0
1
1 SQLBINARY 0 0 "" 1 MyColumn ""
Kör nu bara ditt BCP-skript, släpp -n-flaggan och inkludera -f-flaggan:
bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt