Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Caulfield

Serviço do windows

Recommended Posts

Bom dia,

Eu criei um serviço para fazer BackUp do Banco de dados do SQL Server. Só que eu queria que o serviço inicia-se num determinado horário. Como posso fazer isso?

 

Segue o código que estou usando...

 

 

 

Protected Overrides Sub OnStart(ByVal args() As String)


       ' Add code here to start your service. This method should set things
       ' in motion so your service can do its work.

       dia = Format(Now, "dd")
       mes = Format(Now, "MM")
       ano = Format(Now, "yyyy")
       SalvarBD = "DBSisRosset_" & dia + mes + ano & ".bak"

       Dim con As SqlConnection
       Dim cmd As SqlCommand
       con = New SqlConnection("Data Source=xxx;Initial Catalog=xxx;User Id=xx;Password=xxxx;")
       Try
           cmd = New SqlCommand("backup database DBSisRosset to disk='D:\PROJETOS\_BackUp MyDB\" & SalvarBD & "'", con)
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try

       Try
           arquivoWS = New StreamWriter("C:\BackUpSQLmyDB.log", True)
           arquivoWS.WriteLine("Serviço iniciado em " & DateTime.Now)
           arquivoWS.Flush()
       Catch ex As Exception

       End Try

   End Sub

   Protected Overrides Sub OnStop()
       ' Add code here to perform any tear-down necessary to stop your service.
       Try
           arquivoWS.WriteLine("Serviço encerrado em " & DateTime.Now)
           arquivoWS.Close()
       Catch ex As Exception
           'não vamos tratar exceção
       End Try
   End Sub

 

Eu tentei usar o Timer e ServiceController mas não deu certo...

 

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       If TimeOfDay.ToLongTimeString = "10:37:00" Then
           ServiceController1.Start()
       End If

   End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem.... mas consegui como fazer. Segue o código.

 

 

Imports System.IO
Imports System.Threading
Imports System.Data.SqlClient


Public Class Service1

   Private arquivoWS As StreamWriter
   Private oTimer As System.Threading.Timer
   Dim SalvarBD, dia, mes, ano As String

   Protected Overrides Sub OnStart(ByVal args() As String)

       Dim oCallback As New TimerCallback(AddressOf OnTimedEvent)
       oTimer = New System.Threading.Timer(oCallback, Nothing, 1000, 1000)

   End Sub

   Private Sub OnTimedEvent(ByVal state As Object)

       If TimeOfDay.ToLongTimeString = "10:19:00" Then

           dia = Format(Now, "dd")
           mes = Format(Now, "MM")
           ano = Format(Now, "yyyy")
           SalvarBD = "DBSisRosset_" & dia + mes + ano & ".bak"

           Dim con As SqlConnection
           Dim cmd As SqlCommand
           con = New SqlConnection("Data Source=Servidor;Initial Catalog=Nome do BD;User Id=Usuário;Password=Senha;")

           Try
           cmd = New SqlCommand("backup database Nome do BD to disk='D:\PROJETOS\_BackUp MyDB\" & SalvarBD & "'", con)
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()

               arquivoWS = New StreamWriter("c:\SimpleService.log", True)
               arquivoWS.WriteLine("Serviço iniciado em " & DateTime.Now)
               arquivoWS.Flush()
           Catch ex As Exception

           End Try
           Try
               arquivoWS.WriteLine("Serviço encerrado em " & DateTime.Now)
               arquivoWS.Close()
           Catch ex As Exception
               'não vamos tratar exceção
           End Try
       End If

   End Sub


   Protected Overrides Sub OnStop()
       ' Add code here to perform any tear-down necessary to stop your service.

   End Sub

End Class

 

 

Só pra completar.... pra criar o serviço usando o Prompt de comando é só usar o seguinte:

 

SC CREATE "NOME DO SERVIÇO" binpath= "caminho do serviço\Nome do arquivo.exe" - com as aspas

 

 

Valeu.

 

Acho que é isso: http://www.codeproject.com/KB/shell/scheduler.aspx

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera quando eu estava fazendo os testes eu instalei o serviço na máquina onde eu estava e o arquivo do backup ficava com 2,54mb.

Quando eu instalei no servidor e ele fez o backup o arquivo ficou com 5mb. Alguém sabe dizer pq tanta diferença?

 

A minha máquina é Win Xp Professional e o servidor Win Server 2008.

 

 

 

Não entendi muito bem.... mas consegui como fazer. Segue o código.

 

 

Imports System.IO
Imports System.Threading
Imports System.Data.SqlClient


Public Class Service1

   Private arquivoWS As StreamWriter
   Private oTimer As System.Threading.Timer
   Dim SalvarBD, dia, mes, ano As String

   Protected Overrides Sub OnStart(ByVal args() As String)

       Dim oCallback As New TimerCallback(AddressOf OnTimedEvent)
       oTimer = New System.Threading.Timer(oCallback, Nothing, 1000, 1000)

   End Sub

   Private Sub OnTimedEvent(ByVal state As Object)

       If TimeOfDay.ToLongTimeString = "10:19:00" Then

           dia = Format(Now, "dd")
           mes = Format(Now, "MM")
           ano = Format(Now, "yyyy")
           SalvarBD = "DBSisRosset_" & dia + mes + ano & ".bak"

           Dim con As SqlConnection
           Dim cmd As SqlCommand
           con = New SqlConnection("Data Source=Servidor;Initial Catalog=Nome do BD;User Id=Usuário;Password=Senha;")

           Try
           cmd = New SqlCommand("backup database Nome do BD to disk='D:\PROJETOS\_BackUp MyDB\" & SalvarBD & "'", con)
           con.Open()
           cmd.ExecuteNonQuery()
           con.Close()

               arquivoWS = New StreamWriter("c:\SimpleService.log", True)
               arquivoWS.WriteLine("Serviço iniciado em " & DateTime.Now)
               arquivoWS.Flush()
           Catch ex As Exception

           End Try
           Try
               arquivoWS.WriteLine("Serviço encerrado em " & DateTime.Now)
               arquivoWS.Close()
           Catch ex As Exception
               'não vamos tratar exceção
           End Try
       End If

   End Sub


   Protected Overrides Sub OnStop()
       ' Add code here to perform any tear-down necessary to stop your service.

   End Sub

End Class

 

 

Só pra completar.... pra criar o serviço usando o Prompt de comando é só usar o seguinte:

 

SC CREATE "NOME DO SERVIÇO" binpath= "caminho do serviço\Nome do arquivo.exe" - com as aspas

 

 

Valeu.

 

Acho que é isso: http://www.codeproject.com/KB/shell/scheduler.aspx

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que não pois pois eu fiz um e logo depois o outro. E o sistema está bem no começo então o uso ainda não é tão expressivo.

 

Bom... vou fazer um teste fazendo o backup da minha máquina de novo pra ver se fica menor.

 

Valeu.

 

O banco de dados não esta maior não? A tendência é crescer mesmo.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.