Имя: Пароль:
IT
Админ
Сигнатура 00 62 4B 00 00 00 00 00
0 H A D G E H O G s
 
27.08.22
14:10
День добрый.
Есть программа, которая сжимает файл через Deflate, преобразует его в BASE64, пихает его на сервер mssql в табличку как VARBINARY(MAX), и заставляет mssql разжать его и сохранить на диск.

Все работает нормально, кроме того, что mssql добавляет в этот файл 8-байтовый заголовок вида: 00 62 4B 00 00 00 00 00

Есть идеи, что это такое?
1 H A D G E H O G s
 
27.08.22
14:11
Пихаем base64 в mssql через это:
--Вставка BASE64 сжатой dll
INSERT INTO ##TST_1C_ProxyLib
    (FileData)
VALUES
    (
    CAST(N'' AS XML).value(
                        'xs:base64Binary("%FileData%")'
                        , 'VARBINARY(MAX)'
                        )
    );

Сохраняем на диск через это:
--Всякие пути
SET @FileName = @TempPath+'\TST_1C_ProxyLib.dll';
set @SQLcommand = 'bcp "SELECT Decompress(FileDATA) FROM '+@TableName+'" queryout "'+@FileName+'" -T -n';
--Запись dll на диск
exec xp_cmdshell @SQLcommand, no_output;
-- Удаление таблицы
Drop table ##TST_1C_ProxyLib;
2 H A D G E H O G s
 
27.08.22
14:59
3 rphosts
 
27.08.22
16:52
(2) лишний контроль данных?
4 ДедМорроз
 
27.08.22
20:19
Так вывод идет на output поэтому указывается размер,чтобы на другой стороне знали,что и как прочитать - иначе как найти окончание двоичного потока?
5 H A D G E H O G s
 
27.08.22
20:24
(3) (4)
Все разрулилось через опцию -f "ИмяФайлаФормата"
6 DrZombi
 
гуру
29.08.22
05:59
(0) Зачем это?
Просто любопытно, где такое может пригодить?
7 H A D G E H O G s
 
29.08.22
10:27
(6) Надо развернуть свою dllку на сервере mssql и прописать ее хранимые процедуры.
8 Asmody
 
29.08.22
10:56
(7) фига ты хацкер!
9 Asmody
 
29.08.22
10:56
в смысле - это вообще законно?
10 H A D G E H O G s
 
29.08.22
11:06
(9) без учетки sysadmin это не сработает, так что -законно.
11 СеменовСемен
 
29.08.22
11:24
(10) борьба со злобными админами, которые не дают на серваке компоненту установить?
12 oleg_km
 
29.08.22
11:45
(11) А разве не это называют девопс? Сам программирую, сам развертываю, сам админю?
13 Святофор
 
29.08.22
11:48
(11) судя по включению xp_cmdshell одмины уже побеждены
14 H A D G E H O G s
 
29.08.22
12:34
(11) Нет. Просто mssql должен выполнить код на своей машине.
15 H A D G E H O G s
 
29.08.22
12:34
И вернуть мне результат как результат запроса.
2 + 2 = 3.9999999999999999999999999999999...