我需要使用新名称创建数据库副本。在我的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);
}
你有什么想法吗?