Файл базы данных Fox Pro заблокирован теневым копированием?
Я использую Process Explorer, чтобы определить, какой процесс заблокирован в конкретном файле базы данных Fox Pro в Windows.
Это говорит мне о том, что система имеет блокировку. Когда я иду, чтобы убить процесс "Система" (который, если вы спросите меня, звучит не очень хорошая идея), он спрашивает меня, уверен ли я, что хочу убить процесс Система. Я не ответил yes
еще.
Это корпоративный сервер, и я думаю, что, возможно, мой единственный вариант - попросить всех выйти из него и перезагрузиться.
У меня есть другие варианты?
1 ответ
У вас есть много других вариантов, но вам нравится пытаться убить System
процесс, большинство из них тоже плохие идеи. (И маловероятно, что удаление всех пользователей тоже поможет, кстати.)
Прежде всего, это файл базы данных. Таким образом, существует блокировка файла, потому что что-то, например, движок базы данных, читает или записывает в этот файл. Кстати, это то, что происходит в 100% случаев, когда база данных находится в сети или доступна. Файл базы данных заблокирован. Так должно быть; это должно быть. Вы действительно не должны выполнять операции на уровне файлов над файлом базы данных, если только вы действительно не знаете, что делаете, что, извините за наблюдения, не похоже на описание, которое подходит вам.
Если вам необходимо выполнить операции на уровне файлов с базой данных, правильное решение состоит в том, чтобы использовать консоль управления базой данных и / или запросы SQL/ODBC, чтобы перевести базу данных в автономный режим и / или "отсоединить" ее. Вы можете сделать это, когда база данных находится в оперативном режиме, только если у вас включены кластеризация, зеркалирование или некоторые другие функции высокой доступности. (Если вам нужно спросить, вы этого не сделаете. Или должны очень усердно молиться, если вы этого не сделаете.) Когда база данных больше не используется, вы можете поиграть с файлом так, как вам хочется, но опять же, вы не должен, если вы действительно не знаете, что делаете.
Если это невозможно, что случается время от времени, лучше всего завершить работу ядра базы данных, которое будет работать как служба. Это должно быть возможно сделать из командной строки net stop
или через оснастку GUI MMC services.msc
или, в крайнем случае, через диспетчер задач, завершив процесс. Это должно снять блокировку и позволить вам делать с файлом, который вы планируете, что угодно, что, опять же, вероятно, плохая идея. Если служба не может быть остановлена и процесс не может быть остановлен, вы ожидаете перезагрузки системы, поскольку служба зависает на ресурсе ядра и не снимает блокировку файла.
Теперь, прежде чем вы броситесь и попытаетесь убить процесс, возможно, еще один вопрос о том, как добиться того, чего вы в конечном итоге пытаетесь достичь. Казалось бы, более мудрый подход, по крайней мере для меня.