El SQL Server Pro artículo "Decrypt SQL Server Objects" todavía funciona en SQL Server 2008.
Es necesario conectar a través de la DAC. Consulte el archivo "Descifrar procedimientos almacenados de SQL 2005, funciones, desencadenadores, views.sql" en the download.
Sólo para resumir los pasos que realiza para la siguiente definición de procedimiento almacenado
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- recupera el texto cifrado objeto a partir de la columna de la
imageval
en sys.sysobjvalues
y lo almacena en una variable @ContentOfEncryptedObject
- Calcula
@ObjectDataLength
desde DATALENGTH(@ContentOfEncryptedObject)/2
.
- genera una declaración
ALTER PROCEDURE
acolchado a la longitud correcta con el -
carácter (por lo que en este caso ALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
)
- ejecuta la instrucción
ALTER
, recupera la versión encriptada de sys.sysobjvalues
y tiendas que en la variable @ContentOfFakeEncryptedObject
entonces se deshace el cambio .
- Genera una instrucción
CREATE PROCEDURE
rellenada a la longitud correcta con el carácter -
(por lo que en este caso CREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Esto se almacena en la variable @ContentOfFakeObject
Después devuelve a través de @i = 1 to @ObjectDataLength
y descifra la definición de un carácter a la vez mediante el cálculo XOR
siguiente.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1))^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1))^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)
ACTUALIZACIÓN
Paul White ha escrito un muy buen artículo que entra en detalles sobre por qué las obras anteriores, y que da un método alternativo que no lo hace se basan en la modificación de la objeto: The Internals of WITH ENCRYPTION
¿Puede por favor indicarme qué script debo ejecutar para descifrar mi SP? ¿es de "Descifrar SQL 2005 procedimientos almacenados, funciones, desencadenadores, views.sql"? –
Gracias, había ejecutado ese script usando DAC y funciona bien para mí. –
Agradable. No había mirado demasiado en esto. – gbn