Sql server 使用新数据库名称从bak文件还原数据库
我需要用新名称创建数据库副本。在我的Sql server 使用新数据库名称从bak文件还原数据库,sql-server,sql-server-2008,smo,Sql Server,Sql Server 2008,Smo,我需要用新名称创建数据库副本。在我的asp.netmvc项目中,我使用smo创建数据库备份,然后尝试进行恢复。我确实喜欢这个: 但我有一个例外: 无法覆盖文件“C:\Program Files\Microsoft SQL Server\MSSQLS10\U 50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB.mdf”。数据库“LocalClientTrakDB”正在使用它。 无法将文件“LocalClientTrakDB”还原为“C:\Program File
asp.netmvc
项目中,我使用smo
创建数据库备份,然后尝试进行恢复。我确实喜欢这个:
但我有一个例外:
无法覆盖文件“C:\Program Files\Microsoft SQL Server\MSSQLS10\U 50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB.mdf”。数据库“LocalClientTrakDB”正在使用它。无法将文件“LocalClientTrakDB”还原为“C:\Program Files\Microsoft SQL Server\MSSQLS10\U 50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB.mdf”。与MOVE一起使用可标识文件的有效位置。
无法覆盖文件“C:\Program Files\Microsoft SQL Server\MSSQLS10\U 50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB\u log.ldf”。数据库“LocalClientTrakDB”正在使用它。
无法将文件“LocalClientTrakDB_log”还原为“C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\LocalClientTrakDB_log.ldf”。与MOVE一起使用可标识文件的有效位置。
在规划RESTORE语句时发现了问题。以前的消息提供了详细信息。
还原数据库正在异常终止 还原数据库的我的代码:
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);
}
您知道吗?错误消息会告诉您问题所在(您无法覆盖现有数据库正在使用的文件)以及如何处理(使用
和MOVE
将恢复的文件放在其他位置)。那么您的困难到底是什么呢?如果我为数据库设置了新名称(具有此名称的数据库不存在),为什么会出现错误?您会出现错误,因为您只设置了一个逻辑数据库名称,但这不会影响物理文件的调用。因此,您需要同时执行这两项操作:定义一个新的逻辑数据库名称(您已经这样做了),还需要将文件移动到新位置/新名称。您的意思是我需要这样做:restoreDB.RelocateFiles.Add(new RelocateFile(…
?