Я использовал приведенный ниже код, чтобы открыть файл базы данных SQLite, который находится на сетевом компьютере уже более года почти каждый день. Внезапно этим утром я не могу открыть файл программно.
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;
}
Файл является сетевым ресурсом в форме "\ Server\ShareName\FileName.db" (меньше двойных кавычек).
Вот интересная вещь. У администратора SQLite нет проблем, открывающих файл сетевой базы данных, ни один, ни один раз. Я также могу открыть файл локально. Я скопировал файл на свой локальный диск и просто изменил путь в Visual Studio 2012 (VS2012).
Сервер казался прекрасным. В какой-то момент он прошел через перезагрузку с тех пор, как я проверил последний раз. Я предполагаю Microsoft Update. В Проводнике нет проблем с просмотром папки, и, как я уже сказал, администратор SQLite может открыть сетевой файл.
Я снова проверил разрешения, и у всех есть полный контроль, а также у пользователей сервера полный контроль, как на разрешениях безопасности, так и на разрешениях на доступ. Я проверил папку и файл, а разрешения - то же самое. Я ожидал так много, потому что администратор SQLite может открыть файл. На сервере не установлен брандмауэр, брандмауэр Windows или нет. Я тоже проверил это утро. Снова, администратор SQLite мог бы пожаловаться на это.
Я проверил запись, сделав копию файла на сетевом диске с помощью File Explorer. У этого не было проблем.
Разделение - это Windows Server 2003. Я использую 64-разрядную версию Windows 7 Professional.
Я также попытался открыть базу данных в режиме только для чтения, но это тоже не удалось. Я ожидал такого поведения. Администратор SQLite по-прежнему работает хорошо.
Я пробовал различные строки подключения, включая SQLiteConnectionStringBuilder(), чтобы увидеть, что происходит, и все дороги ведут в Рим, а именно:
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:
Мысли?