小编典典

如何从备份文件中检索数据库的逻辑文件名

sql

我正在研究如何使用SQL脚本(T-SQL)还原数据库备份的步骤。步骤如下:

数据库YourDB具有完整备份YourBackUpFile.bak。可以使用以下两个步骤将其还原:

步骤1: 从备份中检索数据库的逻辑文件名。

RESTORE FILELISTONLY
FROM DISK = 'D:BackUpYourBackUpFile.bak'
GO

步骤2:LogicalName在接下来的步骤中,使用列中的值。

----Make Database to single user Mode
ALTER DATABASE YourDB
SET SINGLE_USER WITH
ROLLBACK IMMEDIATE

----Restore Database
RESTORE DATABASE YourDB
FROM DISK = 'D:BackUpYourBackUpFile.bak'
WITH MOVE 'YourMDFLogicalName' TO 'D:DataYourMDFFile.mdf',
MOVE 'YourLDFLogicalName' TO 'D:DataYourLDFFile.ldf'

我只是在如何获得YourMDFLogicalName和有问题YourLDFLogicalName。有人可以帮我吗?


阅读 233

收藏
2021-04-15

共1个答案

小编典典

DECLARE @Table TABLE (LogicalName varchar(128),[PhysicalName] varchar(128), [Type] varchar, [FileGroupName] varchar(128), [Size] varchar(128),
[MaxSize] varchar(128), [FileId]varchar(128), [CreateLSN]varchar(128), [DropLSN]varchar(128), [UniqueId]varchar(128), [ReadOnlyLSN]varchar(128), [ReadWriteLSN]varchar(128),
[BackupSizeInBytes]varchar(128), [SourceBlockSize]varchar(128), [FileGroupId]varchar(128), [LogGroupGUID]varchar(128), [DifferentialBaseLSN]varchar(128), [DifferentialBaseGUID]varchar(128), [IsReadOnly]varchar(128), [IsPresent]varchar(128), [TDEThumbprint]varchar(128)
)
DECLARE @Path varchar(1000)=’C:\SomePath\Base.bak’
DECLARE @LogicalNameData varchar(128),@LogicalNameLog varchar(128)
INSERT INTO @table
EXEC(‘
RESTORE FILELISTONLY
FROM DISK=’‘’ +@Path+ ‘’‘
‘)

   SET @LogicalNameData=(SELECT LogicalName FROM @Table WHERE Type='D')
   SET @LogicalNameLog=(SELECT LogicalName FROM @Table WHERE Type='L')

SELECT @LogicalNameData,@LogicalNameLog

更新

根据Microsoft网站

SQL Server文件有两个名称:

逻辑文件名

logical_file_name是用于在所有Transact-SQL语句中引用物理文件的名称。逻辑文件名必须符合SQL
Server标识符的规则,并且在数据库中的逻辑文件名之间必须唯一。

os_file_name

os_file_name是包含目录路径的物理文件的名称。它必须遵循操作系统文件名的规则。

2021-04-15