簡體   English   中英

Powershell Backup-SqlDatabase 備份快照而不是完整備份

[英]Powershell Backup-SqlDatabase backs up a snapshot instead of a full backup

過程:在 Windows 10 32 位 pro 機器上運行 Azure 代理,安裝 SQL Server 2014 Express。

使用 PowerShell 腳本構建並成功運行管道,如下所示:

  1. 創建空白數據庫
  2. 創建需要的表
  3. C# 應用程序運行並填充通過 PowerShell 腳本執行的表
  4. 交叉引用表以更新所需的數據。
  5. 構建 SSIS package

SSIS package 的結果成功后執行備份

命令:

Backup-SqlDatabase -ServerInstance "$env.ComputerName" -Database "RealDB" 
                   -BackupAction Database -BackupFile $Path -Blocksize 4096

這一切都有一個例外,我得到的實際備份缺少來自 SSIS package 運行的數據。 但是,如果我登錄機器並從 $Path 恢復使用的備份,則會丟失數據。

當我在這個過程之后查詢數據庫時,數據就在數據庫中。 只有一個數據庫,因此它不會備份不同的數據庫。

我可以在機器上的 powershell 中運行此命令,並且我的備份缺少來自代理的 powershell 命令所沒有的數據。

如果我刪除-Blocksize 4096也很有趣,它可以按我的預期工作,並且備份中有數據。 由於這個原因,我正在考慮放棄 powershell,但我想我會問是否有人經歷過這種情況。

任何幫助或想法表示贊賞。

謝謝

謝謝@user19702,我非常着迷於查看添加了 -BlockSize 的備份命令,以至於我完全忽略了我的數據增加的事實(感謝我今天從未聽說過的隨機過程),即使編寫了 powershell 來啟動備份 SSIS package 之后的過程沒有完成。 為了找到它,我在構建運行時在機器上啟動了任務管理器,並在備份開始時觀察了該進程在 memory 中停留了幾秒鍾。 我添加了一個 powershell 命令,讓它在處理備份及其工作之前等待幾秒鍾。

如果有人想知道這是命令

$result = $package.Execute("false", $null)
Write-Host "Package ID Result: " $result
Start-Sleep -Seconds 10
Backup-SqlDatabase -ServerInstance "$env:ComputerName" -Database "RealDB" -BackupAction Database -BlockSize 4096 -BackupFile $Path

謝謝你!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM