sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan indsætter du oplysningerne fra RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY i en midlertidig tabel

Personligt er dette et scenarie, hvor jeg ville undgå ren TSQL og bruge et eksternt script eller program. Afhængigt af hvad du forsøger at gøre, kan du opleve, at brug af Smo fra Powershell eller .NET fuldstændig undgår behovet for TSQL alligevel. Jeg siger det, fordi arbejde med sikkerhedskopier altid ser ud til at føre til arbejde med filer uden for databasen, og så er TSQL bare for akavet.

Når alt det er sagt, hvis du er sikker på, at du skal gøre dette i TSQL, så kan du gøre noget som dette:

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

Eller for at være lidt pænere:

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

Du skal dog stadig oprette bordet først, hvilket ikke er en big deal og giver mening alligevel, hvis du gør dette meget. Books Online viser datatypen for hver kolonne i resultatsættet, men i det mindste for mig (SQL2008 SP1) matcher dokumentationen ikke det faktiske resultatsæt, så du skal muligvis justere det.



  1. SQL Query udføres langsomt i C#, men hurtigt i Toad

  2. ordre af rand() får problemer for store indlæg

  3. sum højeste forekomst i træk

  4. Entity framework forbindelse med oracle database