Вызов хранимой процедуры из MS Access приводит к ошибке 3146 - PullRequest
0 голосов
/ 08 сентября 2018

Когда я вызываю хранимую процедуру SQL Server из интерфейса MS Access, используя код, показанный ниже, он останавливается и выдает ошибку времени выполнения «3146».

Эта хранимая процедура работает правильно в SQL Server, но когда я запускаю из MS Access, она сначала работает, но внезапно останавливается и выдает ошибку времени выполнения "3146".

Для большей очистки эта хранимая процедура предназначена для вставки записей в пустую таблицу, когда я делаю из MS Access, он должен вставить 1000 записей, но он вставляет 970 записей, а затем останавливается.

У моей хранимой процедуры был запрос на выборку для вставки записей, теперь я изменил этот простой запрос выбора на запрос объединения, так как я изменил его в структуре хранимой процедуры, которая отлично работает в SQL Server

Public Sub Command0_Click()
    Dim qdef As DAO.QueryDef
    Set qdef = CurrentDb.CreateQueryDef("")

    qdef.Connect = CurrentDb.TableDefs("[ASBUILT_LIST]").Connect
    qdef.SQL = "EXEC Update_Asbuilt2"
    qdef.ReturnsRecords = False  ''avoid 3065 error
    qdef.Execute
    qdef.Close

    Set qdef = Nothing
End Sub

1 Ответ

0 голосов
/ 08 сентября 2018

Если он работает, но не до конца, то, вероятно, это не проблема с правами доступа, а проблема timeout

Вы можете сделать:

debug.print qdef.ODBCTimeout 

чтобы узнать текущее значение времени ожидания.

Затем просто увеличьте его на достаточное количество секунд, чтобы завершить хранимую процедуру:

Public Sub Command0_Click()
    Dim qdef As DAO.QueryDef
    Set qdef = CurrentDb.CreateQueryDef("")

    qdef.Connect = CurrentDb.TableDefs("[ASBUILT_LIST]").Connect
    ' --------------- Define TimeOut in Seconds ----------------
    qdef.ODBCTimeout = 2000 
    ' ----------------------------------------------------------        
    qdef.SQL = "EXEC Update_Asbuilt2"
    qdef.ReturnsRecords = False  ''avoid 3065 error
    qdef.Execute
    qdef.Close

    Set qdef = Nothing
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...