- 该文件正被某个进程使用。我相信数据库仍然附加到 Sql Server。
- 使用 Sys Internal 的 Process Explorer 工具找出使用该文件的程序。
- 为什么不使用 SQL 备份工具来备份数据库?
查看实时 SQL Server 备份期间会发生什么?
如果您仍想备份或复制 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
- 如果您想以编程方式执行此操作,则可以使用 ADO.NET 执行步骤 1、2、3 中给出的命令,并使用 c# 文件复制命令来复制文件。