Het SQL Server Pro-artikel "Decrypt SQL Server Objects" werkt nog steeds in SQL Server 2008.
Je moet verbinding maken via de DAC. Zie het bestand "Decodeer SQL 2005 opgeslagen procedures, functies, triggers, views.sql" in de download .
Om de stappen samen te vatten die het uitvoert voor de volgende opgeslagen proceduredefinitie
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Haalt de versleutelde objecttekst op uit de
imagevalkolom insys.sysobjvaluesen slaat het op in een variabele@ContentOfEncryptedObject - Berekent
@ObjectDataLengthvanDATALENGTH(@ContentOfEncryptedObject)/2. - Genereert een
ALTER PROCEDUREverklaring opgevuld tot de juiste lengte met de-karakter (dus in dit gevalALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------) - Voert de
ALTER. uit statement, haalt de versleutelde versie op uitsys.sysobjvaluesen slaat dat op in de variabele@ContentOfFakeEncryptedObjectrolt vervolgens de wijziging terug. - Genereert een
CREATE PROCEDUREverklaring opgevuld tot de juiste lengte met de-karakter (dus in dit gevalCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------). Dit wordt opgeslagen in de variabele@ContentOfFakeObject
Het loopt dan door voor @i = 1 to @ObjectDataLength en decodeert de definitie teken voor teken met behulp van de volgende XOR berekening.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)