個人的には、これは純粋な TSQL を避けて外部スクリプトまたはプログラムを使用するシナリオの 1 つです。何をしようとしているのかによっては、Powershell または .NET から Smo を使用すると、TSQL の必要性が完全に回避されることがあります。私がそう言うのは、バックアップを操作すると常にデータベース外のファイルを操作することになり、TSQL は扱いにくいからです。
以上のことをすべて述べた後、TSQL でこれを行う必要があると確信している場合は、次のようにすることができます。
insert into dbo.BackupFiles (LogicalName, PhysicalName, ...) exec('RESTORE FILELISTONLY FROM DISK = ''c:\Test\Test.bak''')
プレ>またはもう少し良くするために:
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
プレ>ただし、最初にテーブルを作成する必要がありますが、これは大したことではなく、これを頻繁に行う場合でも意味があります。オンライン ブックには、結果セットの各列のデータ型がリストされていますが、少なくとも私 (SQL2008 SP1) にとっては、ドキュメントは実際の結果セットと一致しないため、微調整が必要になる場合があります。