Ayuda con sp_OACreate

29/08/2005 - 17:13 por rigoberto | Informe spam
mi problema es el siguiente: Necesito ejecutar una funcion que se
encuentra en una DLL desde SQL SERVER 2000. Encontre que podia invocar
directamente la dll (a travez de procedimientos almacenados extendido o
algo asi) para prueba cree una dll simple desde visual Basic con
dos funciones (ejemplo tomado desde internet) y al probarla desde el
analizador de consultas o a travez de un procedimiento almacenado de
SQL Server me genera el error de "Acceso denegado". La ejecuto con un
usuario con permisos de administrador(Rol SysAdmin)... pero nada.. Este
es el pedazo de codigo donde la llamo:

DECLARE @retVal INT
DECLARE @comHandle INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescripcion VARCHAR(8000)
DECLARE @retString VARCHAR(100)

EXEC @retVal = sp_OACreate 'prueba.ClasPrueba', @comHandle OUT

IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT,
@errorDescripcion OUTPUT
SELECT [Error Source] = @errorSource, [Descripcion] = @errorDescripcion
RETURN
END

Al principio me generaba error por que no tenia señalado en las
propiedades de SQL el item:"Utilizar intraprocesos de windows NT".

Cualquier ayuda gracias.

Pdta: Si alguien tiene el codigo fuente de cualquier dll que funcione
desde SQL Server me seria de gran ayuda.

Preguntas similare

Leer las respuestas

#1 Hero
29/08/2005 - 18:22 | Informe spam
Rigo,

Lo primero que debes hacer es INSTANCIAR a tu componente(dll), luego
invocar el metodo o funcion de la clase necesaria.

Ejemplo.

DECLARE @retVal INT
DECLARE @comHandle INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescripcion VARCHAR(8000)
DECLARE @retString VARCHAR(100)

Declare @objDll

Set @objDll = CreateObject("Proyecto.Clase")

Select @retVal = @objDll.Consultar_Valor()

/* Comentamos estos
EXEC @retVal = sp_OACreate 'prueba.ClasPrueba', @comHandle OUT
*/

IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT,
@errorDescripcion OUTPUT
SELECT [Error Source] = @errorSource, [Descripcion] = @errorDescripcion
RETURN
END


Saludos
Hero

"rigoberto" escribió en el mensaje
news:
mi problema es el siguiente: Necesito ejecutar una funcion que se
encuentra en una DLL desde SQL SERVER 2000. Encontre que podia invocar
directamente la dll (a travez de procedimientos almacenados extendido o
algo asi) para prueba cree una dll simple desde visual Basic con
dos funciones (ejemplo tomado desde internet) y al probarla desde el
analizador de consultas o a travez de un procedimiento almacenado de
SQL Server me genera el error de "Acceso denegado". La ejecuto con un
usuario con permisos de administrador(Rol SysAdmin)... pero nada.. Este
es el pedazo de codigo donde la llamo:

DECLARE @retVal INT
DECLARE @comHandle INT
DECLARE @errorSource VARCHAR(8000)
DECLARE @errorDescripcion VARCHAR(8000)
DECLARE @retString VARCHAR(100)

EXEC @retVal = sp_OACreate 'prueba.ClasPrueba', @comHandle OUT

IF (@retVal <> 0)
BEGIN
EXEC sp_OAGetErrorInfo @comHandle, @errorSource OUTPUT,
@errorDescripcion OUTPUT
SELECT [Error Source] = @errorSource, [Descripcion] = @errorDescripcion
RETURN
END

Al principio me generaba error por que no tenia señalado en las
propiedades de SQL el item:"Utilizar intraprocesos de windows NT".

Cualquier ayuda gracias.

Pdta: Si alguien tiene el codigo fuente de cualquier dll que funcione
desde SQL Server me seria de gran ayuda.
Respuesta Responder a este mensaje
#2 rigoberto
29/08/2005 - 23:29 | Informe spam
Gracias hero,

Pero la solucion no me sirver porque el comando "CreateObject" es de
visual basic no de SQL Server.(Para instanciar objetos desde SQl server
se utiliza el metodo "sp_OACreate" y para invocar las funciones del
objeto se utiliza "sp_OAMethod").

Prove el ejemplo del objeto SQLDMO de la siguiente pagina y me
funciona: http://www.itrain.de/knowhow/sql/ts...create.asp

Creo que el proble es cuando se crea la dll desde visual Basic, por eso
necesito un ejemplo de una DLL creada desde visual basic que funcione.

De antemano gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida