我正在研究如何使用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'
数据库YourDB具有完整备份YourBackUpFile.bak。可以使用以下两个步骤将其还原:
YourDB
YourBackUpFile.bak
步骤1: 从备份中检索数据库的逻辑文件名。
RESTORE FILELISTONLY FROM DISK = 'D:BackUpYourBackUpFile.bak' GO
步骤2:LogicalName在接下来的步骤中,使用列中的值。
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。有人可以帮我吗?
YourMDFLogicalName
YourLDFLogicalName
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是包含目录路径的物理文件的名称。它必须遵循操作系统文件名的规则。
SQL Server文件有两个名称:
逻辑文件名
logical_file_name是用于在所有Transact-SQL语句中引用物理文件的名称。逻辑文件名必须符合SQL Server标识符的规则,并且在数据库中的逻辑文件名之间必须唯一。
os_file_name
os_file_name是包含目录路径的物理文件的名称。它必须遵循操作系统文件名的规则。