Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como inserir em uma tabela temporária as informações fornecidas por RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY


Pessoalmente, este é um cenário em que eu evitaria TSQL puro e usaria um script ou programa externo. Dependendo do que você está tentando fazer, você pode descobrir que usar Smo do Powershell ou .NET evita completamente a necessidade de TSQL de qualquer maneira. Digo isso porque trabalhar com backups sempre parece levar a trabalhar com arquivos fora do banco de dados, e então o TSQL é muito estranho.

Dito tudo isso, se você tiver certeza de que deve fazer isso no TSQL, poderá fazer algo assim:
insert into dbo.BackupFiles (LogicalName, PhysicalName, ...)
exec('RESTORE FILELISTONLY FROM DISK = ''c:\Test\Test.bak''')

Ou para ser um pouco mais legal:
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

No entanto, você ainda teria que criar a tabela primeiro, o que não é grande coisa e faz sentido de qualquer maneira se você fizer muito isso. Os Manuais Online listam o tipo de dados para cada coluna no conjunto de resultados, mas pelo menos para mim (SQL2008 SP1) a documentação não corresponde ao conjunto de resultados real, portanto, talvez seja necessário ajustá-lo.