SQL Server Pro-artikeln "Dekryptera SQL Server-objekt" fungerar fortfarande i SQL Server 2008.
Du måste ansluta via DAC. Se filen "Dekryptera SQL 2005 lagrade procedurer, funktioner, utlösare, views.sql" i nedladdningen .
Bara för att sammanfatta stegen som den utför för följande lagrade procedurdefinition
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Hämtar den krypterade objekttexten från
imageval
kolumn isys.sysobjvalues
och lagrar den i en variabel@ContentOfEncryptedObject
- Beräknar
@ObjectDataLength
frånDATALENGTH(@ContentOfEncryptedObject)/2
. - Genererar en
ALTER PROCEDURE
uttalande utfyllt till korrekt längd med-
tecken (så i det här falletALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
) - Kör
ALTER
sats, hämtar den krypterade versionen frånsys.sysobjvalues
och lagrar det i variabeln@ContentOfFakeEncryptedObject
rullar sedan tillbaka ändringen. - Genererar en
CREATE PROCEDURE
uttalande utfyllt till korrekt längd med-
tecken (så i det här falletCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Detta lagras i variabeln@ContentOfFakeObject
Den går sedan igenom för @i = 1 to @ObjectDataLength
och dekrypterar definitionen ett tecken åt gången med hjälp av följande XOR
beräkning.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)