Статията за SQL Server Pro "Декриптиране на SQL Server обекти" все още работи в SQL Server 2008.
Трябва да се свържете чрез DAC. Вижте файла „Декриптиране на SQL 2005 съхранени процедури, функции, тригери, views.sql“ в изтеглянето .
Само за да обобщим стъпките, които изпълнява за следната дефиниция на съхранена процедура
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Извлича шифрования текст на обекта от
imageval
колона вsys.sysobjvalues
и го съхранява в променлива@ContentOfEncryptedObject
- Изчислява
@ObjectDataLength
отDATALENGTH(@ContentOfEncryptedObject)/2
. - Генерира
ALTER PROCEDURE
израз, подплатен до правилната дължина с-
знак (така че в този случайALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
) - Изпълнява
ALTER
израз, извлича шифрованата версия отsys.sysobjvalues
и го съхранява в променливата@ContentOfFakeEncryptedObject
след това връща обратно промяната. - Генерира
CREATE PROCEDURE
израз, подплатен до правилната дължина с-
символ (така че в този случайCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Това се съхранява в променливата@ContentOfFakeObject
След това преминава за @i = 1 to @ObjectDataLength
и дешифрира декрипцията символ по знак, използвайки следния XOR
изчисление.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)