Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment insérer dans une table temporaire les informations données par RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY

Personnellement, c'est un scénario où j'éviterais le TSQL pur et utiliserais un script ou un programme externe. Selon ce que vous essayez de faire, vous constaterez peut-être que l'utilisation de Smo à partir de Powershell ou de .NET évite complètement le besoin de TSQL de toute façon. Je dis cela parce que travailler avec des sauvegardes semble toujours conduire à travailler avec des fichiers en dehors de la base de données, et alors TSQL est tout simplement trop gênant.

Cela dit, si vous êtes sûr de devoir le faire dans TSQL, vous pouvez faire quelque chose comme ceci :

insert into dbo.BackupFiles (LogicalName, PhysicalName, ...)
exec('RESTORE FILELISTONLY FROM DISK = ''c:\Test\Test.bak''')

Ou pour être un peu plus gentil :

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

Cependant, vous devrez toujours créer la table en premier, ce qui n'est pas grave et a du sens de toute façon si vous le faites souvent. La documentation en ligne répertorie le type de données pour chaque colonne du jeu de résultats, mais au moins pour moi (SQL2008 SP1), la documentation ne correspond pas au jeu de résultats réel, vous devrez donc peut-être le modifier.