![](/img/trans.png)
[英]Cannot bind RelocateFile when using Restore-SqlDatabase cmdlet
[英]Restore-SqlDatabase using a backup with a different sector size
我有一個 PowerShell 腳本,它從生產環境復制備份並將它們還原到本地 sql server 實例,以便對數據庫執行一些操作,然后將它們重新備份到本地驅動器。
此命令的一部分使用了Restore-SqlDatabase命令。
此錯誤是由於我的機器 (4096) 和生產環境 (512) 中的扇區大小差異造成的。
無法使用備份文件“.bak”,因為它最初的格式化扇區大小為 512,現在位於扇區大小為 4096 的設備上
我想自動化這個工作流程,所以我正在尋找一種方法來運行這個腳本,而不管目標機器的扇區大小或生產環境如何。 PowerShell 中是否有解決此問題的方法?
Restore-SqlDatabase -ServerInstance $DatabaseServer -Database $DatabaseName -RelocateFile $relocate -BackupFile $BackupFilePath -RestoreAction Database
我知道這個問題的答案,但特別是我想在 powershell 中執行此操作(使用 Restore-SqlDatabase 命令),而不是 SQL。
可以使用BlockSize
參數在Restore-SqlDatabase
期間指定扇區大小。 您在此處傳遞的塊大小需要是物理硬盤驅動器的塊大小。
例如。
Restore-SqlDatabase -BlockSize 4096 -ServerInstance $DatabaseServer -Database $DatabaseName -RelocateFile $relocate -BackupFile $BackupFilePath -RestoreAction Database
可以使用以下命令以編程方式確定塊大小:
Get-CimInstance -ClassName Win32_Volume | Select-Object BlockSize
Backup-SqlDatabase
命令也接受-BlockSize
參數,但是將其設置為原始塊大小或我機器的塊大小在覆蓋原始備份文件時不起作用。
可以完全省略參數,只需將備份保存在光盤上的其他位置。 在這種情況下,SQL Server 將選擇硬盤驅動器的塊大小(在我的情況下為 4096)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.