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
imageval
kolom insys.sysobjvalues
en slaat het op in een variabele@ContentOfEncryptedObject
- Berekent
@ObjectDataLength
vanDATALENGTH(@ContentOfEncryptedObject)/2
. - Genereert een
ALTER PROCEDURE
verklaring 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.sysobjvalues
en slaat dat op in de variabele@ContentOfFakeEncryptedObject
rolt vervolgens de wijziging terug. - Genereert een
CREATE PROCEDURE
verklaring 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))
)
)