Действие не может быть выполнено так как этот файл открыт в sql server
SQL Server не удалось открыть указанный файл из-за указанной ошибки ОС.
Если SQL Server не удается открыть базу данных и (или) файлы журнала транзакций, в событии приложения Windows или в журнале ошибок SQL Server может отобразиться ошибка 17204. Ниже приведен пример такой ошибки:
Эти ошибки могут возникнуть во время запуска экземпляра SQL Server или любой операции с базой данных, при которой выполняется попытка запустить базу данных (например, ALTER DATABASE). В некоторых сценариях могут возникать ошибки 17204 и 17207, а в некоторых — лишь одна из них.
Если такие ошибки происходят в пользовательской базе данных, она остается в состоянии RECOVERY_PENDING, а приложения не могут получить доступ к базе данных. Если такие ошибки происходят в системной базе данных, экземпляр SQL Server не запускается и вы не можете подключиться к SQL Server. Сбой системной базы данных может привести к переходу ресурса отказоустойчивого кластера SQL Server в автономный режим.
Причина
Прежде чем можно будет использовать базу данных SQL Server, ее необходимо запустить. Процесс запуска базы данных включает в себя следующее:
- инициализацию различных структур данных, представляющих базу данных и ее файлы;
- открытие всех файлов, принадлежащих к базе данных;
- выполнение восстановления базы данных.
SQL Server использует функцию API CreateFile в Windows для открытия файлов, принадлежащих базе данных.
- В FCB::Open — произошла ошибка при попытке SQL Server открыть файл.
- FileMgr::StartPrimaryDataFiles — первичный файл данных или файл, принадлежащий первичной файловой группе.
- FileMgr::StartSecondaryDataFiles — файл, принадлежащий вторичной файловой группе.
- FileMgr::StartLogFiles — файл журнала транзакций.
- STREAMFCB::Startup — контейнер SQL FileStream.
- FCB::RemoveAlternateStreams
Полный физический путь к файлу.
Идентификатор файла, соответствующий файлу.
Код ошибки операционной системы и описание ошибки. В некоторых экземплярах вы увидите только код ошибки.
Действие пользователя
Для устранения ошибки 17204 необходимо узнать соответствующий код ошибки операционной системы. А затем выполнить диагностику этой ошибки. После устранения ошибки операционной системы можно попытаться перезапустить базу данных (например, с помощью инструкции ALTER DATABASE SET ONLINE) или экземпляр SQL Server, чтобы перевести затронутую базу данных в режим "в сети". Иногда устранить ошибку операционной системы не удается. В таком случае необходимо выполнить определенные корректирующие действия. Мы обсудим их в этом разделе.
В случае возникновения ошибки операционной системы 5 ( Access is Denied ), рассмотрите следующие методы устранения:
Проверьте учетную запись пользователя, от имени которой сейчас запущена служба SQL Server. Для получения этих сведений можно использовать диспетчер задач Windows. Найдите значение "Имя пользователя" для исполняемого файла "sqlservr.exe". Если вы недавно изменили учетную запись службы SQL Server, поддерживаемым способом выполнения этой операции является использование служебной программы "Диспетчер конфигурации SQL Server". Дополнительные сведения см. в статье Диспетчер конфигурации SQL Server.
В зависимости от типа операции — открытие баз данных во время запуска сервера, присоединение базы данных, восстановление базы данных и т. д. — учетная запись, используемая для олицетворения и получения доступа к файлу базы данных, может варьироваться. Сведения о том, какая операция позволяет задавать разрешения к каким учетным записям, см. в статье Защита данных и файлов журналов. Используйте такие средства, как Process Monitor, чтобы узнать, каким образом предоставляется доступ к файлу: в контексте безопасности учетной записи запуска службы экземпляра SQL Server (или идентификатора безопасности службы) либо олицетворенной учетной записи.
Если SQL Server олицетворяет учетные данные пользователя, выполняющего операцию ALTER DATABASE или CREATE DATABASE, в средстве Process Monitor отобразятся следующие сведения (пример):
Если вы получаете ошибку ОС The system cannot find the file specified = 3
Если возникает ошибка операционной системы The process cannot access the file because it is being used by another process = 32
У меня есть база данных и вы хотите переместить файлы .mdf и .ldf в другое место. Но я не хочу останавливать службу MSSQLSERVER , и я не хочу экспортировать ее на другой сервер.
Как я могу это сделать?
Вам не нужно останавливать службу SQL Server для перемещения файлов базы данных, но вам нужно отключить конкретную базу данных. Это связано с тем, что вы не можете перемещать файлы во время их доступа, а использование базы данных в автономном режиме останавливает использование файлов приложением SQL Server.
Процесс их перемещения довольно прост. Detach /Attach уже был описан, но это не так сложно.
Изменить расположение файлов с помощью команды ALTER DATABASE :
Обратите внимание: вам не нужно объявлять старое местоположение в этой команде. Изменение этого пути не вступает в силу немедленно, но будет использоваться при следующем запуске базы данных.
Установить базу данных в автономном режиме
(Я использую WITH ROLLBACK IMMEDIATE , чтобы выгнать всех и отменить все транзакции, открытые в настоящий момент)
Переместить /Скопировать файлы в новое место
Просто скопируйте файлы с помощью своего любимого метода (нажмите «n Drag, XCopy, Copy-Item, Robocopy)
Принесите базу данных онлайн
Вы можете увидеть это более подробно здесь .
Файлы MDF и LDF защищены и не могут быть перемещены во время работы базы данных.
Если вы не возражаете, чтобы база данных не работала, вы можете DETACH ее переместить, а затем ATTACH .
Теперь вы должны быть в порядке. Информацию о DETACH - ATTACH можно найти .
В ссылке о DETACH - ATTACH есть рекомендация использовать инструкцию ALTER DATABASE , если поддерживать базу данных на том же экземпляр SQL Server. Дополнительная ссылка в Перенос пользовательских баз данных .
Если вы хотите, чтобы он работал во время перемещения, выполните BACKUP - RESTORE . В процессе восстановления вы можете определить новое местоположение файлов базы данных.
Чтобы переместить файлы системной базы данных, выполните следующие действия:
Войдите как пользователь в SSMS
Сделайте резервную копию созданной пользователем базы данных для обеспечения безопасности.
Убейте все сеансы, подключенные к серверу из SSMS.
Выполните следующую команду, чтобы проверить текущее расположение файлов в системных базах данных:
USE master;
SELECT * FROM sys.master_files;
Определите путь и обратите внимание на текущий путь к файлам.
Используйте TSQL для изменения пути к файлу для всей базы данных, кроме master:
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Теперь местоположение файла было изменено.
Обязательно перемещайте файлы ldf и mdf
В SSMS щелкните правой кнопкой мыши Сервер и выберите свойства. Внутри свойств перейдите в Настройки базы данных. Измените базы данных по умолчанию для данных и журнала на путь назначения. Выйдите из сервера.
Например: change C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\ в E:\projects\DataBaseFiles\MSSQL\DATA\
Остановить экземпляр SQL Server.
Скопируйте файл или файлы в новое место. Используйте Robocopy для перемещения файлов, чтобы скопировать разрешения доступа в папку назначения. Откройте cmd и запустите его как администратор и используйте следующую команду:
robocopy /sec sourceFolder destinationFolder
Лучше перейти в исходное местоположение, чтобы запустить команду. Удалите другие файлы, кроме файлов системной базы данных, которые копируются. Например:
(Здесь мы перемещаем все файлы системных баз данных в новое место.)
- В меню «Пуск» выберите «Все программы», «Microsoft SQL Server», «Средства настройки» и «Диспетчер конфигурации SQL Server».
Выполните следующие шаги в диспетчере конфигурации SQL Server:
В узле SQL Server Services щелкните правой кнопкой мыши экземпляр SQL Server (например, SQL Server (MSSQLSERVER)) и выберите «Свойства». В диалоговом окне Свойства SQL Server (имя экземпляра) нажмите вкладку «Параметры запуска». В поле «Существующие параметры» выберите параметр «d», чтобы переместить файл основных данных. Нажмите «Обновить», чтобы сохранить изменения. В поле «Укажите параметр запуска» измените параметр на новый путь к основной базе данных. В поле «Существующие параметры» выберите параметр «l», чтобы переместить файл главного журнала. Нажмите «Обновить», чтобы сохранить изменения. В поле «Укажите параметр запуска» измените параметр на новый путь к основной базе данных.
Значение параметра для файла данных должно соответствовать параметру -d, а значение для файла журнала должно соответствовать параметру -l. В следующем примере показаны значения параметров для местоположения файла основных данных по умолчанию.
Если запланированное перемещение для файла основных данных E: \ SQLData, значения параметров будут изменены следующим образом:
Остановите экземпляр SQL Server, щелкнув правой кнопкой мыши имя экземпляра и выбрав «Стоп». Перезапустите экземпляр SQL Server.
Войдите в систему как пользователь sa в SSMS и проверьте расположение файлов базы данных, выполнив следующий запрос:
USE master;
SELECT * FROM sys.master_files;
Я не уверен, что это лучший способ (я бы приветствовал любые комментарии, чтобы рассказать мне, как это не так), но это очень просто (и быстро, если у вас небольшая база данных):
Сначала создайте резервную копию базы данных в файле .bak. Затем восстановите базу данных из того же .bak-файла, выбрав новые .mdf и .ldf-файлы в параметрах файла для задачи восстановления.
Я бы не делал этого в производственной среде ouside окна обслуживания, так как вы не можете получить доступ к базе данных во время восстановления. Однако другие методы, которые я видел выше, будут иметь сходные недостатки. После выполнения задачи восстановления вам не нужно удалять старый файл. Это делается автоматически.
Есть способ переместить файлы данных базы данных (еще не уверен, есть ли способ сделать это для файлов журналов), не отключая базу данных в автономном режиме.
Краткая версия заключается в том, что вы добавляете другой файл базы данных в новое место, а затем используете DBCC Shrinkfile с опцией EMPTYFILE для перемещения данных из старого файла в новый файл. Когда это будет сделано, вы можете удалить старый файл данных.
Не мое решение, я сам искал это решение и нашел его очень полезным для нашей производственной среды.
Мастер копирования базы данных можно использовать в режиме резервного копирования и восстановления. Щелкните правой кнопкой мыши на db задача Копировать базу данных
При попытке переименовать, переместить или удалить какой-либо файл или папку вы можете столкнуться с уведомлением «Действие не может быть выполнено, так как этот файл открыт в …» после чего обычно следует название какой-либо программы, файла или процесса (system, Microsoft Word, проводник, Utorrent, com surrogate, disc soft lite bus service, другой программе, хост процесс windows rundll32). Эта проблема не является серьёзной, но может раздражать, так как препятствует нужным операциям с файлами и папками. Ниже разберём, почему возникает такое уведомление, и как устранить возникшую проблему.
Действие не может быть выполнено – почему так происходит
Как правило, данное уведомление появляется в ситуации, когда нужный файл или папка заблокированы ОС Виндовс или какими-либо сторонними программами. Последние используют данный файл в текущий момент, или он нужен им для будущих задач, потому они препятствуют любым операциям с данным файлом, а также с папкой, где расположен данный файл.
Причиной блокировки могут выступать различные программы и процессы – System, Проводник, rundll32, TrustedInstaller и другие. В случае « TrustedInstaller » защищённые им файлы и папки трогать не рекомендуется (они понадобятся для стабильной работы системы). В случае же других процессов и программ вы сможете разблокировать их и удалить (переместить, переименовать) в соответствии с нужными вам задачами.
Перезагрузите ваш PC
Тривиальный совет, который оказывается весьма действенным и актуальным. Просто перезагрузите ваш ПК, и после перезагрузки попытайтесь удалить ненужный файл. Удаление (перенос) файла или папки может пройти без каких-либо проблем.
Перезапустите Проводник
Проводник (File Explorer) отображает иерархическую файловую структуру в вашей системе. Перезапуск Проводника может помочь в решении проблемы с невозможностью удаления (перемещения) файла на диске в связи с открытием файла.
Для перезапуска Проводника вам понадобится «Диспетчер Задач» – инструмент системного мониторинга, использующийся для предоставления информации о процессах и программах, запущенных на компьютере. Его функционал можно также задействовать для завершения процессов и программ, что нам и понадобится.
-
Щёлкните правой клавишей мышки на кнопку «Пуск», и в открывшемся окне выберите «Диспетчер задач»;
Как восстановить файл MDF в SQL Server?
Здесь мы опишем два метода для подключения или восстановления базы данных MDF в SQL Server:
- Используя SQL Server Management Studio
- Используя T-SQL
Восстановление файла MDF в SQL Server без LDF с помощью SQL Server Managment Studio
Выполните все указанные шаги, чтобы успешно прикрепить файл .mdf в SQL Server.
SQL Server создаст файл LDF при прикреплении файла MDF.
Теперь вам нужно проверить базу данных в папке базы данных.
Прикрепите или восстановите файл MDF в SQL Server с помощью сценария T-SQL
CREATE DATABASE testdatabase ON
(FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL12.MSSQLSERVERMSSQLDATAtestdatabase.mdf')
FOR ATTACH_REBUILD_LOG
GO
После восстановления файла MDF с помощью программного обеспечения вы можете подключить MDF в SQL Server. Это программное обеспечение позволяет пользователю восстанавливать удаленные объекты базы данных SQL, а также удаленные записи таблицы SQL. Пользователь может легко восстановить как первичные, так и вторичные файлы с помощью этого программного обеспечения. Кроме того, это программное обеспечение поддерживает Microsoft SQL Server 2019/2017/2016/2014/2012 и более раннюю версию.
Выполните указанные ниже шаги, чтобы восстановить базу данных только из файла MDF.
2. Щелкните на Открыть и просмотреть файл MDF из вашей системы. Далее Выберите Версия SQL Server и Расширенный режим сканирования. (Пользователь также может проверить pпросмотреть удаленный объектs вариант.)
3. Предварительный просмотр объектов базы данных SQL SQL Стол, хранимая процедура, функции, взгляды, индексы и т.д. (Это программное обеспечение показывает удаленные записи таблицы SQL красным цветом.)
4. Щелкните на Кнопка экспорта и заполнить требуемые детали для восстановления базы данных из файла MDF.
Вывод
Почему запущенная операция не может быть завершена
Обычно ошибка возникает в ситуации, когда какое-либо приложение (в том числе и системное) использует запрашиваемый пользователем файл или папку в эксклюзивном режиме, блокирующем какие-либо IO-операции по удалению, переименованию или переносу данного файла (папки).
Операции с требуемым файлом могут быть заблокированы как каким-либо системным процессом или инструментом (включая известный «TrustedInstaller»), так и установленной на ПК извне программой, включая вирусный софт.
Часто в появившемся уведомлении о том, что файл открыт в иной программе и операция не будет завершена указано, какой именно программой (процессом) занят нужный файл. Если же ссылки на такую программу отсутствуют, тогда вполне вероятно, что в блокировании нужного файла задействован какой-либо системный софт.
Существует множество способов, позволяющих избавиться от ошибки «Операция не может быть завершена поскольку этот файл открыт в другой программе». При этом реально действуют из них лишь несколько, которые мы и опишем ниже.
Перезагрузите ваш ПК в безопасном режиме
Используйте специальный софт
Другим способом решить возникшую ошибку является задействование специального софта, деблокирующего доступ к нужному файлу. Из таких программ можно отметить популярные «Unlocker», «IOBit Unlocker», или «Any File Remover».
Обычно после их инсталляции они встраиваются в функционал Проводника Виндовс. Для их активации необходимо навести курсор на заблокированный файл, нажать ПКМ, и среди открывшегося меню выбрать указанную программу (например, Unlocker).
Останется отметить в данной программе нужную опцию (например, «Разблокировать» или «Удалить»), после чего проблемный файл будет деблокирован.
При установке подобных программ помните, что помимо основной программы инсталлятор может попытаться установить дополнительный софт (бандлинг). Поэтому рекомендую отказаться от автоматической установки, и лично проконтролировать весь процесс установки, сняв галочки с опций установки нежелательных программ.
Задействуйте монитор ресурсов
Также вы можете прекратить действие программы (процесса) блокирующей доступ к нужному файлу. Это можно сделать как с помощью вызова Диспетчера задач (нажмите на Win+R, и там введите taskmgr. Перейдите на вкладку «Процессы» и завершите работу процесса данной программы), так и с помощью монитора ресурсов.
В последнем случае будет нужно нажать на кнопку «Пуск», в строке поиска написать «Монитор ресурсов», и кликнуть сверху на найденное совпадение. После запуска монитора ресурсов переходим на вкладку «ЦП», и в поле поиска справа вводим название заблокированного файла. Система найдёт указанный файл, кликаем на нём ПКМ, и выбираем «Завершить процесс». Затем будет необходимо удалить указанный файл.
Воспользуйтесь возможностями архиваторов
Довольно действенным решением является использование функционала архиваторов (уровня 7zip или WinRAR) для удаления или переименования нужных нам файлов. Достаточно запустить тот же 7zip, войти в его помощью в папку с файлом, и прямо в архиваторе переименовать или удалить нужный файл. Обычно это помогает эффективно решить проблему операция не может быть завершена.
Удалите файлы-миниатюры
Как было описано выше, наличие в удаляемой папке файлов с расширением .db может препятствовать её удалению. В этом случае необходимо закрыть проблемную папку, от админа запустить командную строку, в ней перейти на диск с проблемным файлом (к примеру, если это С, то набрать в строке С:).
Затем в командной строке наберите:
del /ash /s thumbs.db
И нажмите ввод. После завершения процедуры удаления данных файлов попробуйте удалить нужную директорию.
Проверьте систему на вируса
Ну и, конечно же, не помешает проверить PC на наличие зловредов, способных блокировать доступ к нужным им файлам. В этом поможет онлайн проверка компьютера на вирусы: 7 лучших антивирусов.
Заключение
Читайте также: