Gudskelov, tak til @user_0 svar og @user3494351's kryptiske svar og kommentar og dette ældgamle forumindlæg fandt jeg endelig ud af dette efter flere timers banke mit hoved mod væggen.
Problemet er, at BCP kan lide at tilføje yderligere 8 bytes til filen som standard. Dette ødelægger filen og gør den ude af stand til at blive åbnet, hvis du bare bruger det oprindelige flag -n.
BCP giver dig dog mulighed for at angive en formatfil som output, der kan tillade dig at fortælle den ikke at tilføje de ekstra 8 bytes. Så jeg har en tabel, jeg oprettede (som skal bruges i en markør) i SQL Server, der kun har EN RÆKKE og EN KOLONNE med mine binære data. Tabel skal eksistere, når du kører den første kommando.
I kommandolinjen først skal du gøre dette:
bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt
Dette opretter formatfile.fmt i den mappe, du er i. Det gjorde jeg på E:\-drevet. Sådan ser det ud:
10.0
1
1 SQLBINARY 8 0 "" 1 MyColumn ""
Den 8 lige der er den variabel, som bcp siger, hvor mange bytes der skal tilføjes til din fil. Det er bastarden, der ødelægger dine filer. Skift den sugekop til en 0:
10.0
1
1 SQLBINARY 0 0 "" 1 MyColumn ""
Nu skal du bare køre dit BCP-script, slippe -n-flaget og inkludere -f-flaget:
bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt