sql >> Database >  >> RDS >> Sqlserver

Hoe de informatie van RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY in een tijdelijke tabel in te voegen

Persoonlijk is dit een scenario waarin ik pure TSQL zou vermijden en een extern script of programma zou gebruiken. Afhankelijk van wat je probeert te doen, zul je merken dat het gebruik van Smo van Powershell of .NET sowieso de noodzaak van TSQL volledig vermijdt. Ik zeg dat omdat het werken met back-ups altijd lijkt te leiden tot het werken met bestanden buiten de database, en dan is TSQL gewoon te onhandig.

Dat gezegd hebbende, als je zeker weet dat je dit in TSQL moet doen, dan kun je zoiets als dit doen:

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

Of om wat aardiger te zijn:

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

Je zou echter nog steeds eerst de tabel moeten maken, wat niet erg is en hoe dan ook logisch is als je dit veel doet. Books Online vermeldt het gegevenstype voor elke kolom in de resultatenset, maar in ieder geval voor mij (SQL2008 SP1) komt de documentatie niet overeen met de werkelijke resultatenset, dus u moet deze mogelijk aanpassen.



  1. Heb ik een php mysql-verbinding nodig in elke functie die database gebruikt?

  2. SQL Server versus NoSQL

  3. Reguliere expressie voor het valideren van de SQL Server-tabelnaam

  4. fouten weergeven als mysql_query niet succesvol is