このPowershellスクリプトを実行してデータベースをバックアップし、そのデータベースを削除してから、別の名前で復元しました。
$srv = new-object Microsoft.SqlServer.Management.Smo.Server("(local)")
$res = new-object Microsoft.SqlServer.Management.Smo.Restore
$backup = new-object Microsoft.SqlServer.Management.Smo.Backup
$backup.Devices.AddDevice("D:\AWS_CM.bak", [Microsoft.SqlServer.Management.Smo.DeviceType]::File)
$backup.Database = "Arizona_CM"
$backup.Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Database
$backup.Initialize = $TRUE
$backup.SqlBackup($srv)
$srv.Databases["Arizona_CM"].Drop()
$res.Devices.AddDevice("D:\AWS_CM.bak", [Microsoft.SqlServer.Management.Smo.DeviceType]::File)
$res.Database = "AWS_CM"
$res.NoRecovery = $TRUE
$res.SqlRestore($srv)
スクリプトは機能しました。ただし、10分が経過し、SQL Serverでデータベースを表示すると、サイズが80 mbしかないにもかかわらず、データベースはまだ「復元」モードのままです。
PowerShellを使用してSQLServerでデータベースを復元するのに通常どのくらいの時間がかかるか知っている人はいますか?
データベースを回復しないように復元を設定しています。
$res.NoRecovery = $TRUE
この行を削除するか、この値を$FALSE
に設定すると、データベースは期待どおりに復元されます。
この設定は、ログバックアップを復元するときに役立ちます。これには、ログの末尾を復元する場合も含まれます。 Books Onlineには詳細があります ここ
RESTORE
の期間は、ストレージとデータベースのサイズによって異なります。そうは言っても、80MBはそれほど長くはかからないはずです。