报错 tempdb..backupfile 无效
时间: 2023-07-04 08:22:44 浏览: 54
如果出现 `tempdb..backupfile` 无效的错误,可能是因为在当前数据库中找不到名为 `backupfile` 的表,你需要将表名修改为你自己创建的表名。
另外,要注意的是,`RESTORE FILELISTONLY` 命令会返回多行结果,因此在查询 LogicalName 时,需要使用 `SELECT TOP 1` 或者其他限制行数的方法,只获取第一行结果中的 LogicalName。具体可以参考下面的 SQL 示例代码:
```
DECLARE @LogicalName nvarchar(128)
CREATE TABLE #backupfile(
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
Type char(1),
FileGroupName nvarchar(128),
Size numeric(20,0),
MaxSize numeric(20,0),
FileId bigint,
CreateLSN numeric(25,0),
DropLSN numeric(25,0),
UniqueId uniqueidentifier,
ReadOnlyLSN numeric(25,0),
ReadWriteLSN numeric(25,0),
BackupSizeInBytes bigint,
SourceBlockSize int,
FileGroupId int,
LogGroupGUID uniqueidentifier,
DifferentialBaseLSN numeric(25,0),
DifferentialBaseGUID uniqueidentifier,
IsReadOnly bit,
IsPresent bit,
TDEThumbprint varbinary(32)
)
INSERT INTO #backupfile
EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backupfile.bak''')
SELECT TOP 1 @LogicalName = LogicalName FROM #backupfile WHERE Type = 'D'
DROP TABLE #backupfile
```
这段代码创建了一个临时表 `#backupfile`,然后使用 `EXEC` 执行 `RESTORE FILELISTONLY` 命令,将结果插入到临时表中。最后,查询临时表中 `Type='D'` 的第一行记录的 LogicalName 值,并将其赋值给变量 @LogicalName。注意,使用完临时表后,需要手动删除临时表。