Osobiście jest to jeden scenariusz, w którym unikałbym czystego TSQL i używałbym zewnętrznego skryptu lub programu. W zależności od tego, co próbujesz zrobić, może się okazać, że użycie Smo z Powershell lub .NET i tak całkowicie eliminuje potrzebę korzystania z TSQL. Mówię to, ponieważ praca z kopiami zapasowymi zawsze wydaje się prowadzić do pracy z plikami spoza bazy danych, a TSQL jest po prostu zbyt niewygodny.
Powiedziawszy to wszystko, jeśli jesteś pewien, że musisz to zrobić w TSQL, możesz zrobić coś takiego:
insert into dbo.BackupFiles (LogicalName, PhysicalName, ...)
exec('RESTORE FILELISTONLY FROM DISK = ''c:\Test\Test.bak''')
Albo być trochę milszym:
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
Jednak nadal musiałbyś najpierw utworzyć stół, co nie jest wielkim problemem i i tak ma sens, jeśli robisz to dużo. Books Online wymienia typ danych dla każdej kolumny w zestawie wyników, ale przynajmniej dla mnie (SQL2008 SP1) dokumentacja nie jest zgodna z rzeczywistym zestawem wyników, więc może być konieczne dostosowanie go.