Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wstawić do tabeli tymczasowej informacje podane przez RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY

Osobiście jest to jeden scenariusz, w którym unikałbym czystego TSQL i używałbym zewnętrznego skryptu lub programu. W zależności od tego, co próbujesz zrobić, może się okazać, że użycie Smo z Powershell lub .NET i tak całkowicie eliminuje potrzebę korzystania z TSQL. Mówię to, ponieważ praca z kopiami zapasowymi zawsze wydaje się prowadzić do pracy z plikami spoza bazy danych, a TSQL jest po prostu zbyt niewygodny.

Powiedziawszy to wszystko, jeśli jesteś pewien, że musisz to zrobić w TSQL, możesz zrobić coś takiego:

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

Albo być trochę milszym:

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

Jednak nadal musiałbyś najpierw utworzyć stół, co nie jest wielkim problemem i i tak ma sens, jeśli robisz to dużo. Books Online wymienia typ danych dla każdej kolumny w zestawie wyników, ale przynajmniej dla mnie (SQL2008 SP1) dokumentacja nie jest zgodna z rzeczywistym zestawem wyników, więc może być konieczne dostosowanie go.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie wszystkich dzieci rodzica za pomocą zapytania MSSQL

  2. Jak porównywać daty w SQL Server

  3. Usuń tożsamość z kolumny w tabeli

  4. Zbiorczy import SQL z CSV

  5. Jak przekonwertować wiersze na kolumny w SQL Server?