Я работаю над сторонней базой данных.
Когда я пытаюсь просмотреть определение представления, щелкнув правой кнопкой мыши CREATE TO
и затем NEW QUERY EDIT WINDOW
, я получаю сообщение об ошибке:
Это свойство может не существовать для этого объекта или не может быть извлечено из-за недостаточных прав доступа. Текст зашифрован.
-- Encrypted text
Ответы:
Другим сторонним инструментом, который вы можете использовать для расшифровки зашифрованных объектов на лету, является SQL-подсказка Red Gate: http://www.red-gate.com/products/sql-development/sql-prompt/features
Наведя указатель мыши на хранимую процедуру, вы сможете увидеть расшифрованный скрипт создания.
Отказ от ответственности: этот инструмент является коммерческим (с 14-дневной бесплатной пробной версией), и я работаю на Red Gate.
источник
У меня есть довольно подробное описание этой проблемы здесь .
Короче говоря, объект не зашифрован, а запутан. Поэтому мы можем получить оригинал обратно. Метод немного сложен, но состоит из следующих шагов:
Выберите запутанный код следующим образом:
Замените объект другим объектом с таким же именем, идентичным object_id и одинаковой длиной в байтах (например, используя
ALTER PROCEDURE
)Это даст вам оригинальный код. Однако, как упоминал Кин, это может иметь поддержку и даже юридические последствия, поэтому обязательно проконсультируйтесь со своим адвокатом.
источник
Текст модуля зашифрован с использованием потокового шифра RC4 .
Ключ инициализации RC4 вычисляется из хэша SHA-1 :
конвертирован из UniqueIdentifier в двоичный (16)
Преобразован из двоичного числа с прямым порядком байтов (4)
Преобразован из smallint в двоичный код с прямым порядком байтов (2) .
Суб-идентификатор объекта модуля:
Пользователь с соответствующими привилегиями может затем расшифровать модуль следующим образом:
Более подробная информация и полная реализация кода в моей статье:
Внутренние органы
WITH ENCRYPTION
источник
Вы можете подключиться к SQL Server, используя выделенное соединение администратора (DAC), а затем просмотреть текст sql хранимой процедуры. Подключитесь к ЦАП, используя:
Вы можете найти полные шаги , необходимые в этом ответе на переполнение стека с помощью Мартина Смита .
Другой альтернативой является использование некоторых сторонних сценариев, как указано в разделе Расшифровка зашифрованных хранимых процедур, представлений, функций в SQL Server 2005, 2008 и R2
В качестве дополнительного примечания - если это сторонняя база данных, и если вы делаете это на Prod, будет ли поставщик поддерживать ее? Там может быть хорошая причина для шифрования SP или просмотров. Вероятно, лучше сделать резервную копию, а затем возиться с этим.
источник
Если вы хотите просмотреть исходный сценарий DDL или расшифровать зашифрованный объект, вы можете проверить ApexSQL Decrypt
Это бесплатный автономный инструмент с возможностью его интеграции в SSMS, предварительного просмотра оригинального сценария DDL. Также вы можете дешифровать объекты, расположенные на нескольких серверах, за один ход. Еще один инструмент, который может вам помочь, это dbForge SQL Decryptor
источник
Метод, который я часто использую для расшифровки нескольких хранимых процедур одновременно ...
Используйте сравнение SQL RedGate и сравните свою базу данных с пустой базой данных (или любая известная вам база данных не будет иметь хранимых процедур). Создайте сценарий развертывания и скопируйте в SSMS. Найдите и замените WITH ENCRYPTION пробелами. Затем измените ПРОЦЕДУРУ СОЗДАНИЯ на ИЗМЕНЕНИЕ ПРОЦЕДУРЫ. Запустите скрипт RedGate для исходной базы данных, и вы удалили все шифрованные хранимые процедуры.
У меня была база данных с 400+ хранимыми процедурами, и, хотя SQL Prompt удобен, не стоило моего времени щелкать правой кнопкой мыши, копировать и вставлять более 400 хранимых процедур. Используя RedGate SQL Compare, я смог удалить шифрование из моих 400+ хранимых процедур примерно за 10 минут до начала.
источник