Это компонента не для 1С, а для SQL-сервера. Все действия выполняются в консоли сервера (management studio, скачивается бесплатно, рабочий сервер можно прилинковать и выпонять целевые запросы удаленно)
Подключите компоненту так:
CREATE ASSEMBLY sqlDeflate from 'C:\sqlDll.dll' WITH PERMISSION_SET = SAFE
(для удаления drop ASSEMBLY sqlDeflate)
Свяжите с ней функции, которыми можно будет пользоваться:
CREATE FUNCTION fdecode(@inbyte varbinary(max)) RETURNS varbinary(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].decode
CREATE FUNCTION fcode(@inbyte varbinary(max)) RETURNS varbinary(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].code
CREATE FUNCTION fdecodeToStr(@inbyte varbinary(max)) RETURNS nvarchar(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].decodeToStr
CREATE PROCEDURE load(@Path nvarchar(max)) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].load
CREATE FUNCTION fdecodeUser(
@inbyte as varbinary(max),
@cmd as nvarchar(max) ,
@sqlPathToTable as nvarchar(max)
) RETURNS nvarchar(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].decodeUser
(для удаления: drop FUNCTION fdecode и аналогично остальные)
Выполнять функции возможно после разрешения использовать компоненту:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Примеры использования:
select dbo.fdecodeUser(t.Data,'decode',''), * from v8users as t
(извлекаем строку)
select dbo.fdecodeUser(t.Data,'hpwd',''), * from v8users as t
(извлекаем хеш пароля)
select dbo.fdecodeUser(t.Data,'pwd ru 6',''), * from v8users as t (до 6 цифр и букв)
select dbo.fdecodeUser(t.Data,'pwd en 6',''), * from v8users as t (до 6 цифр и букв)
select dbo.fdecodeUser(t.Data,'pwd all 6',''), * from v8users as t (до 6 цифр и букв)
select dbo.fdecodeUser(t.Data,'roles id',''), * from v8users as t (роли идентификаторами)
exec dbo.load "test1С.dbo.Params" (инициализация описаний для базы test1С.dbo.Params)
select dbo.fdecodeUser(t.Data,'roles','test1С.dbo.Params'), * from v8users as t (роли именами, требуется указание базы, из которой инициализировались описания)
А это печать содержания DBNames:
declare @var nvarchar(max);
select @var=dbo.fdecodeToStr(t.BinaryData) from Params as t where t.FileName='DBNames';
--печатаем
DECLARE @Counter INT
SET @Counter = 0
DECLARE @TotalPrints INT
SET @TotalPrints = (LEN(@var) / 4000) + 1
WHILE @Counter < @TotalPrints
BEGIN
PRINT SUBSTRING(@var, @Counter * 4000, 4000)
SET @Counter = @Counter + 1
END
Важно понимать, что какие-то данные (к примеру, Config и Params) просто сжаты алгоритмом Deflate, а какие-то (v8users) уже именно закодированы.
Я не стал писать обратное кодирование для v8users, т.к. легко себе представил, как оно может доставить неприятности (кто-нибудь по неопытности может мимо платформы вписать в таблицу свои данные).
Надеюсь этот мануал будет полезен для восстановления работоспособности базы 1С8. И конечно для отчетов по ролям пользователей пригодится.