Не удается скопировать файл «xxx.mdf» в Visual Studio 2010

#c# #visual-studio-2010

#c# #visual-studio-2010

Вопрос:

У меня есть проект в Visual Studio 2010 с базой данных в sql 2008 R2..

Я конвертирую этот проект с помощью crystal report. Но когда я хочу запустить этот проект, произошли эти ошибки.

 Error   13  Unable to copy file "XXX.mdf" to "binx86ReleaseXX.mdf". The process cannot access the file 'XX.mdf' because it is being used by another process



Error   25  Unable to copy file "C:madrasemadraseentekhab_vahedentekhab_vahed_log.ldf" to "binx86Releaseentekhab_vahed_log.ldf". The process cannot access the file 'C:madrasemadraseentekhab_vahedentekhab_vahed_log.ldf' because it is being used by another process.

Error   12  Could not copy "C:madrasemadraseentekhab_vahedentekhab_vahed.mdf" to "binx86Releaseentekhab_vahed.mdf". Exceeded retry count of 10. Failed.  entekhab_vahed
  

я не знаю, как это исправить.

Комментарии:

1. попробуйте перезапустить службу sql server.

2. как я могу перезапустить свою службу sql Server?

3. нажмите Windows-r и введите там services.msc и найдите там SQL Server (MSSQLSERVER), а затем перезапустите его.

4. не работает… снова произошли ошибки: (

Ответ №1:

  1. Убедитесь, что ваша база данных не открыта Visual Studio. Если это так, отключите его с помощью проводника сервера в Visual Studio.
  2. Убедитесь, что вы закрыли клиент. Не должно быть активного клиента, использующего ваш проект
  3. Если это все еще происходит, попробуйте запустить Visual Studio «От имени администратора».

Файл SQL Server .mdf, используемый другим процессом

Ответ №2:

Вероятно, вы уже решили эту проблему по дате, но это мой ответ для будущих поисков:

Обычно ошибка сообщает вам PID процесса, который использует файл, вы можете завершить процесс, но не рекомендуется, возможно, есть другие вещи, использующие его.

Это происходит потому, что вы не закрыли соединение после завершения вашего кода.

Всегда используйте

 try 
{
    //do your thing
} 
catch (Exception e) 
{
    //close connection
}
  

Попробуйте использовать

 using(...context) 
{
    //do your thing
}
  

При этом соединение будет закрыто в конце стека.

Вы также можете реализовать IDisposable или добавить «Время ожидания подключения = 10» в строку подключения.