1

我需要使用新名称创建数据库副本。在我的asp.net mvc项目中,我使用smo创建数据库备份而不是尝试进行还原。我喜欢这样:http ://www.mssqltips.com/sqlservertip/1849/backup-and-restore-sql-server-databases-programmatically-with-smo/ 。

但我得到一个例外:

无法覆盖文件“C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB.mdf”。数据库“LocalClientTrakDB”正在使用它。
文件“LocalClientTrakDB”无法恢复到“C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB.mdf”。使用 WITH MOVE 标识文件的有效位置。
无法覆盖文件“C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB_log.ldf”。数据库“LocalClientTrakDB”正在使用它。
文件“LocalClientTrakDB_log”无法恢复到“C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB_log.ldf”。
在规划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
RESTORE DATABASE 异常终止。

我恢复数据库的代码:

static void DatabaseRestore(Server myServer, Database myDatabase)
{
    string newdbfilename = myDatabase.Name + "New";

    Restore restoreDB = new Restore();
    restoreDB.Database = newdbfilename;

    restoreDB.Action = RestoreActionType.Database;
    restoreDB.Devices.AddDevice(@"C:\temp\TestFullDB.bak", DeviceType.File);

    restoreDB.ReplaceDatabase = true;
    restoreDB.NoRecovery = false;

    restoreDB.SqlRestore(myServer);
}

你有什么想法吗?

4

0 回答 0