Avatar billede zzpot Nybegynder
19. maj 2005 - 09:30 Der er 20 kommentarer

Backup af database på server

Hej
Jeg har fundet følgende kode her på eksperten, som skulle kunne bruges til at tage en backup af en database på en server automatisk.
Problemet er bare at jeg absolut må betegnes som en novice indenfor asp, så jeg kunne tænke mig at høre om der en der kan/vil hjælpe med at få det til at virke?
Det er en accessDB der skla tages backup af og jeg kender den fysiske placering. Mail er CDONTS, og istedet for en gang i døgnet kunne jeg tænke mig det blev en gang om ugen der sendtes en backup til min mail.
Hvordan kan jeg teste det?
På forhånd tak
Scriptet:
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = ("MinFil")

Set f = fso.OpenTextFile(filespec,1)

TimePast = Round(f.ReadLine)
TimeNow = Day(Date)

If TimePast <> TimeNow Then
    Set f = fso.OpenTextFile(filespec,2)
    f.WriteLine (TimeNow)
    Makeup = "Yes"
End If

f.Close


If Makeup = "Yes" Then

    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "Mig"
    Mailer.FromAddress= "blabla@blabla.dk"
    Mailer.RemoteHost = "mailhub.registeredhost.com"
    Mailer.AddRecipient "Mig", "bla@bla.dk"

    Mailer.AddAttachment "x:\xx\...mdb"

    Mailer.Subject    = "Backup af DB (" & Day(Date) & "/" & Month(Date) & ")"
    Mailer.BodyText  = "Godmorgen!" & VbCrLf & "Her er en database!"

    Set Mailer = Nothing
End If
%>
Avatar billede busschou Praktikant
19. maj 2005 - 10:24 #1
Der er flere ting i det
1) Den laver som sådan ikke en backup - den sender dig en mail med databasen, hvorefter du selv skal gemme den et sted
2) Den kører ikke automatisk. Den kræver at du går ind på siden før den gør noget (jeg ved ikke hvordan man kører noget automatisk i asp)
Avatar billede busschou Praktikant
19. maj 2005 - 10:25 #2
Ret
filespec = ("MinFil")
til
filespec = Server.Mappath("/MinFil.txt")
og sør for at samme sted som denne asp fil ligge at have en fil liggende som hedder "MinFil.txt" .- sør også for at skrive noget i filen første gang fx "123" for hvis den er tom første gang får du fejl!
Avatar billede busschou Praktikant
19. maj 2005 - 10:31 #3
Hvis du skal have tjekket for en uge..så skal der vel tjekkes på om dato diffenrencen er større end 7 altså:
-----
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/MinFil.txt")
Set f = fso.OpenTextFile(filespec,1)

TimePast = f.ReadLine
response.write TimePast
response.write "<br>"
response.write DateDiff("d",TimePast,Date)

If DateDiff("d",TimePast,Date) > 7 Then
    Set f = fso.OpenTextFile(filespec,2)
    f.WriteLine (Date)
    Makeup = "Yes"
End If

f.Close

%>
---
Avatar billede busschou Praktikant
19. maj 2005 - 10:34 #4
Så er der det med mailen - der skal du rette felterne så de passer med dine info
---
If Makeup = "Yes" Then
    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "DIT NAVN HER"
    Mailer.FromAddress= "DIN AFSENDER MAIL HER"
    Mailer.RemoteHost = "DIN SMTP SERVER"
    Mailer.AddRecipient "NAVN PÅ MODTAGER", "MODTAGERS EMAIL"

    Mailer.AddAttachment "STIEN TIL DIN DATABASE - ABSOLUTTE STI"

    Mailer.Subject    = "MAILENS EMNE"
    Mailer.BodyText  = "TEKST INDHOLD I MAILEN"

    Set Mailer = Nothing
End If
Avatar billede busschou Praktikant
19. maj 2005 - 10:37 #5
Det hele gemmer du i en asp fil som du åbner engang om ugen...det er jo ikke så automatisk
Evt kan du putte det hele ind i en Sub
--
Sub backup
//alt ovenstående her
End Sub
--
Hver gang nogen så sætter noget ind i databasen, sletter eller ændrer noget i databasen
Så kald "backup"
Hvis der så er gået en uge - så sender den dig en mail
Hvis ikke der er gået en uge - så sender den dig ikke en
Hvis der er gået en uge og ingen har lavet rettelser i databasen - så sender den heller ingen mail
Det er vist så automatisk det kan blive :o)
---
Hvis du har flere databaser kunne du lave kaldet dynamsik
--
Sub backup(databasenavn)
//alt ovenstående her
End Sub
--
Avatar billede zzpot Nybegynder
19. maj 2005 - 11:25 #6
Hej tak for alle kommentarerne.
Jeg har prøvet som du foreslog men får det ikke til at virke....
Kan det være fordi den server jeg er på bruger CDONTS eller ASP mail? Jeg får en siden kan ikke vises når jeg kalder www.mitdomæne.dk/backup.asp - ingen mail :-(
Har lagt en txt fil i roden kaldet MinFil med lidt indhold. Backup.asp ligger også i roden.
scriptet kalder jeg backup.asp(genialt ikke?) :-)og det ser sådan ud:

<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/MinFil.txt")
Set f = fso.OpenTextFile(filespec,1)

TimePast = f.ReadLine
response.write TimePast
response.write "<br>"
response.write DateDiff("d",TimePast,Date)

If DateDiff("d",TimePast,Date) > 7 Then
    Set f = fso.OpenTextFile(filespec,2)
    f.WriteLine (Date)
    Makeup = "Yes"
End If

f.Close

If Makeup = "Yes" Then

    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "mitnavn"
    Mailer.FromAddress= "mitnavn@mail.dk"
    Mailer.RemoteHost = "smtp.mail.dk"
    Mailer.AddRecipient "mitnavn", "modtager@mail.dk"

    Mailer.AddAttachment "d:\sites\mitdomæne.dk\database\mindatabase.mdb"

    Mailer.Subject    = "test"
    Mailer.BodyText  = "bla bla bla"

    Set Mailer = Nothing
End If

%>
Avatar billede busschou Praktikant
19. maj 2005 - 12:16 #7
Jeg gætter på de nederste oplysninger kun er skjult herinde...altså mail mm ;o)
Jo ellers smart nok
Så vidt jeg ved er : Server.CreateObject("SMTPsvg.Mailer")
en del af AspMail
Så det kræver selvfølgelig at du har AspMail på din server
Men men men. Siden du ingen fejl får så vil jeg da næsten tro at du har AspMail!
Hvem har du hotel hos?. De må have en support side hvor der står hvordan man sender mail hos dem gennem aspmail hvis de har det
Det er muligt at de kræver en bestemt FromAddress fx pga undgå spam osv....
Avatar billede zzpot Nybegynder
19. maj 2005 - 13:17 #8
Hej,
Følgende står på deres supportside. Der er aspmail, men det kan jo være de ikke vil acceptere tdc smtp? Jeg prøver lige deres egen.
Er der en måde og sikre at det er den korrekte sti?
Og ja - det er kun her jeg har nogle "mystiske" mailadresser på :-)

ASPMail 4.x 
--------------------------------------------------------------------------------
AspMail tillader dig at sende mails via standard SMTP protokol fra et et hvilket som helst program der kan bruge ActiveX/OLE komponenter. Egenskaber incl.:
SMTP (sending) Messages
Multiple File Attachments
File attachments support MIME and UUEncoding
US Ascii and ISO-8859-1 character sets
PGP
Subject line encoding for 8bit message subjects
Redundant SMTP servers (If the primary SMTP server is down, the secondary server is used)
Special Header Support (Standard X-Priority headers, MS Mail (including Exchange) priority headers, Urgent header, ConfirmReading and ReturnReceipt Headers)
Multiple concurrent users (Tested with 15 concurrent connections)

--------------------------------------------------------------------------------

Simple Mail Example
Using the component is as simple as

Creating the object
Setting a few properties
Calling the SendMail method
The following code demonstrates how to use AspMail from VBScript. In this example Joe from Joe’s Widgets wishes to send an email to John Smith. Joe’s mail server is located at mailhost.localisp.net.


Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName  = "Joe’s Widgets Corp."
Mailer.FromAddress= "Joe@somehost.com"
Mailer.RemoteHost = "mailhost.localisp.net"
Mailer.AddRecipient "John Smith", "jsmith@anotherhostname.com"
Mailer.Subject    = "Great SMTP Product!"
Mailer.BodyText  = "Dear Stephen" & VbCrLf & "Your widgets order has been processed!"
if Mailer.SendMail then
  Response.Write "Mail sent..."
else
  Response.Write "Mail send failure. Error was " & Mailer.Response
end if

By testing the result of the SendMail method we can determine if the mailing process was successful or not.
Avatar billede busschou Praktikant
19. maj 2005 - 13:34 #9
AHA
Du mangler linjen
Mailer.SendMail
Som sikkert sjovt nok er den linje som sender mailen ;o)
Put evt hele if sætningen med i din kode sådan her
---
<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/MinFil.txt")
Set f = fso.OpenTextFile(filespec,1)

TimePast = f.ReadLine
response.write TimePast
response.write "<br>"
response.write DateDiff("d",TimePast,Date)

If DateDiff("d",TimePast,Date) > 7 Then
    Set f = fso.OpenTextFile(filespec,2)
    f.WriteLine (Date)
    Makeup = "Yes"
End If

f.Close

If Makeup = "Yes" Then

    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "mitnavn"
    Mailer.FromAddress= "mitnavn@mail.dk"
    Mailer.RemoteHost = "smtp.mail.dk"
    Mailer.AddRecipient "mitnavn", "modtager@mail.dk"

    Mailer.AddAttachment "d:\sites\mitdomæne.dk\database\mindatabase.mdb"

    Mailer.Subject    = "test"
    Mailer.BodyText  = "bla bla bla"
if Mailer.SendMail then
  Response.Write "Mail sent..."
else
  Response.Write "Mail send failure. Error was " & Mailer.Response
end if

    Set Mailer = Nothing
End If

%>
Avatar billede busschou Praktikant
19. maj 2005 - 13:36 #10
hvad mener du med den korrekte sti i øvrigt?
Hvis det er til databsen så prøv at lave en
Server.Mappath("/mindatabase.mdb")
og se om den æder den :o)

Jeg bliver nød til at smutte og ved ikke om jeg når tilbage i dag
Men jeg er rimelig sikker på at det bare var Mailer.SendMail du mangler
Avatar billede busschou Praktikant
19. juli 2005 - 10:31 #11
zzpot >> kommet videre ?
Avatar billede zzpot Nybegynder
08. august 2005 - 10:27 #12
Hej,
Undskyld, men det blev til en forglemmelse da jeg ikke har fået det til at virke.
Jeg opgav, men vil gerne have det til at funke, men hvordan kommer vi videre?
Håber du stadig har mod på at hjælpe
På forhånd tak
Mvh
Avatar billede busschou Praktikant
08. august 2005 - 10:39 #13
ok jeg kan ikke huske så meget om det, og hvor situationen er
Du kan evt læse min artikkel om global.asa
http://www.eksperten.dk/artikler/752
(tænk at lave reklame for det ;o)
---
global.asa indeholder metoder som køres på events
Hvis du ønsker den skal sende dig databasen til din mail cirka en gang om ugen så kan du gøre noget ala det her i din global asa
---
Sub Application_OnStart
  Application("dbsti") = "d:\vblalba\din_sti_til_databasen\db.mdb"
  Application("sidstOpdateret") = Now()
End Sub

Sub Session_OnStart
  if DateDiff("d",Application("sidstOpdateret"),Now()) >= 7 then
    //send en mail med databasen
    Application.Lock
    Application("sidstOpdateret") = Now()
    Application.UnLock
  end if
End Sub
Avatar billede busschou Praktikant
08. august 2005 - 10:43 #14
på den måde vil den hver gang en bruger besøger din side teste om der er gået en uge
Hvis der mindst er gået 7 dage så sender den en mail med databasen
Avatar billede busschou Praktikant
08. august 2005 - 10:45 #15
alt i alt
-----
Sub Application_OnStart
  Application("dbsti") = "d:\vblalba\din_sti_til_databasen\db.mdb"
  Application("sidstOpdateret") = Now()
End Sub

Sub Session_OnStart
  if DateDiff("d",Application("sidstOpdateret"),Now()) >= 7 then
    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "mitnavn"
    Mailer.FromAddress= "mitnavn@mail.dk"
    Mailer.RemoteHost = "smtp.mail.dk"
    Mailer.AddRecipient "mitnavn", "modtager@mail.dk"
    Mailer.AddAttachment Application("dbsti")
    Mailer.Subject    = "test"
    Mailer.BodyText  = "bla bla bla"
    Mailer.SendMail
    Set Mailer = Nothing
    Application.Lock
    Application("sidstOpdateret") = Now()
    Application.UnLock
  end if
End Sub
Avatar billede busschou Praktikant
08. august 2005 - 10:53 #16
Det er en løsning til at få den til at sende den "rimelig automatisk cirka hver 7dag"
Men fik du prøvet Mailer.SendMail som var det sidste jeg foreslog i sin tid?
For hvis den slet ikke sender mailen så skulle du måske prøve at lave en asp side bare som test, som sender en test mail uden attachment og en som sender med attachment
Bare for at se om det er det som fejler :o)
Avatar billede zzpot Nybegynder
08. august 2005 - 12:07 #17
Hej
Sorry, men jeg kan ikke få det til at virke. Hverken med global.asa eller som backup.asp....
Kan du se nogle fejl?
global.asa
Sub Application_OnStart
  Application("dbsti") = "d:\sites\mitdomæne.dk\database\mindb.mdb"
  Application("sidstOpdateret") = Now()
End Sub

Sub Session_OnStart
  if DateDiff("d",Application("sidstOpdateret"),Now()) >= 7 then
    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "minmail"
    Mailer.FromAddress= "minmail@minmail.dk"
    Mailer.RemoteHost = "smtp.mail.dk"
    Mailer.AddRecipient "mitnavn", "minmail@minmail.dk"
    'Mailer.AddAttachment Application("dbsti")
    Mailer.Subject    = "test"
    Mailer.BodyText  = "bla bla bla"
    Mailer.SendMail
    Set Mailer = Nothing
    Application.Lock
    Application("sidstOpdateret") = Now()
    Application.UnLock
  end if
End Sub
Eller backup.asp
<html>
    <head>
        <title>Test af backup</title>
    </head>

<body>

<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/MinFil.txt")
Set f = fso.OpenTextFile(filespec,1)

TimePast = f.ReadLine
response.write TimePast
response.write "<br>"
response.write DateDiff("d",TimePast,Date)

If DateDiff("d",TimePast,Date) > 7 Then
    Set f = fso.OpenTextFile(filespec,2)
    f.WriteLine (Date)
    Makeup = "Yes"
End If

f.Close

If Makeup = "Yes" Then

    Dim Mailer
    Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
    Mailer.FromName  = "minmail"
    Mailer.FromAddress= "minmail@minmail.dk"
    Mailer.RemoteHost = "smtp.mail.dk"
    Mailer.AddRecipient "minmail", "minmail@minmail.dk"

    'Mailer.AddAttachment "d:\sites\mitdomæne.dk\database\mindb.mdb"

    Mailer.Subject    = "test"
    Mailer.BodyText  = "bla bla bla"
if Mailer.SendMail then
  Response.Write "Mail sent..."
else
  Response.Write "Mail send failure. Error was " & Mailer.Response
end if

    Set Mailer = Nothing
End If

%>

</body>
</html>


Det er et ASP hotel.....:-)
Stien skulle være korrekt og ja jeg kan ikke komme på mere....
mvh
Avatar billede busschou Praktikant
08. august 2005 - 12:15 #18
Har du prøvet lave en test side som ikke tjekker på datoer men som udelukkende sender dig en mail ?
Avatar billede zzpot Nybegynder
08. august 2005 - 16:10 #19
Jeg fatter ikke en brik.....Lige meget hvad jeg prøver, så vil det ikke lykkes.
Mvh
Avatar billede busschou Praktikant
08. august 2005 - 16:58 #20
Det vil sige at du kan ikke sende en mail
Hvilken udbyder har du?
Måske har de en anden komponent
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester