0

こんにちは、次のコードを使用して、プログラムでデータベースを復元しています。

sqlcmd = New SqlCommand("ディスクからデータベース db1 を復元 = '" & txtFileName.Text & "' with replace") sqlcmd.Connection = con sqlcmd.ExecuteNonQuery()

このコードは完全に機能していますが、復元プロセスの進行状況に基づいて進行状況バーを表示したいと考えています。どうすればこれを行うことができますか?

4

2 に答える 2

2

これを SQL 2005 以降に対して実行している場合は、次のクエリを使用して復元アクションのステータスを監視できます。

SELECT
    command, start_time, percent_complete,
    CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
        + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
        + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
    CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
        + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
        + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
    dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time, s.text
FROM 
    sys.dm_exec_requests r
    CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s
WHERE 
    r.command in ('RESTORE DATABASE', 'BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG', 'DBCC TABLE CHECK')

WHERE 句の値を微調整して、ステータスが返されるアクションを制御できます。

于 2012-07-05T13:00:47.177 に答える
0

バックアップ ファイルのサイズを正確に知ることはできません。できることは、バックアップ コマンドを実行する前に、データベースのサイズを調べて、バックアップに 1 GB が 1 秒かかると推測し、それに応じて進行状況バーを表示することです。

于 2012-07-05T12:22:23.243 に答える