Discussion:
Servicio Windows se detiene inmediatamente al iniciar
(demasiado antiguo para responder)
Pablo
hace 16 años
Permalink
Es la primera vez que elaboro un servicio windows, estoy ocupando VS2008 SP1
con VB. He encontrado un ejemplo interesante y lo he realizado.
Supuestamente todo funciona bien, incluso ya instalé el servicio en mi
computador (Windows XP Profesional SP3). El código va así:

Public Class Service1
Private WithEvents Temporizador As System.Timers.Timer

Protected Overrides Sub OnStart(ByVal args() As String)
Temporizador = New System.Timers.Timer()
Me.Temporizador.Interval = 30000
Me.Temporizador.Start()
Me.Temporizador.Enabled = True

Me.Escribir("Servicio iniciado")
End Sub

Protected Overrides Sub OnStop()
Me.Temporizador.Stop()

Me.Escribir("Servicio detenido")
End Sub

Private Sub Temporizador_Elapsed(ByVal sender As Object, ByVal e As
System.Timers.ElapsedEventArgs) Handles Temporizador.Elapsed
Me.Escribir("Servicio ejecutándose")
End Sub

Private Sub Escribir(ByVal Mensaje As String)
Dim Conexion As New SqlConnection
Dim Comando As New SqlCommand
Try
Conexion = New
SqlConnection("Server=localhost;Database=BasePruebas;Integrated
Security=true;")
Comando = New SqlCommand("NSERT INTO MyServiceLog (vc_Status,
dt_Created) VALUES ('" & Mensaje & "',getdate())", Conexion)
Conexion.Open()

Comando.ExecuteNonQuery()

Conexion.Close()
Catch ex As Exception
System.Diagnostics.Debug.WriteLine(ex.Message)
Finally
Comando.Dispose()
Conexion.Dispose()
End Try
End Sub

End Class

Lo veo entre los servicios instalados pero al dar iniciar me muestra el
siguiente mensaje:

El servicio Service1 se inició en el equipo local y después se detuvo.
Algunos servicios se detienen automáticamente si no tienen nada que hacer,
por ejemplo, el servicio Añertas y registro de rendimiento.

¿debería modificar algo en el código para que el servicio se mantenga en
ejecución?
Gracias por sus comentarios.
Angel J. Hernández M.
hace 16 años
Permalink
Hola Pablo, qué tal?

Por lo que puedo ver tu servicio cada 30 segundos va a escribir en una tabla
de SQL, sin embargo veo lo siguiente:

1-. Tu instrucción de T-SQL tiene un error, dice NSERT en vez de INSERT
2-. Con qué credenciales configuraste el servicio?
3-. Seguiste todos los pasos para crear/instalar tu servicio? (e.g.:
StrongName, ServiceProcessInstaller, etc)
4-. Has intentado iniciar el servicio desde la consola de servicios? Recibes
algún error?

Saludos,
--
Angel J. Hernández M
MCP,MCAD,MCSD,MCDBA
Microsoft MVP
http://www.ajhsis.com
http://msmvps.com/blogs/angelhernandez
...
Pablo
hace 16 años
Permalink
Efectivamente, el servicio se detenía por el error en la consulta. Sin
embargo, me llama la atención que se detenga a pesar de que se encuentra
dentro de try. El servicio que debo implementar debe consultar datos
periódicamente de una base en SQL Express. Supongo que el servicio se
detendrá igualmente el momento que alguna operación produzca un timeout o
algo similar. ¿cómo podría controlarlo?
...
Alberto Poblacion
hace 16 años
Permalink
Post by Pablo
[...]
El servicio Service1 se inició en el equipo local y después se detuvo.
Tiene toda la pinta de que se detiene debido a un error. Aparte del
"NSERT" (falta una "I"), otro error que te puede estar ocurriendo es que las
credenciales de la cuenta con la que rueda el servicio no sean válidas en el
Sql Server, ya que estás conectando con autenticación integrada. Es algo que
deberías comprobar, además de arreglar la sentencia SQL.
Pablo
hace 16 años
Permalink
Efectivamente, el servicio se detenía por el error en la consulta. Sin
embargo, me llama la atención que se detenga a pesar de que se encuentra
dentro de try. El servicio que debo implementar debe consultar datos
periódicamente de una base en SQL Express. Supongo que el servicio se
detendrá igualmente el momento que alguna operación produzca un timeout o
algo similar. ¿cómo podría controlarlo?
Post by Alberto Poblacion
Post by Pablo
[...]
El servicio Service1 se inició en el equipo local y después se detuvo.
Tiene toda la pinta de que se detiene debido a un error. Aparte del
"NSERT" (falta una "I"), otro error que te puede estar ocurriendo es que las
credenciales de la cuenta con la que rueda el servicio no sean válidas en el
Sql Server, ya que estás conectando con autenticación integrada. Es algo que
deberías comprobar, además de arreglar la sentencia SQL.
Alberto Poblacion
hace 16 años
Permalink
Post by Pablo
[...]
El servicio Service1 se inició en el equipo local y después se detuvo.
Tiene toda la pinta de que se detiene debido a un error. Aparte del
"NSERT" (falta una "I"), otro error que te puede estar ocurriendo es que las
credenciales de la cuenta con la que rueda el servicio no sean válidas en el
Sql Server, ya que estás conectando con autenticación integrada. Es algo que
deberías comprobar, además de arreglar la sentencia SQL.

Continúe leyendo en narkive:
Loading...