Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách chèn vào bảng tạm thời thông tin được cung cấp bởi RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY

Cá nhân tôi, đây là một tình huống mà tôi sẽ tránh TSQL thuần túy và sử dụng một tập lệnh hoặc chương trình bên ngoài. Tùy thuộc vào những gì bạn đang cố gắng làm, bạn có thể thấy rằng việc sử dụng Smo từ Powershell hoặc .NET hoàn toàn tránh được sự cần thiết của TSQL. Tôi nói rằng vì làm việc với các bản sao lưu dường như luôn dẫn đến việc làm việc với các tệp bên ngoài cơ sở dữ liệu, và sau đó TSQL thật quá khó xử.

Đã nói tất cả những điều đó, nếu bạn chắc chắn rằng bạn phải làm điều này trong TSQL, thì bạn có thể làm điều gì đó như sau:

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

Hoặc đẹp hơn một chút:

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

Tuy nhiên, bạn vẫn phải tạo bảng trước, điều này không có gì to tát và dù sao cũng có ý nghĩa nếu bạn làm điều này nhiều. Books Online liệt kê kiểu dữ liệu cho mỗi cột trong tập kết quả, nhưng ít nhất đối với tôi (SQL2008 SP1), tài liệu này không khớp với tập kết quả thực, vì vậy bạn có thể cần phải chỉnh sửa nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kiểm tra xem một cột được tính toán có "Cố định" trong SQL Server hay không

  2. Làm cách nào để mô phỏng UNPIVOT trong Access?

  3. Tôi có thể sử dụng câu lệnh CASE trong điều kiện JOIN không?

  4. Sự cố với chức năng cửa sổ trong SQL Server 2008 R2

  5. GETUTCDATE () có trả về cùng một giá trị nếu được sử dụng hai lần trong cùng một câu lệnh không?