J'ai une procédure stockée qui est cryptée à l'aide de l'option WITH ENCRYPTION. Maintenant, je veux décrypter cette procédure. J'ai déjà essayé une procédure stockée appelée "Decryptsp2K" qui est donnée pour SQL 2000 dans ce forum: http://forums.asp.net/t/1516587.aspx/1
Mais cela supprime ma procédure stockée, plutôt que de la déchiffrer.
Existe-t-il un moyen de déchiffrer une procédure stockée dans SQL Server 2008?
L'article de SQL Server Pro "Déchiffrer les objets SQL Server" fonctionne toujours dans SQL Server 2008.
Vous devez vous connecter via le DAC. Voir le fichier "Décrypter les procédures stockées SQL 2005, fonctions, déclencheurs, vues.sql" dans le téléchargement .
Juste pour résumer les étapes qu'il effectue pour la définition de procédure stockée suivante
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
imageval
dans sys.sysobjvalues
et le stocke dans une variable @ContentOfEncryptedObject
@ObjectDataLength
à partir de DATALENGTH(@ContentOfEncryptedObject)/2
.ALTER PROCEDURE
complétée à la longueur correcte avec le caractère -
(donc dans ce cas ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
)ALTER
, récupère la version chiffrée de sys.sysobjvalues
et la stocke dans la variable @ContentOfFakeEncryptedObject
, puis annule la modification.CREATE PROCEDURE
complétée à la longueur correcte avec le caractère -
(donc dans ce cas CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Ceci est stocké dans la variable @ContentOfFakeObject
Il parcourt ensuite pour @i = 1 to @ObjectDataLength
et déchiffre la définition, caractère par caractère, en utilisant le calcul XOR
suivant.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)
METTRE À JOUR
Paul White a écrit un très bel article qui donne des détails sur pourquoi ce qui précède fonctionne-t-il et donne-t-il une autre méthode qui ne fonctionne pas compter sur la modification de l'objet: The Internals of
WITH ENCRYPTION
Si vous souhaitez décrypter une procédure ou tout autre objet chiffré, consultez ApexSQL Decrypt .
C’est un outil autonome gratuit, avec une option pour l’intégrer dans SSMS, prévisualiser le script DDL original et créer des scripts de modification ou de décryptage.
À partir d'un outil autonome, vous pouvez vous connecter à plusieurs serveurs et décrypter plusieurs objets à la fois.
dbForge SQL Decryptor est l'autre outil qui peut vous aider dans ce cas également.
De nombreux outils plus anciens ont cessé de fonctionner avec SQL Server 2005+. Notez que vous devez utiliser le Dedicated Admin Connection
Une recherche rapide montre plusieurs options.
Déchiffrer la procédure stockée de SQL SERVER
Vous pouvez utiliser un outil tiers pour décrypter votre procédure stockée chiffrée.
Téléchargez cet outil: c'est un logiciel gratuit
https://www.devart.com/dbforge/sql/sqldecryptor/download.html
dbForge Sql Decryptor m'a aidé à déchiffrer la procédure stockée chiffrée . Des détails sont disponibles ici