sql >> Databáze >  >> RDS >> Sqlserver

Jak vložit do dočasné tabulky informace poskytnuté pomocí RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY

Osobně je to jeden scénář, kdy bych se vyhnul čistému TSQL a použil externí skript nebo program. V závislosti na tom, co se snažíte udělat, možná zjistíte, že používání Smo od Powershell nebo .NET se tak jako tak úplně vyhne potřebě TSQL. Říkám to proto, že práce se zálohami vždy vede k práci se soubory mimo databázi, a pak je TSQL příliš nepohodlné.

Po tom všem, pokud jste si jisti, že to musíte udělat v TSQL, můžete udělat něco takového:

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

Nebo být o něco hezčí:

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

Stále byste však museli nejprve vytvořit tabulku, což není velký problém a dává to smysl, pokud to děláte hodně. Books Online uvádí datový typ pro každý sloupec ve výsledkové sadě, ale alespoň pro mě (SQL2008 SP1) dokumentace neodpovídá skutečné výsledkové sadě, takže ji možná budete muset upravit.



  1. Před vytvořením dočasné tabulky zkontrolujte, zda existuje dočasná tabulka, a odstraňte, pokud existuje

  2. Nahrání obrázku do databáze MySQL pomocí objektu Blob

  3. Jak získat čas z formátu DateTime v SQL?

  4. SSH tunel z Pythonu se automaticky zavírá