VBA调用SQL存储过程导致其他页面挂起

时间:2014-06-10 15:03:21

标签: vba sql-server-2005

我有一段执行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',但这似乎不起作用。在整个备份完成之前,不会加载显示结果并运行此代码的页面。我想知道这可能是其他网页挂起的原因。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据enderland的评论,在.Execute流程完成之前,VBA不会继续。

我的解决方案是简单地编写参数sql表而不是立即尝试执行该过程。该网页将显示表写为成功。然后,作业将获取这些参数并执行原始页面加载时的代码。使用msdb.dbo.sp_send_dbmail作业结束时,将通过电子邮件通知用户作业完成。