PDA

Ver la Versión Completa : Tservice y acceso a Base de Datos ???


QuarkBcn
18-06-2008, 12:09:44
Hola grupo, despues de mucho pelearme .. y no conseguir resultados positivos, voy a robados un poco de tiempo.

Veamos ... he creado un Tservice y dentro del mismo un Thread, para que este segundo conecte con una BD MSSQL-Server, bien a través del BDE o bien a través del dbexpress, en estos momentos me da igual uno que otro. Si el Thread lo ejecuto desde un formulario, la conexión a la BD funciona perfectamente (probado con BDE), pero el problema aparece cuando quiero hace esta conexión desde el Tservice, al realizar el open de un query, este siempre retorna el error de que o no existe el servidor o no tengo permiso de acceso al mismo. Está claro que el problema, creo, viene por los permisos, pero no se como asignarle permisos, para que me conecte correctamente a la BD desde el servicio, ya que desde la aplicación conecta sin problemas.

Si alguien tiene alguna exp, y puede adjuntar un ejemplo, o bien orientarme, se lo agradezco de antemano.

Saludos a todos !!!

Kosmo
18-06-2008, 12:45:59
Yo los servicios los tengo conectados siempre a la base de datos, por lo que en el ServiceStart hago un:

CoInitialize(nil);
ADOCOnnection.Open();
CoUninitialize();

Con eso debería funcionarte.

juanelo
18-06-2008, 16:08:59
Intenta asignandole a tu servicio que inicie con una cuenta de administrador (para ver si efectivamente son permisos). Esto lo puedes hacer en el administrador de servicios, te vas a las propiedades del servicio en cuestion y en la pestaña "inicio de sesion" asignas una cuenta de administrador. Reinicia el servicio y pruebas.
Saludos

QuarkBcn
19-06-2008, 11:40:26
Yo los servicios los tengo conectados siempre a la base de datos, por lo que en el ServiceStart hago un:

CoInitialize(nil);
ADOCOnnection.Open();
CoUninitialize();

Con eso debería funcionarte.

Hola Cosmo, efectivamente con lo comentado funciona. Pero el problema viene, antes se me olvidó comentarlo, que el servicio lo instalo en un PC con XP Sp2, y me conecto a un servidor W2003 Server. Me explico, si instalo el servicio en el servidor W2003 Server, se conecta a la BD MS-SQL server sin problemas y el servicio trabaja correctamente, pero si instalo el servicio en la maquina local, es entonces cuando no puede conectarse con el servidor SQL. En cambio la misma conexión fuera de un servicio, (por ejemplo) dentro de un form (ejecutandose desde la maquina local), se conecta sin problemas con el servidor SQL.

Quedo a la espera de vtra ayuda.

Gracias anticipadas.

QuarkBcn
25-06-2008, 10:18:03
Intenta asignandole a tu servicio que inicie con una cuenta de administrador (para ver si efectivamente son permisos). Esto lo puedes hacer en el administrador de servicios, te vas a las propiedades del servicio en cuestion y en la pestaña "inicio de sesion" asignas una cuenta de administrador. Reinicia el servicio y pruebas.
Saludos

Gracias Juanelo, pero ni asi funciona.

Creo que los permisos a nivel de aplicacion son unos, y a nivel de sistema son otros y por eso no se conecta el servicio desde el pc cliente al SQLServer del Servidor.

Gracias de todas formas