我写了这段代码 但它的生成错误
请帮助
System.IO.File.Copy("JDB.mdf", "d:\\JDB.mdf", true);
System.IO.File.Copy("JDb_log.ldf", "d:\\JDb_log.ldf", true);
错误是
该进程无法访问文件'JDB.mdf',因为它正由另一个进程使用。
请帮帮我
答案 0 :(得分:3)
查看What happens during a live SQL Server backup?
如果您仍想备份或复制ldf mdf文件,则可以执行以下步骤: 1.分离数据库
USE MASTER;
GO
-- Take database in single user mode -- if you are facing errors
-- This may terminate your active transactions for database
ALTER DATABASE DatabaseName
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
-- Detach DB
EXEC MASTER.dbo.sp_detach_db @dbname = N'DatabaseName'
打开Windows资源管理器,转到ldf和mdf文件所在的文件夹,然后手动复制该文件。
重新连接数据库:
USE [master] GO CREATE DATABASE [DatabaseName] ON ( FILENAME = N’C:\Data\DataBase_Data.mdf’ ), ( FILENAME = N’C:\Data\Database_Log.ldf’ ) FOR ATTACH GO IF EXISTS ( SELECT name FROM master.sys.databases sd WHERE name = N’DataBaseName’ AND SUSER_SNAME(sd.owner_sid) = SUSER_SNAME() ) EXEC [AdventureWorks].dbo.sp_changedbowner @loginame=N’sa’,@map=false
答案 1 :(得分:1)
下载Process Explorer并运行该程序。
选项1:
单击“查找”菜单,然后选择“查找句柄”或“DLL ...”
输入文件名(在您的情况下为JDB.mdf)
输入搜索词组后,单击“搜索”按钮
一旦你知道文件锁定了你的进程,就需要关闭该进程(通过关闭该程序)。另一个选择是在进程资源管理器中使用KILL来终止该进程。
选项2:
从错误消息中,.mdf文件已附加到SQL Server的实例。如果您有多个实例正在运行,请确保它与任何其他实例分离。