Cá nhân tôi, đây là một tình huống mà tôi sẽ tránh TSQL thuần túy và sử dụng một tập lệnh hoặc chương trình bên ngoài. Tùy thuộc vào những gì bạn đang cố gắng làm, bạn có thể thấy rằng việc sử dụng Smo từ Powershell hoặc .NET hoàn toàn tránh được sự cần thiết của TSQL. Tôi nói rằng vì làm việc với các bản sao lưu dường như luôn dẫn đến việc làm việc với các tệp bên ngoài cơ sở dữ liệu, và sau đó TSQL thật quá khó xử.
Đã nói tất cả những điều đó, nếu bạn chắc chắn rằng bạn phải làm điều này trong TSQL, thì bạn có thể làm điều gì đó như sau:
insert into dbo.BackupFiles (LogicalName, PhysicalName, ...)
exec('RESTORE FILELISTONLY FROM DISK = ''c:\Test\Test.bak''')
Hoặc đẹp hơn một chút:
declare @Command nvarchar(4000)
-- you can build the command string some other way, of course
set @Command = N'RESTORE FILELISTONLY FROM DISK = ''c:\Test\Test.bak'''
insert into dbo.BackupFiles (LogicalName, PhysicalName, ...)
exec sp_executesql @Command
Tuy nhiên, bạn vẫn phải tạo bảng trước, điều này không có gì to tát và dù sao cũng có ý nghĩa nếu bạn làm điều này nhiều. Books Online liệt kê kiểu dữ liệu cho mỗi cột trong tập kết quả, nhưng ít nhất đối với tôi (SQL2008 SP1), tài liệu này không khớp với tập kết quả thực, vì vậy bạn có thể cần phải chỉnh sửa nó.