我需要使用新名称创建数据库副本。在我的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'。使用WITH MOVE标识文件的有效位置 在规划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);
}
你有什么想法吗?