Errore mancato aggiornamento database sola lettura

di il
8 risposte

Errore mancato aggiornamento database sola lettura

Saluti a tutto lo staff.
Sono a chiedervi una mano in merito al seguente problema.
Ho un progetto database mdf su Microsoft sql server tramite visual studio 2019 - visual basic.
Premesso che il progetto funziona alla perfezione all'interno dell'editor di visual basic, ma dopo
aver creato l'eseguibile del progetto, sposto, mediante copia in un altra cartella, il file di
database mdf, nonchè il file log.ldf.
Il database si avvia regolarmente, ma nel momento in cui voglio aggiungere record o modificarli, mi da errore in merito al file di database che si trova in sola lettura. Ho fatto tutti i controlli e le prove possibili, cercando di togliere l'attributo di sola lettura sia alla cartella del progetto che a quella esterna, senza riuscirvi perchè l'attributo ricompare. In ogni caso all'interno dell'editor di VB funziona tutto alla perfezione. Il problema è all'esterno dell'editor. Altri eseguibili che non contengono database funzionano.
Spero di essermi spiegato bene, ma ovviamente sono quì anche a rispondere.

Grazie, saluti

8 Risposte

  • Re: Errore mancato aggiornamento database sola lettura

    Intanto perché hai scritto in questa sezione che è per il VB6 se utilizzi VB.NET?

    E in secondo luogo, di quale versione di SQL Server parliamo? Hai spostato i file semplicemente spostandoli da una cartella all'altra?
  • Re: Errore mancato aggiornamento database sola lettura

    Intanto grazie della risposta e mi scuso per non aver individuato subito la sezione VB.Net.
    La versione di sql server è express 2019 localdb.
    Si, ho copiato semplicemente i file in una cartella esterna al progetto.
    Mancherà qualcosa di sicuro ma non ho capito che cosa.
  • Re: Errore mancato aggiornamento database sola lettura

    Ma la stringa di connessione l'hai cambiata? Dove punta la tua applicazione?
  • Re: Errore mancato aggiornamento database sola lettura

    No, non ho cambiato nulla del genere:
    questa è la connessione:

    Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\File.mdf;Integrated Security=True;Connect Timeout=30
    A livello di progetto funziona tutto comunque.
    Il problema sorge quanto si crea l'eseguibile.
  • Re: Errore mancato aggiornamento database sola lettura

    Devi cambiare il valore della DataDirectory prima di collegarti al DB.

    Se il db sta nella cartella dell'eseguibile, allora (in C# ma cambia poco)
    
     string executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
     string path = (System.IO.Path.GetDirectoryName(executable));
     AppDomain.CurrentDomain.SetData("DataDirectory",path);
     
    oppure opera di conseguenza usando sempre la AppDomain.CurrentDomain.SetData
  • Re: Errore mancato aggiornamento database sola lettura

    Ho spostato la discussione nell'area corretta
  • Re: Errore mancato aggiornamento database sola lettura

    Devo modificare la stringa di connessione in MySetting quindi.
    Devo copiare tutte e tre le righe? O solo quella relativa all'AppDomain?
  • Re: Errore mancato aggiornamento database sola lettura

    Dopo varie peripezie sono riuscito a risolvere semplicemente spostando i file mdf e log nella cartella
    del progetto - soluzione, cioè dove è presente il file con estensione sln.
    Poi ho compilato in modalità Release ed ho copiato e incollato all'esterno solo l'eseguibile ricavato.
    Non so se sono stato chiaro.
    Grazie comunque a tutti.
Devi accedere o registrarti per scrivere nel forum
8 risposte