web-dev-qa-db-ja.com

SQL RESTORE WITH RECOVERY; 100%でハングアップ

私はこれについて多くの研究をしました。

SQL Server 2014でデータベースを回復しようとしていますが、100%でハングし続けます。

多くの人が、解決策はRECOVERYオプションを使用して復元することを確認することであると提案しています。

私はそれを試しましたが、それでも100%でハングします。 [SSMS復元]ダイアログを使用して、次のSQLステートメントを実行してみました。

USE [master]
RESTORE DATABASE [MyDB]
FROM  DISK = N'C:\MyDB_backup_2015_05_05_010004_1506557.bak'
WITH  
    FILE = 1,  
    MOVE N'MyDB_Data' TO N'F:\MSSQL\DATA\MyDB.mdf',  
    MOVE N'MyDB_Log' TO N'F:\MSSQL\DATA\MyDB_1.ldf',  
    NOUNLOAD,  
    REPLACE,  
    RECOVERY,
    STATS = 2
GO

次の方法でコマンドのステータスを確認すると、次のようになります。

SELECT r.status, r.command, r.wait_type, r.percent_complete
FROM sys.dm_exec_requests r
WHERE r.command like '%restore%' or r.command like '%backup%'

私は得る:

status: suspended
command: RESTORE DATABASE
wait_type: BACKUPTHREAD
percent_complete: 100

私の読書から、これはRESTOREがBACKUPの完了を待機していることを意味しますが、クエリからsys.dm_exec_requestsに返されるBACKUPコマンドはありません。

[〜#〜] edit [〜#〜]:再試行し、上記のクエリを実行してRESTOREの進行状況を最初から監視した後、「percent_complete」値が増加していることがわかります。 「status」は「suspended」のままであり、「wait_type」は「BACKUPTHREAD」のままであるにもかかわらず、着実に。

したがって、「一時停止」されているにもかかわらず、実際にはまだRESTOREを実行しています。

だから私は途方に暮れています...

ここで何が起こっているのか、または問題を診断する方法に関するヒントはありますか?

乾杯!

8
JTech

結局のところ、この問題は環境に関連していて、かなり単純明快でした。

まず、縮小されていないバックアップバージョンのOriginデータベースからバックアップしようとしていました。

ログファイルのサイズは実際には既知の問題であったため、通常、縮小バージョンのデータベースからバックアップします。

したがって、誰かが同様の問題を抱えている場合は、最初にデータベースを縮小してからバックアップし、そこから復元してみてください。

次に、データベースをUSB3経由で外付けドライブにバックアップしようとしました。

また、興味深いことに、作業中の復元コマンドの進行状況を監視しましたが、進行中であっても、「wait_type」「BACKUPTHREAD」で「一時停止」のステータスになりました(完了率がpercent_completeで増加していることから明らかです)。カラム!だから私はそれが何であるかについてまだ迷っています...

しかし、少なくとも今はバックアップを復元できます:-)

4
JTech

DBのサイズが原因で同じ問題が発生しました。バックアップには9MBが表示されますが、SQLサーバー管理でDBを右クリックしてプロパティを選択すると、表示されるサイズは25GBでした。 DBを「SimpleRecovery」に変更し、ログファイルを縮小し、再度バックアップすると、復元できるようになりました。

1
user6349792