Ho utilizzato il codice seguente per aprire un file di database SQLite che si trova su un computer di rete da più di un anno ormai quasi quotidianamente. All'improvviso, stamattina, non sono in grado di aprire il file a livello di programmazione.SQLite: impossibile aprire il file di rete in modo programmatico, anche se funzionava prima dello
private Boolean Connect(String strPathFile)
{
// Initialize the connection object.
this.DbConnection = null;
try
{
// DATABASE: Create the connection string and set the settings.
String strConnection = @"Data Source=" + strPathFile + @";Version=3;";
// DATABASE: Connect to the database.
this.DbConnection = new SQLiteConnection(strConnection);
this.DbConnection.Open();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return false;
}
Il file è una risorsa di rete nella forma "\ Server \ ShareName \ filename.db" (meno le virgolette).
Ecco la cosa interessante. SQLite Administrator non ha problemi ad aprire il file del database di rete, nessuno e più volte. Posso anche aprire il file localmente. Ho copiato il file sul mio disco locale e ho semplicemente modificato il percorso all'interno di Visual Studio 2012 (VS2012).
Il server sembrava soddisfacente. Era passato attraverso un riavvio ad un certo punto dall'ultima volta che l'ho controllato. Presumo un aggiornamento di Microsoft. File Explorer non ha problemi a sfogliare la cartella e, come ho detto, SQLite Administrator può aprire il file di rete.
Ho controllato ancora una volta le autorizzazioni e tutti hanno il controllo completo e gli utenti del server hanno il controllo completo, sia sulle autorizzazioni di sicurezza che sulle autorizzazioni di condivisione. Ho controllato la cartella e il file, e le autorizzazioni sono le stesse. Mi aspettavo tanto, perché SQLite Administrator può aprire il file. Il server non ha un firewall configurato, Windows Firewall o altro. Ho ricontrollato anche stamattina. Di nuovo, l'amministratore di SQLite si sarebbe lamentato di ciò.
Ho verificato la scrittura eseguendo una copia del file sull'unità di rete utilizzando Esplora file. Questo non ha avuto problemi.
Il server è un Windows Server 2003. Utilizzo Windows 7 Professional a 64 bit.
Ho anche provato ad aprire il database in modalità di sola lettura, ma anche questo ha avuto esito negativo. Mi aspettavo questo comportamento. SQLite Administrator funziona ancora bene.
ho provato varie altre stringhe di connessione, tra cui SQLiteConnectionStringBuilder() solo per vedere cosa succede, e tutte le strade portano a Roma, e cioè:
System.Data.SQLite.SQLiteException occurred
HResult=-2147467259
Message=unable to open database file
Source=System.Data.SQLite
ErrorCode=14
StackTrace:
at System.Data.SQLite.SQLite3.Open(String strFilename, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
at System.Data.SQLite.SQLiteConnection.Open()
at SQL.cSQL.Connect(String strPathFile) in C:\<Path to source file>:line 367
InnerException:
Pensieri?
La stessa cosa mi è successa dopo l'aggiornamento da .net3.5 a .net4. Nessuna soluzione trovata ancora. :( – henon
Mi ero dimenticato di questo problema, ho fatto qualcosa, purtroppo non ricordo cosa al momento, e il problema è andato via.Non ho fatto nulla di programmatico per risolvere il problema.La risoluzione era qualcosa che ho fatto sul server Si potrebbe voler provare a riavviare il server.Il problema aveva qualcosa a che fare con il blocco dei file o simili –