我正在测试这个新参数@DatabasesInParallel
,它似乎一次只能备份 1 个数据库,但它没有将此作为文档中的限制进行具体说明,所以我想知道我是否做错了什么。
我设置了 4 个数据库,我手动运行以下 4 个命令:
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'AdminDB',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'Pop',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_StackOverflow2010',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_SUPERUSER',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
当我检查 QueueDatabase 表时,我可以看到所有 4 个数据库的 DatabaseOrder 和 RequestStartTime 列完全相同。但是,当您查看 DatabaseStartTime 列时,它显示前 2 个数据库同时启动,然后接下来的 2 个数据库直到第二个数据库完成其备份和验证检查后才启动。
这是我使用的参数的预期功能吗?我希望使用此参数同时启动所有 4 个数据库。
编辑 11/14:更新了帖子的标题/措辞
原始帖子说它一次只备份 2 个数据库,但实际上一次只备份 1 个数据库。在我的测试中备份的第一个数据库非常小,以至于我没有意识到它几乎立即完成,而第二个开始。但是你可以看到这个
读完 Ola 的最后一条评论后,我突然灵光一现,意识到我做错了什么并让它发挥作用。
因为我只是在测试这些命令,所以我从未真正将它们放入代理作业中——我认为它们可以通过同时手动执行它们来以相同的方式工作。我只是将所有 4 个作业命令粘贴到查询窗口中,然后执行它。我认为这行得通,但似乎行不通,即使它们在 QueueDatabase 表中都显示了相同的 RequestStartTime。
创建作业并设置单个计划后,我可以看到 RequestStartTime 以毫秒为单位变化,但 DatabaseStartTime 对于所有数据库都是相同的。
下面的屏幕截图显示了我今天测试的 QueueDatabase 表(粉红色),当我创建代理作业时它是成功的。11/8(蓝色)的测试是我在查询窗口中手动执行命令的时候。
我在一封电子邮件中问 Ola 这个功能是否有意义,因为它在查询窗口中手动执行时不起作用,下面是他的回复:
所有 4 个作业的参数必须相同。
冷你尝试像这样改变所有的工作:
@Databases = 'USER_DATABASES'