Newsgroup: it.comp.appl.access
Titolo: il backup perfetto...

Il codice che segue è stato scritto circa un anno fa, e in quel tempo è stato fonte di grosso orgoglio da parte mia, considerandolo certamente una pietra miliare nella programmazione in VBA in access (non sono un programmatore professionista)
Praticamente crea un nuovo db e crea con una query di creazione tabella tutte le tabelle presenti del db di origine... Avevo creato il sistema di backup perfetto..
 
Dim tdf As TableDef, Dbs As Database
For Each tdf In CurrentDb.TableDefs
         If Mid(tdf.Name, 3, 1) <> "y" Then 'esclude le tabelle di sistema e l'eventuale USysRibbons
         CurrentDb.Execute "SELECT [" & tdf.Name & "].*, *  INTO [" & tdf.Name & "] IN """ & strPath & """ FROM [" & tdf.Name & "];"
         End If
Next tdf
Beep
   db.Close
   Set db = Nothing
   Beep
 
   MsgBox "I dati sono stati esportati in " & strPath, vbOKOnly, "Operazione terminata correttamente"
 
il problema è sorto quando un anno dopo ho utilizzato il file di backup: le tabelle c'erano tutte ed anche i dati ma non funzionavano.. dopo un'attento studio del problema mi sono accorto che la procedura copiava i campi ma non le chiavi primarie...
Ho rimesso a posto il programma con un sistema più semplice di copia del BE... però mi rimane una domanda... se avessi voluto copiare anche le chiavi primarie come avrei dovuto fare?
...adesso è puro interesse speculativo... Ringrazio in anticipo

cesare....@gmail.com
 presented the following explanation :

E l'hai chiamato "il backup perfetto"...
 
Non solo non hai copiato le chiavi ma, conseguentemente, nemmeno
le ralazioni... già perché Access è un db relazionale!
Per spiegartelo dovrei andare a vedere i miei appunti e testarlo,
ma non ne ho alcuna voglia.
 
Opinione personale, il backup perfetto è quello che copia
automaticamente FE e BE.
Io per far ciò uso uso XCOPY... /D/E/Y  e un terzo disco che
ogni 2/3 mesi alterno con un quarto.
Il tutto non riferito solo ad Access, ma a tutto il secondo disco
dati (2TB), il primo è un SSD velocissimo da 256GB che contiene
solo l'OS.
Del quale ultimo faccio un clone su identico SSD usando Acronis.
 
Bruno


spero che il "perfetto" fosse ironico
il backup perfetto è quello della regola 3-2-1
quindi la tua procedura dovrebbe fare una copia dell'intero backend nel 
disco stesso, per un ripristino rapido.
una seconda copia in un storage diverso, tipo un NAS (sperando non 
capiti il disastro di Qnap di ieri) per un ripristino rapido nel caso 
del danneggiamento fisico del dispositivo principale
una terza copia dovresti uploadarla su uno spazio di storage online 
(ftp/google drive etc) per pararti il c***o da furto del server/pc, da 
loro distruzione o da ramsonware vari
 
 
BFS
 
 
 
 
 

... certo che backup perfetto era una battuta (il sarcasmo è morto...)


io uso questa come backup giornaliero:
 
Private Sub Form_Close()
Dim GetDBPath As String
Dim nomedb As String
Dim subfold As String
Dim fso As Object
 
GetDBPath = CurrentProject.Path & "\"
nomedb = CurrentProject.Name
subfold = "backup\" & Year(Date) & Format(Month(Date), "00") & 
Format(Day(Date), "00")
 
 
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CopyFile GetDBPath & nomedb, GetDBPath & subfold & ".accdb"
    Set fso = Nothing
End Sub
 
Akery
 
-- 
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus