Listado completo de tutoriales
126 - Procedimientos almacenados (encriptado) |
Dijimos que SQL Server guarda el nombre del procedimiento almacenado en la tabla del sistema "sysobjects" y su contenido en la tabla "syscomments".
Si no quiere que los usuarios puedan leer el contenido del procedimiento podemos indicarle a SQL Server que codifique la entrada a la tabla "syscomments" que contiene el texto. Para ello, debemos colocar la opción "with encryption" al crear el procedimiento:
create procedure NOMBREPROCEDIMIENTO PARAMETROS with encryption as INSTRUCCIONES;
Esta opción es opcional.
Creamos el procedimiento almacenado "pa_libros_autor" con la opción de encriptado:
create procedure pa_libros_autor @autor varchar(30)=null with encryption as select *from libros where autor=@autor;
Si ejecutamos el procedimiento almacenado del sistema "sp_helptext" para ver su contenido, no aparece.
Ingresemos el siguiente lote de comandos en el SQL Server Management Studio:
if object_id('libros') is not null drop table libros; create table libros( codigo int identity, titulo varchar(40), autor varchar(30), editorial varchar(20), precio decimal(5,2), primary key(codigo) ); go -- Eliminamos el procedimiento llamado "pa_libros_autor", si existe: if object_id('pa_libros_autor') is not null drop procedure pa_libros_autor; go -- Creamos el procedimiento almacenado "pa_libros_autor" con la opción de encriptado: create procedure pa_libros_autor @autor varchar(30)=null with encryption as select *from libros where autor=@autor; go -- Ejecutamos el procedimiento almacenado del sistema "sp_helptext" para ver su contenido -- (no aparece): exec sp_helptext pa_libros_autor;