Установить время ожидания для связанных таблиц / представлений SQL в клиентской части Access - PullRequest
0 голосов
/ 14 мая 2018

Мы перенесли некоторые фоновые таблицы данных с сетевого диска (файл mbd) в базу данных SQL Server.В основном все работает отлично, но если сотрудники обращаются к вещам через VPN (что сильно замедляет работу), то мы получаем ошибки подключения, когда запускаем отчеты, которые извлекают много данных.Я предполагаю, что мне нужно установить тайм-аут на большее значение, и я провел некоторое исследование, и мне кажется, что мне нужно установить тайм-аут команды (или, возможно, тайм-аут запроса?).

Ниже приведен код VBA, который мыиспользуйте для подключения таблиц / представлений SQL Server к нашему внешнему интерфейсу Access из внутреннего сервера SQL Server.Я прав, что мне, вероятно, нужно указать время ожидания команды?Куда в этом случае мы добавим значение времени ожидания команды (или другого времени ожидания)?

Public Sub CreateSQLLinkedTable(strSourceTableName As String, strNewTableName As String)

'************************************************************************************
'* Create a linked table in the current database from a table in a different SQL Server file.
'* In:                                                                              *
'*   strNewTableName - name of linked table to create                               *
'*   strSourceTableName - name of table in database                             *
'************************************************************************************

Setup:

    Dim tdf As TableDef
    Dim strConnect As String, strMsg As String
    Dim myDB As Database

    ' set database vars
    Set myDB = CurrentDb
    Set tdf = myDB.CreateTableDef(strNewTableName)

MakeConnections:

    On Error GoTo OnError

    ' turn system warnings off
    DoCmd.SetWarnings False

    ' define connect string and source table
    ' We do not need to specify the username (Uid) and password (Pwd) in this connection
    ' string, because that information is already cached from the connection to the SQL
    ' Projects database that we created in CheckSQLConnection() that was run to check connection
    ' to the database.  So here we can have a connection string without the Uid and Pwd.
    With tdf
        .Connect = "ODBC;Driver={SQL Server};" & _
                  "server=" & myServer & ";" & _
                  "database=" & mySQLDB & ";"

        .SourceTableName = strSourceTableName
    End With

    ' execute appending the table
    myDB.TableDefs.Append tdf

    ' turn system warnings back on
    DoCmd.SetWarnings True

ExitProgram:
    ' this block of code will run if there are no errors

    Exit Sub

OnError:
    ' this block of code runs if there is an error, per On Error assignment above

    ' display error message with details
    MsgBox "There was an error connecting to the SQL Server data source Projects. Error = " & err & ", Description: " & err.Description

    'exit Projects
    Call CloseFormsAndQuit

End Sub

1 Ответ

0 голосов
/ 14 мая 2018

Существует свойство тайм-аута ODBC. Откройте запрос в режиме конструктора и перейдите в свойства, чтобы увидеть его. На текущей странице свойств базы данных также есть тайм-аут (ODBC) запроса. Вы также можете установить его программно:

Dim objDB As DAO.Database
Set objDB = CurrentDb()
objDB.QueryTimeout = 120   

http://www.geeksengine.com/article/how-to-change-timeout-value-for-access-sql.html
Также проверьте конфигурацию сервера. Тайм-аут запроса на стороне сервера.

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