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
imagevalkolumn isys.sysobjvaluesoch lagrar den i en variabel@ContentOfEncryptedObject - Beräknar
@ObjectDataLengthfrånDATALENGTH(@ContentOfEncryptedObject)/2. - Genererar en
ALTER PROCEDUREuttalande utfyllt till korrekt längd med-tecken (så i det här falletALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------) - Kör
ALTERsats, hämtar den krypterade versionen frånsys.sysobjvaluesoch lagrar det i variabeln@ContentOfFakeEncryptedObjectrullar sedan tillbaka ändringen. - Genererar en
CREATE PROCEDUREuttalande 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))
)
)