Мне нужно преобразовать двоичный файл (zip-файл) в шестнадцатеричное представление, чтобы затем отправить его на sql-сервер в качестве параметра функции varbinary (max).
Полный пример (с использованием очень маленького файла!):
1) мой файл содержит следующие биты 0000111100001111
2) Мне нужна процедура, чтобы БЫСТРО преобразовать ее в 0F0F
3) Я буду вызывать функцию сервера sql, передавая 0x0F0F
в качестве параметра
Проблема в том, что у меня есть большие файлы (до 100 МБ, даже если возможен размер файла 100 КБ), поэтому мне нужен самый быстрый способ сделать это.
В противном случае указано: мне нужно создать строку
'0x'+BinaryDataInHexadecimalRepresentation
самым эффективным способом. (Примечание: может быть, есть способ немедленно открыть файл и получить шестнадцатеричную строку, поэтому в этом случае все, что мне нужно, это использовать «этот путь», если он есть).
Смежный вопрос: передача шестнадцатеричных данных на сервер sql
ОБНОВЛЕНИЕ : после прочтения комментариев я думаю, что здесь необходимо добавить больше информации. Причина, по которой я пытаюсь использовать текстовую команду T-SQL для отправки двоичных данных в хранимую процедуру, заключается в том, что таким образом я снимаю некоторые издержки на сервер: сохраненный prcoedure получает двоичные данные и записывает их в файл (это моя конечная цель). Если я использую компонент DAC, я смогу легко отправлять данные biray на сервер, но в этом случае мне нужно использовать временную таблицу для хранения данных, а затем отправлять эти данные в хранимую процедуру, которая записывает файл.
Итак, идея такова:
1) использование T-SQL «длинной» команды: больше накладных расходов на клиенте, потому что мне нужно прочитать файл и преобразовать его в шестнадцатеричное для подготовки длинной команды; меньше нагрузки на сервер, так как сервер sql просто получает двоичные данные и обрабатывает их в хранимой функции
2) с использованием DAC: мне нужно пройти через временную таблицу на сервере sql, поэтому на сервере больше накладных расходов
Поскольку я использую сервер в качестве сервера веб-документов (это хитрость), я хочу попытаться уменьшить нагрузку на сервер. В любом случае, возможно, я ошибаюсь, и (2) в любом случае это лучшая техника, чем (1)