Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何查询SQL Server备份文件_Sql Server - Fatal编程技术网

Sql server 如何查询SQL Server备份文件

Sql server 如何查询SQL Server备份文件,sql-server,Sql Server,我使用的是SQL Server 2008 R2,我有一个备份文件B:\backups\full_backup.bak,但我不知道该文件有哪些备份,或者每个备份都有哪些文件。如何编写查询以从此备份文件还原数据库 我试图恢复数据库,但它抛出了一个错误 Msg 3156,第16级,第4状态,第1行 无法将文件“Application\u Primary”还原为“D:\Program Files\Microsoft SQL” 服务器\MSSQL.1\MSSQL\Data\Application\u Pr

我使用的是SQL Server 2008 R2,我有一个备份文件
B:\backups\full_backup.bak
,但我不知道该文件有哪些备份,或者每个备份都有哪些文件。如何编写查询以从此备份文件还原数据库

我试图恢复数据库,但它抛出了一个错误

Msg 3156,第16级,第4状态,第1行
无法将文件“Application\u Primary”还原为“D:\Program Files\Microsoft SQL” 服务器\MSSQL.1\MSSQL\Data\Application\u Primary.mdf'。与移动到一起使用 标识文件的有效位置

Msg 3156,第16级,第4状态,第1行
无法将文件“Application\u FTS”还原为“D:\Program Files\Microsoft SQL” 服务器\MSSQL.1\MSSQL\Data\Application\u FTS.mdf'。与移动到一起使用 标识文件的有效位置

Msg 3156,第16级,第4状态,第1行
无法将文件“应用程序日志”还原为“L:\Program Files\Microsoft SQL” 服务器\MSSQL.1\MSSQL\Data\Application\u Log.ldf'。与移动到一起使用 标识文件的有效位置

Msg 3119,第16级,状态1,第1行
在规划RESTORE语句时发现了问题。以前的消息提供了详细信息

Msg 3013,第16级,状态1,第1行
还原数据库正在异常终止

代码:


在我看来,您正在尝试还原一个备份,该备份包含来自另一台服务器的数据库备份,该服务器存储了数据文件(.mdf,ldf)的某个路径

您需要使用
MOVE
子句恢复数据库。只有
RESTORE
命令将尝试将数据库还原到执行此备份的数据库的路径

检查备份文件中有哪些备份

USE master;
GO

RESTORE HEADERONLY 
FROM DISK = N'B:\backups\full_backup.bak'
GO
USE master;
GO

RESTORE FILELISTONLY 
FROM DISK = N'B:\backups\full_backup.bak'
 WITH FILE = 1    --<-- Position of backup in the backup file 
GO
USE master;
GO

RESTORE DATABASE [Application_DB]
 FROM DISK = N'B:\backups\full_backup.bak'
WITH FILE = 1             --<-- position of database backup in the backup file 
,MOVE N'Application_Primary' TO N'D:\<some valid path>\Application_Primary.mdf'
,MOVE N'Application_FTS'     TO N'D:\<some valid path>\Application_FTS.ndf'
,MOVE N'Application_Logy'    TO N'D:\<some valid path>\Application_Log.ldf'
,RECOVERY;
这将返回此备份文件保存的备份。您需要确保备份文件位于什么位置

检查备份文件中有哪些文件

USE master;
GO

RESTORE HEADERONLY 
FROM DISK = N'B:\backups\full_backup.bak'
GO
USE master;
GO

RESTORE FILELISTONLY 
FROM DISK = N'B:\backups\full_backup.bak'
 WITH FILE = 1    --<-- Position of backup in the backup file 
GO
USE master;
GO

RESTORE DATABASE [Application_DB]
 FROM DISK = N'B:\backups\full_backup.bak'
WITH FILE = 1             --<-- position of database backup in the backup file 
,MOVE N'Application_Primary' TO N'D:\<some valid path>\Application_Primary.mdf'
,MOVE N'Application_FTS'     TO N'D:\<some valid path>\Application_FTS.ndf'
,MOVE N'Application_Logy'    TO N'D:\<some valid path>\Application_Log.ldf'
,RECOVERY;

转到

您可以直接还原文件的,以查看它包含哪些备份:

DECLARE @HeaderInfo table
  (
        BackupName  nvarchar(128),
        BackupDescription  nvarchar(255) ,
        BackupType  smallint ,
        ExpirationDate  datetime ,
        Compressed  bit ,
        Position  smallint ,
        DeviceType  tinyint ,
        UserName  nvarchar(128) ,
        ServerName  nvarchar(128) ,
        DatabaseName  nvarchar(128) ,
        DatabaseVersion  int ,
        DatabaseCreationDate  datetime ,
        BackupSize  numeric(20,0) ,
        FirstLSN  numeric(25,0) ,
        LastLSN  numeric(25,0) ,
        CheckpointLSN  numeric(25,0) ,
        DatabaseBackupLSN  numeric(25,0) ,
        BackupStartDate  datetime ,
        BackupFinishDate  datetime ,
        SortOrder  smallint ,
        CodePage  smallint ,
        UnicodeLocaleId  int ,
        UnicodeComparisonStyle  int ,
        CompatibilityLevel  tinyint ,
        SoftwareVendorId  int ,
        SoftwareVersionMajor  int ,
        SoftwareVersionMinor  int ,
        SoftwareVersionBuild  int ,
        MachineName  nvarchar(128) ,
        Flags  int ,
        BindingID  uniqueidentifier ,
        RecoveryForkID  uniqueidentifier ,
        Collation  nvarchar(128) ,
        FamilyGUID  uniqueidentifier ,
        HasBulkLoggedData  bit ,
        IsSnapshot  bit ,
        IsReadOnly  bit ,
        IsSingleUser  bit ,
        HasBackupChecksums  bit ,
        IsDamaged  bit ,
        BeginsLogChain  bit ,
        HasIncompleteMetaData  bit ,
        IsForceOffline  bit ,
        IsCopyOnly  bit ,
        FirstRecoveryForkID  uniqueidentifier ,
        ForkPointLSN  numeric(25,0) NULL,
        RecoveryModel  nvarchar(60) ,
        DifferentialBaseLSN  numeric(25,0) NULL,
        DifferentialBaseGUID  uniqueidentifier ,
        BackupTypeDescription  nvarchar(60) ,
        BackupSetGUID  uniqueidentifier NULL,
        CompressedBackupSize  numeric(20,0)
  )


 INSERT INTO @HeaderInfo EXEC('RESTORE HEADERONLY 
 FROM DISK = N''B:\backups\full_backup.bak''
 WITH NOUNLOAD')

 SELECT * FROM @HeaderInfo
如果出现错误:MSSQLServer将在已备份的主数据库文件路径中创建数据库物理文件,除非您使用
move
命令为数据库文件指定新路径:

RESTORE DATABASE Application
   FROM DISK=N'B:\backups\full_backup.bak'
   WITH FILE 1,--use currect file number
   MOVE 'Application_Primary' TO 'C:\Application_Primary.mdf', 
   MOVE 'Application_FTS' TO 'C:\Application_FTS.mdf', 
   MOVE 'Application_Log' TO 'C:\Application_Log.ldf'

可能使用SQL Management Studio来还原它,而不是使用SQL命令。声明此表变量并从中进行选择,这不是有点过分:)可能他想保存备份文件的信息,或者显示来自其他应用程序的信息,还要注意,如果他想存储备份文件的信息或显示来自其他应用程序的信息,该怎么办?