来自Access VBA的存储过程调用因“运行RECONFIGURE语句安装”而中断

时间:2012-02-10 15:03:57

标签: sql-server-2005 ms-access vba ado

我有一个Access ADP绑定到SQL Server 2005后端。我正在尝试实现一个存储过程来更新客户端的地址,这要求我使用xp_cmdshell从命令行执行程序。该过程在SSMS中运行良好,但是当我从Access VBA通​​过ADO Connection对象调用它时,它会产生以下“错误”:

  

运行时错误'-2147217900'(80040e14):配置选项'show   高级选项'从0更改为1.运行RECONFIGURE语句   安装。

这不是一个真正的错误 - 它是SQL Server在执行sp_configure时产生的标准消息。存储过程会调用RECONFIGURE,但由于某种原因,Access会将消息解释为错误。

知道如何让它停下来吗?

对于它的价值,这里是我正在使用的一些代码。这是启用/禁用xp_cmdshell的存储过程:

ALTER PROCEDURE [dbo].[spEnableXpCmdShell]
    (@enabled bit)
WITH EXECUTE AS 'NKA\jrosenberg'
AS
SET NOCOUNT ON

    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE

    EXEC sp_configure 'xp_cmdshell', @enabled
    RECONFIGURE

    EXEC sp_configure 'show advanced options', 0
    RECONFIGURE

这是从我的主sp调用的,这个很长,就像这样:

EXEC [dbo].[spEnableXpCmdShell] 1

最后,这是一个有点删节版本的违规VBA代码:

Public Function DoNCOA(con, Optional caseId = Null, _
                                 Optional docId = Null) As Integer

    'Call the NCOAProces stored procedure asynchronously.
    'Returned integer is not success or failure, but position in the queue

    On Error GoTo ErrHandler

    Dim cmd As New ADODB.Command, _
        prm As ADODB.Parameter

    With cmd
        .ActiveConnection = con
        .CommandText = "spNCOAProcess"
        .CommandType = adCmdStoredProc
        .CommandTimeout = 1800 
        Set prm = .CreateParameter("CaseID", adInteger, adParamInput, , caseId)
        .Parameters.Append prm
        Set prm = .CreateParameter("DocID", adInteger, adParamInput, , docId)
        .Parameters.Append prm
        .Execute Options:=adAsyncExecute, adExecuteNoRecords
    End With

    [...That's all the important stuff]

End Function

任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

如何在try / catch块中运行sp_configure,以便不向客户端返回任何消息? http://msdn.microsoft.com/en-us/library/ms175976(v=sql.90).aspx