SQL Server Pro-artiklen "Dekrypter SQL Server-objekter" fungerer stadig i SQL Server 2008.
Du skal oprette forbindelse via DAC'en. Se filen "Decrypt SQL 2005 stored procedures, functions, triggers, views.sql" i downloaden .
Bare for at opsummere de trin, den udfører for den følgende definition af lagrede procedurer
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Henter den krypterede objekttekst fra
imageval
kolonne isys.sysobjvalues
og gemmer den i en variabel@ContentOfEncryptedObject
- Beregner
@ObjectDataLength
fraDATALENGTH(@ContentOfEncryptedObject)/2
. - Genererer en
ALTER PROCEDURE
sætning udfyldt til den korrekte længde med-
tegn (så i dette tilfældeALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
) - Udfører
ALTER
sætning, henter den krypterede version frasys.sysobjvalues
og gemmer det i variablen@ContentOfFakeEncryptedObject
ruller derefter ændringen tilbage. - Genererer en
CREATE PROCEDURE
sætning udfyldt til den korrekte længde med-
tegn (så i dette tilfældeCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Dette bliver gemt i variablen@ContentOfFakeObject
Det går derefter igennem for @i = 1 to @ObjectDataLength
og dekrypterer definitionen et tegn ad gangen ved at bruge følgende XOR
beregning.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)