Я использую C#, и у меня есть небольшая база данных SQL Server, которую мне нужно скопировать в папку C:\databases\
, имя метода - CreateCopy
.Как скопировать файл mdf в папку с C#
Но в File.Copy строке появляется сообщение об ошибке: "The Process cannot Access the File, because it is being use by another Process"
Я читал, что File.Copy можно выполнять только после того, как закрыть SqlServer вниз или Отделить эту базу данных, создайте копию и поверните SqlServer снова. Но как это сделать с помощью кода?
Это метод, который я пытался использовать:
public static void CreateCopy()
{
try
{
DateTime date = DateTime.Now;
SqlConnection connection = new SqlConnection(MDF_CONNECTION_STRING);
String dbpath = String.Format(@"C:\databases\{0:yyyyMMdd}.mdf", Cash, date);
File.Copy(@"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\database.mdf", dbpath);
String lgpath = String.Format(@"C:\databases\{0:yyyyMMdd}_log.ldf", Cash, date);
File.Copy(@"C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_log.ldf", lgpath);
}
catch(Exception e)
{
throw new ApplicationException("Error", e);
}
}
Заранее спасибо!
INFO Это не дубликат here, потому что мне не нужно делать создать файл безнал, мне нужно архива этой базы данных. Мне нужно просто скопировать эти два файла (.mdf и .ldf) в папку. И что ответы не помогли мне
Возможный дубликат [Копировать файлы SQL Server MDF и LDF во время использования сервера] (http://stackoverflow.com/questions/8681009/copy-sql-server-mdf-and-ldf-files-while-server -использование) – Mate
@Mate не является дубликатом, я объяснил также причину – puti26
Просто взять bkp не обязательно, остановите службу. В этом вопросе объясняется, как остановить и запустить службу ... прочитайте все ответы – Mate