У меня есть Access ADP, связанный с бэкэндом SQL Server 2005.Я пытаюсь реализовать хранимую процедуру для обновления адресов наших клиентов, которая требует от меня выполнения программы из командной строки, используя xp_cmdshell
.Процедура отлично работает из SSMS, но когда я вызываю ее из Access VBA через объект ADO Connection, она выдает следующую «ошибку»:
Ошибка времени выполнения '-2147217900' (80040e14): Параметр конфигурации «Показать дополнительные параметры» изменен с 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
Любая помощь будет принята с благодарностью!