Dll, asp y vb conexion con sql server

Estoy realizando una aplicación (la idea es hacerla a 3 capas) web, que para conectar a base de datos utiliza una dll. Esta dll para conectar con sql server utiliza un dsn con validación nt. Bueno este es el sistema, y el error se produce porque desde asp realizo la conexión correctamente, pero cuando intento conectar desde la dll me falla, da un error login failed y el usuario que me muestra es "null". No alcanzo a comprender como siendo el mismo contexto de seguridad para el caso asp y dll en uno funciona y en otro no.
La creación de la conexión siempre es:
Conn. Open "miDSN"
Si me puedes ayudar te lo agradecería enormemente.

1 respuesta

Respuesta
1
Tienes que averiguar con qué usuario te conectas a la base de datos en la dll.
Si la tienes en COM+, puedes configurar el inicio se sesión con el que se arranca la dll.
Si tienes el IIS con acceso público, puede que sea el usuario con el que se arranca el IIS, es algo así como IIS_USR...
A mi me ha pasado también que este usuario se distinto dependiendo si accedo en depuración o ya con la dll compilada. Si estás en depuración, el usuario es el tuyo, no el de IIS.
Para desarrollo yo te recomiendo que utilices inicios de sesión de SQLServer. Es más cómodo porque siempre es el mismo.
He probado a obtener el usuario con el que ejecuto, pero hasta ahora no lo he conseguido, si sabes como hacerlo te lo agradecería.
No tengo la dll como COM+ sino como un simple activeX.
En lo que se refiere al usuario que arranca iis, no se si te refieres a aquel que inicia el sitio (en seguridad de directorios) o el que inicia el servicio de administración del iis. El caso es que en el error me indica que está utilizando el usuario "null". Lo cual veo muy difícil, porque siempre tendrá un usuario, o bien el usuario web, o bien el usuario de administración de IIS.
El ultimo punto no se exatamene si te refieres a la conexión con sql server utilizando un usuario de sql server en vez de un usuario windows. Si es utilizar un usuario sql server que le pase en la cadena de conexión para completar esta, no puedo hacerlo pues la política que siguen en mi empresa es utilizar usuarios de windows ha los que se les ha aplicado la política de seguridad.
Muchas gracias por contestar tan rápidamente y un saludo.
Mis comentarios van en mayúsculas
He probado a obtener el usuario con el que ejecuto, pero hasta ahora no lo he conseguido, si sabes como hacerlo te lo agradecería.
Mira los procesos que hay iniciados desde administrador corporativo-->administración-->actividad actual-->información del proceso. Hay una columna que indica el usuario y otra para el equipo. Otra opción es sp_who
No tengo la dll como COM+ sino como un simple activeX.
En lo que se refiere al usuario que arranca iis, no se si te refieres a aquel que inicia el sitio (en seguridad de directorios) o el que inicia el servicio de administración del iis. El caso es que en el error me indica que está utilizando el usuario "null". Lo cual veo muy difícil, porque siempre tendrá un usuario, o bien el usuario web, o bien el usuario de administración de IIS.
Si un sitio web lo tienes configurado para permitir el acceso anónimo, el iis utiliza un usuario iusr_nombreequipo para todos los procesos que hace el iis.
El ultimo punto no se exatamene si te refieres a la conexión con sql server utilizando un usuario de sql server en vez de un usuario windows. Si es utilizar un usuario sql server que le pase en la cadena de conexión para completar esta, no puedo hacerlo pues la política que siguen en mi empresa es utilizar usuarios de windows ha los que se les ha aplicado la política de seguridad.
Me refería a eso. Me parece buena política para la explotación, pero no para desarrollo, pero eso es otro tema
Muchas gracias por contestar tan rápidamente y un saludo.
De nada, espero que te sirva. La verdad es que es muy difícil solucionar un problema sin conocer el contexto completo, pero al menos lo intentamos.
Lo primero es agradecerte tus comentarios, están muy bien, aunque son conceptos que ya tenía más o menos asimilados. Al final he encontrado el problemas. Este era que según intente la conexión desde asp o dll utiliza un usuario u otro. En caso de asp utiliza el usuario anónimo (por defecto iusr_nombremaquina) y en el caso de la dll utiliza el usuario que crea el servicio iis (por defecto IWAN_nombremaquina, aunque yo tengo configurado localSystem). No entendía como si ejecuto una página asp que a su vez crea un objecto basado en un ActiveX podía utilizar dos usuarios distintos, pero bueno estos son los misterios de microsoft. De todas formas voy a probar tu primer comentario para saber con qué usuario conecta con SQL server, pues ninguno de los dos anteriores tiene acceso a la base de datos (solo el mio, con el que trabajo en mi maquina tiene acceso).
Muchas gracias por todo, y contesta cualquier tondería rápida para que pueda finalizarte la pregunta.
Un saludo de Pakico.
Me alegro que te haya servido de ayuda. Suerte!
Por cierto, cuando finalizas la pregunta, puedes poner un comentario, no hace falta que pongas otra pregunta para eso.
Me he puesto como no disponible, pero si sigues teniendo problema, puedes escribirme a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas