【发布时间】:2019-11-27 03:31:54
【问题描述】:
我有一个 PowerShell 脚本,它从生产环境复制备份并将它们还原到本地 sql 服务器实例,以便对数据库执行一些操作,然后将它们重新备份到本地驱动器。
此命令的一部分使用Restore-SqlDatabase 命令。
此错误是由于我的机器 (4096) 和生产环境 (512) 中的扇区大小不同。
无法使用备份文件“.bak”,因为它最初是 格式化为扇区大小 512,现在在具有扇区大小的设备上 4096
我想自动化这个工作流程,所以我正在寻找一种方法来运行这个脚本,而不管目标机器的扇区大小或生产环境如何。 PowerShell 中是否有解决此问题的方法?
Restore-SqlDatabase -ServerInstance $DatabaseServer -Database $DatabaseName -RelocateFile $relocate -BackupFile $BackupFilePath -RestoreAction Database
我知道答案in this question,但具体来说,我想在 powershell 中执行此操作(使用 Restore-SqlDatabase 命令),而不是 SQL。
【问题讨论】:
-
@tukan 我做了,并解释了为什么这个问题不相关。
-
尝试将备份文件放在网络驱动器上,并将其用作还原源。如果“网络驱动器”实际上是本地计算机(例如
\\machinename\c$\...),这甚至可能有效。免责声明:未经测试。这背后的想法是通过网络重定向器强制引擎使用缓冲 I/O,而不是它使用的非缓冲 I/O(这需要对齐扇区大小)。如果您想在原始机器上恢复备份,您当然需要这样做。 -
重点是,如果您向下滚动,您将找到 Backup-SqlDatabase cmlet 的答案。
标签: sql-server database powershell