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
imageval
ab Spalte insys.sysobjvalues
und speichert es in einer Variablen@ContentOfEncryptedObject
- Berechnet
@ObjectDataLength
vonDATALENGTH(@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
ALTER
aus -Anweisung, ruft die verschlüsselte Version vonsys.sysobjvalues
ab und speichert das in der Variable@ContentOfFakeEncryptedObject
macht 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@ContentOfFakeObject
gespeichert
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))
)
)