Je travaille sur une base de données tierce.
Lorsque j'essaie d'afficher la définition d'une vue en cliquant avec le bouton droit, CREATE TO
puis sur NEW QUERY EDIT WINDOW
, j'obtiens une erreur:
Cette propriété peut ne pas exister pour cet objet ou peut ne pas être récupérable en raison de droits d'accès insuffisants. Le texte est crypté.
-- Encrypted text
Réponses:
Un autre outil tiers que vous pourriez utiliser pour déchiffrer des objets chiffrés à la volée est l'invite SQL de Red Gate: http://www.red-gate.com/products/sql-development/sql-prompt/features
En survolant la procédure stockée, vous pourrez alors voir le script de création décrypté.
Avertissements: cet outil est commercial (avec un essai gratuit de 14 jours) et je travaille pour Red Gate.
la source
J'ai une description assez détaillée sur ce problème ici .
Bref, l'objet n'est pas vraiment chiffré, mais plutôt obscurci. Par conséquent, nous pouvons récupérer le dos d'origine. La méthode est un peu impliquée mais elle consiste en ces étapes:
Sélectionnez le code obscurci comme ceci:
Remplacez l'objet par un autre qui porte le même nom id_objet et la même longueur en octets (par exemple en utilisant
ALTER PROCEDURE
)Cela vous donnera le code d'origine. Cependant, comme Kin l'a mentionné, il peut y avoir un soutien et même des implications juridiques à ce sujet, alors assurez-vous de consulter d'abord votre avocat.
la source
Le texte du module est crypté à l'aide d'un chiffrement de flux RC4 .
La clé d'initialisation RC4 est calculée à partir du hachage SHA-1 de:
reconverti uniqueidentifier à binaire (16)
Converti d'un entier en binaire petit-boutien (4)
converti de smallint à little-endian binaire (2) .
Le sous-ID d'objet du module est:
Un utilisateur disposant de privilèges appropriés peut ensuite déchiffrer le module en:
Plus de détails et une implémentation complète du code dans mon article:
Les internes de
WITH ENCRYPTION
la source
Vous pouvez vous connecter à SQL Server à l'aide de la connexion administrateur dédiée (DAC), puis afficher le texte SQL de la procédure stockée. Connectez-vous au DAC en utilisant:
Vous pouvez trouver toutes les étapes nécessaires dans cette réponse sur Stack Overflow de Martin Smith .
Une autre alternative consiste à utiliser certains scripts tiers comme mentionné dans Décryptage des procédures stockées, vues et fonctions chiffrées dans SQL Server 2005, 2008 et R2
En guise de remarque - s'il s'agit d'une base de données tierce et si vous la faites sur prod, le vendeur la prendra-t-il en charge? Il peut y avoir une bonne raison de chiffrer les SP ou les vues. Il est probablement préférable de faire une sauvegarde, puis de jouer avec.
la source
Si vous souhaitez prévisualiser le script DDL d'origine ou décrypter un objet crypté, vous pouvez consulter ApexSQL Decrypt
C'est un outil autonome gratuit, avec une option pour l'intégrer dans SSMS, prévisualiser le script DDL original. En outre, vous pouvez déchiffrer des objets situés sur plusieurs serveurs en une seule fois. Un autre outil qui peut vous aider est le dbForge SQL Decryptor
la source
Une méthode que j'utilise souvent pour décrypter plusieurs procédures stockées à la fois ...
Utilisez la comparaison SQL de RedGate et comparez votre base de données avec une base de données vide (ou toute base de données que vous connaissez n'aura pas les procédures stockées). Créez un script de déploiement et copiez-le dans SSMS. Trouvez et remplacez AVEC CHIFFREMENT avec un espace blanc. Remplacez ensuite CREATE PROCEDURE par ALTER PROCEDURE. Exécutez le script RedGate sur la base de données d'origine et vous avez supprimé tout le cryptage des procédures stockées.
J'avais une base de données avec plus de 400 procédures stockées et bien que l'invite SQL soit pratique, cela ne valait pas la peine de faire un clic droit, copier, coller contre plus de 400 procédures stockées. En utilisant RedGate SQL Compare, j'ai pu supprimer le chiffrement de mes 400+ procédures stockées en 10 minutes environ du début à la fin.
la source