Как расшифровать хранимую процедуру в SQL Server 2008
У меня есть хранимая процедура, которая зашифровывается с помощью опции WITH ENCRYPTION. Теперь я хочу расшифровать эту процедуру. Я уже пробовал хранимую процедуру под названием "Decryptsp2K", которая предоставляется для SQL 2000 в этом форуме: http://forums.asp.net/t/1516587.aspx/1
Но он удаляет мою хранимую процедуру, а не расшифровывает ее.
Есть ли способ расшифровать хранимую процедуру в SQL Server 2008?
Ответы
Ответ 1
В SQL Server 2008 по-прежнему работает статья SQL Server Pro Расшифровать объекты SQL Server.
Вам необходимо подключиться через ЦАП. См. Файл "Расшифровать хранимые процедуры SQL, функции, триггеры, views.sql" в загрузке.
Просто, чтобы суммировать шаги, которые он выполняет для определения следующей хранимой процедуры
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Извлекает текст зашифрованного объекта из столбца
imageval
в sys.sysobjvalues
и сохраняет его в переменной @ContentOfEncryptedObject
- Вычисляет
@ObjectDataLength
из DATALENGTH(@ContentOfEncryptedObject)/2
.
- Создает инструкцию
ALTER PROCEDURE
, заполненную до нужной длины символом -
(поэтому в этом случае ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
)
- Выполняет инструкцию
ALTER
, извлекает зашифрованную версию из sys.sysobjvalues
и сохраняет ее в переменной @ContentOfFakeEncryptedObject
, а затем отбрасывает изменение.
- Создает инструкцию
CREATE PROCEDURE
, заполненную до нужной длины символом -
(так что в этом случае CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Это сохраняется в переменной @ContentOfFakeObject
Затем он перебирается для @i = 1 to @ObjectDataLength
и расшифровывает определение символа за раз, используя следующий XOR
расчет.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)
UPDATE
Пол Уайт написал очень хорошую статью, в которой подробно рассказывается о почему это работает, и что дает альтернативный метод, который не полагайтесь на изменение объекта: Внутренние значения WITH ENCRYPTION
Ответ 2
Если вы хотите расшифровать процедуру или любой другой зашифрованный объект, посмотрите ApexSQL Decrypt.
Это бесплатный автономный инструмент с возможностью его интеграции в SSMS, предварительного просмотра оригинального сценария DDL и создания сценариев изменения и создания расшифровки.
Из автономного инструмента вы можете подключиться к нескольким серверам и расшифровать несколько объектов одновременно.
dbForge SQL Decryptor - это еще один инструмент, который может помочь вам и в этом случае.
Ответ 3
Многие старые инструменты перестали работать с SQL Server 2005+. Обратите внимание, что вы должны использовать Dedicated Admin Connection
Быстрый поиск показывает несколько вариантов.
Ответ 4
Расшифровать хранимую процедуру SQL SERVER
Вы можете использовать сторонний инструмент для дешифрования зашифрованной хранимой процедуры.
Загрузите этот инструмент: это бесплатное программное обеспечение
https://www.devart.com/dbforge/sql/sqldecryptor/download.html
Ответ 5
dbForge Sql Decryptor помог мне расшифровать зашифрованную хранимую процедуру.
Подробности доступны здесь here
Ответ 6
LIFE-SAVER SQL инструмент
этот инструмент помог мне восстановить мои собственные работы
давно зашифрован, отправлен, но клиент случайно потерял исходный код
Какой хороший день :)
https://www.devart.com/dbforge/sql/sqldecryptor/download.html