sql-server - Powershell Backup-SqlDatabase 备份快照而不是完整备份
问题描述
流程:在安装了 SQL Server 2014 Express 的 Windows 10 32 位 pro 计算机上运行的 Azure 代理。
管道已构建并使用 PowerShell 脚本成功运行,如下所示:
- 创建空白数据库
- 创建需要的表
- C# 应用程序运行并填充通过 PowerShell 脚本执行的表
- 交叉引用表以更新所需的数据。
- 构建 SSIS 包
在 SSIS 包的结果成功后执行备份
命令:
Backup-SqlDatabase -ServerInstance "$env.ComputerName" -Database "RealDB"
-BackupAction Database -BackupFile $Path -Blocksize 4096
这一切都有一个例外,我得到的实际备份缺少来自 SSIS 包运行的数据。但是,如果我登录机器并从 $Path 恢复使用的备份,则会丢失数据。
当我在这个过程之后查询数据库时,数据就在数据库中。只有一个数据库,因此它不会备份不同的数据库。
我可以在机器上的 powershell 中运行此命令,并且我的备份缺少代理中的 powershell 命令所没有的数据。
如果我删除它也很有趣-Blocksize 4096
,它可以按我的预期工作,并且备份中有数据。由于这个原因,我正在考虑放弃powershell,但我想我会问是否有人经历过这种情况。
任何帮助或想法表示赞赏。
谢谢
解决方案
谢谢@user19702,我非常着迷于查看添加了 -BlockSize 的备份命令,以至于我完全忽略了我的数据增加的事实(感谢我今天之前从未听说过的随机过程),即使编写了 powershell 来启动备份 SSIS 包后,该过程未完成。为了找到它,我在构建运行时在机器上启动了任务管理器,并在备份开始时观察进程在内存中停留了几秒钟。我添加了一个 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
谢谢你!!
推荐阅读
- java - Spring Boot:如何包含不在我的基础包中的配置类?
- html - 使用 HTML 输入类型“文件”打开前置摄像头
- autodesk-forge - 如何以编程方式退出 Forge?
- c - c位操作(字节序)
- c# - 此登录身份验证代码在 ASP.NET CORE MVC 中的外观如何?
- python - Hive JDBC 驱动程序 Python
- java - Java Android getContentResolver().query for specific Camera 文件夹以在 Android API 级别 <= 28 个设备中获取光标
- django - 模型名称更改后m2m表不更改列名
- python - 操作数不能与形状 (16,) (21,) -pandas 一起广播
- java - 如何修复未经授权的错误 401。注入凭据后出现错误