Cảm ơn chúa, cảm ơn câu trả lời của @ user_0 và câu trả lời và nhận xét khó hiểu của @ user3494351 và bài đăng trên diễn đàn cổ xưa này, cuối cùng tôi đã tìm ra điều này sau vài giờ đập đầu vào tường.
Vấn đề là BCP thích thêm 8 byte bổ sung vào tệp theo mặc định. Điều này làm hỏng tệp và khiến tệp không thể mở được nếu bạn chỉ sử dụng cờ -n gốc.
Tuy nhiên, BCP cho phép bạn chỉ định một tệp định dạng làm đầu ra có thể cho phép bạn yêu cầu nó không thêm 8 byte thừa. Vì vậy, tôi có một bảng mà tôi đã tạo (được sử dụng trong con trỏ) trong SQL Server chỉ có MỘT ROW và MỘT CỘT với dữ liệu nhị phân của tôi. Bảng phải tồn tại khi bạn chạy lệnh đầu tiên.
Trong dòng lệnh, trước tiên bạn cần thực hiện điều này:
bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt
Điều này tạo ra formatfile.fmt trong thư mục bạn đang ở. Tôi đã làm trên ổ đĩa E:\. Đây là những gì nó trông như thế nào:
10.0
1
1 SQLBINARY 8 0 "" 1 MyColumn ""
8 bên phải đó là biến mà bcp cho biết cần thêm bao nhiêu byte vào tệp của bạn. Đó là tên khốn đang làm hỏng các tệp của bạn. Thay đổi bộ hút đó thành 0:
10.0
1
1 SQLBINARY 0 0 "" 1 MyColumn ""
Bây giờ chỉ cần chạy tập lệnh BCP của bạn, thả cờ -n và bao gồm cờ -f:
bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt