我正在尝试为我的数据库恢复SQL Server备份文件,但它发出如下错误:
备份集包含现有
以外的数据库的备份
我在SQL Server 2008中的数据库和备份文件是在2005年。
可能是什么问题?
答案 0 :(得分:721)
我也遇到过这个问题。
解决方案:
.bak
文件还原到它。答案 1 :(得分:149)
答案 2 :(得分:83)
首先创建一个同名的空白数据库。然后去恢复选项
在左侧窗格的选项下,不要忘记选择
那是
答案 3 :(得分:47)
答案 4 :(得分:26)
USE [master];
GO
CREATE DATABASE db;
GO
CREATE DATABASE db2;
GO
BACKUP DATABASE db TO DISK = 'c:\temp\db.bak' WITH INIT, COMPRESSION;
GO
RESTORE DATABASE db2
FROM DISK = 'c:\temp\db.bak'
WITH REPLACE,
MOVE 'db' TO 'c:\temp\db2.mdf',
MOVE 'db_log' TO 'c:\temp\db2.ldf';
答案 5 :(得分:21)
这是因为原始.mdf
中的.ldf
和Db
个文件位于c:\programFile\....
,而且此信息会保存在备份中!
如果在安装在c:\program Files (x86)\ ....
上的其他SQL Server上创建相同的数据库,则无法像往常一样进行恢复。您需要重新定位.mdf
和.ldf
文件的路径。
因此:
在新服务器上创建一个空数据库
右键单击空Db>任务>恢复>数据库>点击设备选择您的.bak
文件>选择Db以恢复到
完成!
希望它有所帮助!
答案 6 :(得分:17)
简单的3个步骤:
1-右键单击数据库>任务>恢复>数据库
2-选中Device
作为来源,找到 .bak 文件
3-在左侧窗格中单击options
并:
答案 7 :(得分:14)
我今天遇到了类似的问题。尝试了所有上述解决方案,但没有奏效。所以在这里发布我的解决方案。
不要忘记在恢复前取消选中Tail-long Backup
希望它也能帮助别人!
答案 8 :(得分:13)
这总是由于版本不兼容而导致。 请按照以下步骤解决:
第1步:使用您的首选名称创建一个数据库。 (在我们的情况下是AdventureWorks)
第2步:书写并单击数据库,然后单击任务>>还原>>数据库...
步骤3:在还原屏幕上,转到“选项”的第三选择。现在,选中“覆盖现有数据库(替换)”复选框
第4步:单击“确定”。它应该可以成功还原数据库。
注意:使用REPLACE还原数据库时,它将覆盖旧数据库。
答案 9 :(得分:9)
如果您使用脚本方法并且有关于LDF和MDF文件的错误,您可以先查询备份文件以获取逻辑名称(和其他详细信息)备份集中的文件,使用以下内容:
-- Queries the backup file for the file list in backup set, where Type denotes
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO
您将获得类似于以下内容的结果:
然后您可以在查询中使用这些逻辑名称:
-- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
RESTORE DATABASE DB
FROM DISK='C:\Temp\DB_backup.bak'
WITH REPLACE,
MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.mdf'; -- "DB_log" is LDF logical name from query above
有关RESTORE FILELISTONLY
can be found from the SQL Server docs的更多信息。
答案 10 :(得分:8)
同样重要的是确保您的数据库名称与您尝试还原的备份中的数据库名称匹配。如果不匹配,您将收到相同的错误。
答案 11 :(得分:7)
system.data.sqlclient.sqlerror:备份集保存除现有“ Dbname”数据库以外的数据库的备份
我偶然发现了灵魂
不要创建具有相同名称或不同数据库名称的数据库!重要。
右键单击数据库|任务>还原>数据库
在“还原源”下,选择“来自设备”
选择.bak文件
在下面的网格视图中选中数据库的复选框
到数据库:“您可以在此处键入新数据库名称”(Ex:DemoDB)
不要从DropDownlist中选择现有数据库
现在单击“确定”按钮,它将创建一个新的Databse并从.bak文件中恢复所有数据。
you can get help from this link even
希望这将有助于您解决问题...
答案 12 :(得分:6)
在执行任何其他操作之前,请确认您的备份是完整备份还是差异备份。如果您尝试使用差异备份创建新数据库,则无论您执行什么操作,都会遇到错误。
答案 13 :(得分:3)
与我同样的问题。我的解决方案是:
答案 14 :(得分:1)
你们中的一些人非常复杂。我发现这非常简单。
1)创建一个与.bak文件数据库名称同名的数据库!重要
2)右键单击数据库|任务>恢复>数据库
3)在“恢复源”下选择“从设备”
4)选择.bak文件
5)在下面的gridview中选中数据库的复选框
6)在右侧的“选择页面”下选择“选项”
7)选中标记为“保留复制设置(WITH KEEP_REPLICATION)
的复选框现在返回“常规”页面并单击“确定”以恢复数据库......就是这样。
答案 15 :(得分:1)
我使用生成脚本通过备用方式完成工作。这对我有用,因为Backup-Restore因同样的错误无法解决问题。
答案 16 :(得分:1)
在选项中,更改"还原为"文件名到新数据库mdf和ldf。它引用了源数据库.mdf和.ldf文件。
答案 17 :(得分:1)
我必须在我的本地创建一个新的数据库用于测试&我从我的产品中得到了支持。我首先创建了db并尝试在新db上运行BAK,这对我产生了这个错误。我删除了数据库并在恢复屏幕本身中获取新的数据库名称时将其恢复。在还原时自动创建数据库。
答案 18 :(得分:1)
我只是想解决这个问题。
我尝试了从管理员运行到此处和其他地方的建议;最后为我解决的是检查Files属性选项卡中的“重定位文件”选项。
希望这有助于其他人。
答案 19 :(得分:0)
我确定此问题与文件和文件夹权限有关。
答案 20 :(得分:0)
您可以恢复到新的数据库,验证文件名语法,它将在日志文件中,对于新的SQL版本,将是“_log”后缀
广告检查覆盖选项标签
中的现有数据库标记的Fabio
答案 21 :(得分:0)
我试图将生产数据库还原到同一服务器上的临时数据库。
在我的案例中唯一有用的是恢复到新的空白数据库。这很好用,没有尝试覆盖生产文件(如果你只是将生产备份文件恢复到现有的临时数据库,它就会这样做)。然后删除旧数据库并重命名 - 文件将保留新的临时名称,但在我的情况下,这很好。
(或者先删除登台数据库,然后恢复到与登台数据库同名的新数据库)
答案 22 :(得分:0)
而不是单击还原数据库,而不是单击还原文件和文件组。
在我的sql服务器上有效
答案 23 :(得分:0)
这有助于我从系统驱动器导入备份文件