Objeto Ole....

13/06/2007 - 16:39 por Juan Bonilla | Informe spam
Ante todo gracias por sus repuestas...
les explico..
Existe una DLL con una rutina de encriptacion y desencriptacion que por
ahora ha estado corriendo en el lado de la aplicacion cliente, pero ahora se
quiere que corra dentro de los procedimientos almacenados de SQL...
Ya lo hize como una funcion de SQL, pero, es demasiado lento, la media es
como de 6000 registros en 20 seg.
Pienso q el problema es por q la funcion crea y destruye el objeto OLE cada
vez que se procesa un registro, pero no se como puedo hacer ya sea para que
la definicion del objeto sea global, mejor dicho el objeto este creado
residente.
Este es el codigo de muestra..

CREATE FUNCTION DesEnc (@nota varchar(16))
RETURNS char(3) AS
BEGIN
DECLARE @object int, @hr int
DECLARE @vnota varchar(16)
EXEC @hr = sp_OACreate 'seriedll.serie', @object OUT
IF (@hr = 0)
BEGIN
EXEC @hr = sp_OAMethod @object, 'desencripta_v', @vnota out , @nota out
if (@hr <> 0)
set @vnota ='E1'
else
exec sp_OADestroy @object
end
else
Set @vnota ='E2'
Return @vnota
END
 

Leer las respuestas

#1 Maxi
13/06/2007 - 21:57 | Informe spam
Hola, por lo general sera lento asi :( no entiendo porque no lo dejas en la
aplicacion que a mi juicio es mucho mejor que dentro del SQL a menos que
uses 2005 donde este ya incluye muy buenas tecnicas de cifrado


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Juan Bonilla" escribió en el mensaje
news:
Ante todo gracias por sus repuestas...
les explico..
Existe una DLL con una rutina de encriptacion y desencriptacion que por
ahora ha estado corriendo en el lado de la aplicacion cliente, pero ahora
se quiere que corra dentro de los procedimientos almacenados de SQL...
Ya lo hize como una funcion de SQL, pero, es demasiado lento, la media es
como de 6000 registros en 20 seg.
Pienso q el problema es por q la funcion crea y destruye el objeto OLE
cada vez que se procesa un registro, pero no se como puedo hacer ya sea
para que la definicion del objeto sea global, mejor dicho el objeto este
creado residente.
Este es el codigo de muestra..

CREATE FUNCTION DesEnc (@nota varchar(16))
RETURNS char(3) AS
BEGIN
DECLARE @object int, @hr int
DECLARE @vnota varchar(16)
EXEC @hr = sp_OACreate 'seriedll.serie', @object OUT
IF (@hr = 0)
BEGIN
EXEC @hr = sp_OAMethod @object, 'desencripta_v', @vnota out , @nota out
if (@hr <> 0)
set @vnota ='E1'
else
exec sp_OADestroy @object
end
else
Set @vnota ='E2'
Return @vnota
END

Preguntas similares