sql >> データベース >  >> RDS >> Sqlserver

RESTORE FILELISTONLY / HEADERONLY / VERIFYONLY によって提供される情報を一時テーブルに挿入する方法

    個人的には、これは純粋な TSQL を避けて外部スクリプトまたはプログラムを使用するシナリオの 1 つです。何をしようとしているのかによっては、Powershell または .NET から Smo を使用すると、TSQL の必要性が完全に回避されることがあります。私がそう言うのは、バックアップを操作すると常にデータベース外のファイルを操作することになり、TSQL は扱いにくいからです。

    以上のことをすべて述べた後、TSQL でこれを行う必要があると確信している場合は、次のようにすることができます。

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

    またはもう少し良くするために:

    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
      

    ただし、最初にテーブルを作成する必要がありますが、これは大したことではなく、これを頻繁に行う場合でも意味があります。オンライン ブックには、結果セットの各列のデータ型がリストされていますが、少なくとも私 (SQL2008 SP1) にとっては、ドキュメントは実際の結果セットと一致しないため、微調整が必​​要になる場合があります。



    1. SQLクエリを使用してPostgresqlで関数、シーケンス、タイプなどの定義を取得します

    2. mysqliバインド変数

    3. null値を外部キーフィールドに渡す方法は?

    4. 2つのリストを比較するSQL(oracle)