我有一段执行SQL Server备份的简单代码。
With sCmd
.ActiveConnection = sCN
.CommandText = "dbo.csp_ad_hoc_single_full_backup"
.CommandType = adCmdStoredProc
.Parameters.Refresh
.Parameters("@database_name").Value = strDB
.Parameters("@backup_dir").Value = preBackup_directory
.Parameters("@backup_dir_space").Value = objDiskSpace
.Execute , , adAsyncExecute
End With
returnvalue = sCmd.parameters(0)
当用户点击页面时执行此代码,然后返回值为每个可能的过程结果显示不同的文本。
问题是在此过程运行时我无法点击任何其他页面。我尝试过使用'adAsyncExecute',但这似乎不起作用。在整个备份完成之前,不会加载显示结果并运行此代码的页面。我想知道这可能是其他网页挂起的原因。
有什么想法吗?
答案 0 :(得分:0)
根据enderland的评论,在.Execute
流程完成之前,VBA不会继续。
我的解决方案是简单地编写参数sql表而不是立即尝试执行该过程。该网页将显示表写为成功。然后,作业将获取这些参数并执行原始页面加载时的代码。使用msdb.dbo.sp_send_dbmail
作业结束时,将通过电子邮件通知用户作业完成。