jueves, 16 de julio de 2009

Como encriptar y decriptar procedimientos almacenados



SQL Decryptor: http://www.devart.com/dbforge/sql/sqldecryptor/download.html

Este artículo muestra algunas herramientas utilizadas para encriptar y decriptar procedimientos almacenados.
Para encriptar un procedimiento almacenado.
Cuando uno crea un procedimiento almacenado debe agregar la cláusula with encryption como sigue:

create procedure pedro
with encryption
as
SELECT [xserver_name]
,[xdttm_ins]
,[xdttm_last_ins_upd]
,[xfallback_low]
,[xfallback_drive]
,[low]
,[high]
,[status]
,[name]
,[phyname]
FROM [master].[dbo].[spt_fallback_dev]


Cuando uno trata de editar el procedimiento almacenado encriptado, no lo puede modificar ni generar el código de creación:


Una persona encripta sus procedimientos almacenados por varios motivos:
· Derechos de autor
· Seguridad
· Egoísmo y maldad (jajajaja, bueno mejor digamos otros motivos).
Ahora sucede que a veces uno no tiene guardado el código y necesita desencriptar los archivos. Cómo hacerlo ?.
Estoy recurriendo a herramientas externas:
Válido para SQL Server 2016 o versiones anteriores. Totálmente gratis !!.
http://www.devart.com/dbforge/sql/sqldecryptor/download.html

Otras herramientas no gratuitas son:
SQL Server Decryptor
http://www.blockkk.com/blockkk_free_setup.exe
Decrypt SQL 3.0
http://www.devlib.net/decryptsql.htm

El funcionamiento es similar:
Instalar el software en la máquina con la base de datos.
Conectarse con los credenciales de la base de datos.
Elegir el procedimiento almacenado a decriptar y seleccionar la opción Decrypt in-place:

Recibirá una advertencia de que el procedimiento será reemplazado.
Una vez reemplazado, usted al modificar el procedimiento notará que ya no está cifrado y que ya puede visualizar el código:


ALTER procedure [dbo].[pedro]

as

SELECT [xserver_name]

,[xdttm_ins]

,[xdttm_last_ins_upd]

,[xfallback_low]

,[xfallback_drive]

,[low]

,[high]

,[status]

,[name]

,[phyname]

FROM [master].[dbo].[spt_fallback_dev]


Espero que les sirva este artículo.
Si tienen dudas, escriban a este blog.


People who read this post also read :



2 comentarios:

  1. Hola que tal Daniel, una duda, Nosotros desencriptamos un store por medio de sql decriptor,pero al momento de desencriptarlo ya no funciono correctamente.

    Ahora mi problema es que necesito tenerlo en la base de datos principal; Tengo un respaldo de la base con el store encriptado, Tu sabes como podria copiar el store procedure encriptado y pasarlo a la base principal o una manera de realizar una restauracion solo de ese store ya que la base principal no puede ser restaurada cOmpletamente ?.

    Muchas Gracias por tu ayuda.

    ResponderEliminar
  2. Si, Entre al SQL Server Business Intelligence.
    Abrí un proyecto de integration services.
    Luego arrastras la tarea de Transfer SQL Server objects al panel de diseño y seleccionas la base de datos de origen, destino y seleccionas el proce dimiento almacenado a copiar.

    Si quieres ver los pasos detallados los tengo acá (lamentablemente mi máquina está en inglés, pero si tienes dudas, avisame):

    1. Abra el SQL Server Business Intelligence Devepment Studio
    2. Cree un proyecto de integration services
    5. En el panel Solution Explorer haga doble click sobre Package.dtsx
    6. En el panel de diseño, haga doble click sobre la tarea Transfer SQL Server Objects Task
    7. En la ventana de Transfer SQL Server Objects Task seleccione la pestaña de Objects
    8. En la sección SourceConnections, presione el botón de combobox y seleccione new connection
    9. En la ventana de SMO Connection Manager Editor, en el textbox ServerName seleccione en el combobox su base de datos con el procedimiento almacenado y presione OK
    10. En la ventana de Transfer SQL Server Objects Task, en la sección SourceDatabase, presione el botón de combobox y seleccione la base de datos de destino

    11. En la ventana de Transfer SQL Server Objects Task, en la sección DestinationConnections, presione el botón de combobox y seleccione new connection
    12. En la ventana de SMO Connection Manager Editor, en el textbox ServerName seleccione en el combobox escriba el nombre del servidor de destino y presione OK
    13. En la ventana de Transfer SQL Server Objects Task, en la sección SourceDatabase, presione el botón de combobox y seleccione la base de datos destino
    14. En la ventana de Transfer SQL Server Objects Task, en la sección Destination Copy Options, vaya a la sección de Objects to copy y expanda el árbol
    15. En Objects to copy, en StoredProceduresList presione el botón para elegir la lista de stored procedures.
    16. En la ventana de Select Stored Procedures seleccione el procedimiento almacenado a copiar
    17. En la ventana de Transfer SQL Server Objects Task presione OK
    18. Presione F5 para ejecutar el package.

    ResponderEliminar