Der SQL Server Pro-Artikel "SQL Server-Objekte entschlüsseln" funktioniert immer noch in SQL Server 2008.
Sie müssen sich über den DAC verbinden. Siehe die Datei „Decrypt SQL 2005 Stored Procedures, Functions, Triggers, Views.sql“ in der Download .
Nur um die Schritte zusammenzufassen, die es für die folgende Definition gespeicherter Prozeduren ausführt
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Ruft den verschlüsselten Objekttext aus
imagevalab Spalte insys.sysobjvaluesund speichert es in einer Variablen@ContentOfEncryptedObject - Berechnet
@ObjectDataLengthvonDATALENGTH(@ContentOfEncryptedObject)/2. - Erzeugt eine
ALTER PROCEDURE-Anweisung mit-auf die richtige Länge aufgefüllt Zeichen (also in diesem FallALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------) - Führt den
ALTERaus -Anweisung, ruft die verschlüsselte Version vonsys.sysobjvaluesab und speichert das in der Variable@ContentOfFakeEncryptedObjectmacht die Änderung dann rückgängig. - Erzeugt eine
CREATE PROCEDURE-Anweisung mit-auf die richtige Länge aufgefüllt Zeichen (also in diesem FallCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------). Dies wird in der Variable@ContentOfFakeObjectgespeichert
Es wird dann für @i = 1 to @ObjectDataLength durchgeschleift und entschlüsselt die Definition zeichenweise unter Verwendung des folgenden XOR Berechnung.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)