|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.02.2011, 07:09 | #1 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
Как скопировать файл, который занят другим приложением?
Здравствуйте.
Есть необходимость скопировать файл, но есть и проблема. Суть проблемы: - есть специфичное клиент-серверное приложение, написанное по заказу сторонними разработчиками; - исходников, естественно, нету; - приложение использует неизвестный формат БД (один файл ~80 мб); - сервер постоянно запущен и останавливать его крайне нежелательно, а уж о постоянных остановках и речи быть не может; - недавно появилась необходимость бэкапить БД; - когда я пытаюсь скопировать файл с базой данных, мне ОС пишет, что данный файл занят другим процессом; - то же самое происходит, когда я пытаюсь создать поток TFileStream к этому файлу Подскажите пожалуйста, можно ли прочитать такой файл из своей программы (это в идеале), или существуют ли какие-нибудь утилиты для копирования таких файлов? |
09.02.2011, 09:08 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
зависит от способа открытия БД...
Но, даже если файловая система и позволит это сделать - это будет НЕПРАВИЛЬНО. В момент копирования могут быть незавершённые транзакции - возможно (теоретически) получить битый набор данных. Для начала попробуйте воспользоваться штатными средствами Backup'а данных, имеющихся в Вашей СУБД (впрочем, если это самописная БД - тогда всё намного хуже ). p.s. кстати, попробуйте скопировать файл (или просмотреть файл по ALT-F3) в Far Commander. Если он не сумеет этого сделать, значит СУБД открыто в монопольном режиме и скопировать (без остановки процесса) не получится... |
09.02.2011, 11:09 | #3 | |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
Цитата:
Собственно, я надеялся, что может быть есть возможность прочитать файловую систему (NTFS), найти все смещения для требуемого файла и побайтно считать его напрямую с жёсткого диска в обход операционки. Такое, в принципе, возможно (т.е. есть такая физ. возможность и про это можно найти материалы в интернете)? Потому что, если не получится - то придётся изгаляться с ночными отключениями и запусками сервера приложений. P.S. кстати, у меня ни разу нигде не ёкнуло, что могут остаться незавершённые транзакции. Большое спасибо за предупреждение. |
|
09.02.2011, 11:28 | #4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
> то придётся изгаляться с ночными отключениями и запусками сервера приложений
или поставить RAID
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Возможно ли понять используется ли файл другим приложением? | Парсифаль | Общие вопросы C/C++ | 1 | 24.01.2011 12:31 |
Работа с другим приложением | Станкевич Вадим | Общие вопросы Delphi | 2 | 17.05.2010 16:17 |
Файл занят другим процессом | Adonidi | Общие вопросы Delphi | 4 | 25.03.2010 21:38 |
Как снять с файла признак что он занят другим пользователем | Chelentano | Microsoft Office Excel | 1 | 12.08.2009 10:56 |
Как скопировать проект под другим именем? | Dimoney | Свободное общение | 4 | 17.12.2007 13:50 |