sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo insertar en una tabla temporal la información proporcionada por RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY

Personalmente, este es un escenario en el que evitaría TSQL puro y usaría un script o programa externo. Dependiendo de lo que intente hacer, es posible que el uso de Smo de Powershell o .NET evite por completo la necesidad de TSQL de todos modos. Lo digo porque trabajar con copias de seguridad siempre parece conducir a trabajar con archivos fuera de la base de datos, y luego TSQL es demasiado incómodo.

Habiendo dicho todo eso, si está seguro de que debe hacer esto en TSQL, entonces puede hacer algo como esto:

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

O para ser un poco más agradable:

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

Sin embargo, aún tendría que crear la tabla primero, lo cual no es gran cosa y tiene sentido de todos modos si hace esto con frecuencia. Books Online enumera el tipo de datos para cada columna en el conjunto de resultados, pero al menos para mí (SQL2008 SP1) la documentación no coincide con el conjunto de resultados real, por lo que es posible que deba modificarlo.