sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man infogar informationen som ges av RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY i en temporär tabell

Personligen är detta ett scenario där jag skulle undvika ren TSQL och använda ett externt skript eller program. Beroende på vad du försöker göra, kanske du upptäcker att användningen av Smo från Powershell eller .NET helt undviker behovet av TSQL ändå. Jag säger det eftersom att arbeta med säkerhetskopior alltid verkar leda till att man arbetar med filer utanför databasen, och då är TSQL alldeles för besvärlig.

Med det sagt, om du är säker på att du måste göra detta i TSQL, kan du göra något så här:

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

Eller för att vara lite trevligare:

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 måste dock skapa tabellen först, vilket är ingen stor sak och är vettigt ändå om du gör det här mycket. Books Online listar datatypen för varje kolumn i resultatuppsättningen, men åtminstone för mig (SQL2008 SP1) matchar inte dokumentationen den faktiska resultatuppsättningen så du kan behöva justera den.



  1. Mysql-problem med WHERE i klausul

  2. Häng i Python-skriptet med SQLAlchemy och multiprocessing

  3. FÖR UPPDATERING v/s LÅS I DELNINGSLÄGE:Tillåt samtidiga trådar att läsa uppdaterat tillståndsvärde för låst rad

  4. Hur man förminskar hela strängen med den första med versaler i MYSQL