Доступ «не отвечает» в течение 60 секунд во время первого sql-запроса «ВСТАВИТЬ В» после открытия программы/интерфейса

#sql-server #vba #ms-access

Вопрос:

Я создал интерфейс MS-Access с серверной частью SQL Express на отдельном сервере. Файл доступа находится на общем файловом сервере.

При открытии интерфейса и запуске первого sql INSERT INTO... с использованием VBA доступ зависает и «не отвечает» примерно на 60-90 секунд.

После этого процесса инициализации запросы на вставку выполняются должным образом. С запросами ВЫБОРА или ОБНОВЛЕНИЯ проблем нет. Я протестировал код VBA, и сбой связан с запросом на ВСТАВКУ, независимо от того, какая форма или ВСТАВКА запускается первой после открытия интерфейса.

Первичные ключи в SQL Express являются int и индексируются.

Я пытался:

  • Выполнение ВСТАВКИ sql с помощью DAO(rs.AddNew) и cmd.execute(«ВСТАВИТЬ В…»).
  • Установите для доступа (Параметры>Настройки клиента>>Блокировка записей по умолчанию) значение «Без блокировок» и>>
    отключено «Открывать базы данных с помощью блокировки на уровне записей».
  • Перемещение файла доступа локально и выполнение с рабочего стола.
  • Восстановление и сжатие базы данных.

К сожалению, у меня закончились идеи.

Комментарии:

1. Это первая вставка или просто первая команда против серверной части (это подразумевает подключение)? Каково содержимое первой зависшей вставки? Вероятно, нам нужно увидеть какой-то код, чтобы помочь в диагностике.

2. Проблем с подключением нет — все запросы на ВЫБОР и ОБНОВЛЕНИЕ выполняются нормально. Проблема возникает при запуске первой вставки sql, и это может быть из любой формы. Доступ останавливается на DoCmd.RunSQL «ВСТАВИТЬ В dbo_tblUser (имя, возраст) ЗНАЧЕНИЯ (‘»amp; txtName amp; «‘, ‘» txtAge»‘)», но также с rs = CurrentDb.OpenRecordset(«dbo_tblUser», dbOpenDynaset, dbSeeChanges); С rs; .AddNew

3. Очень необычно. Интерфейс доступа должен быть локальным (для каждого пользователя), но вы уже протестировали это. — Проверьте Sql-сервер: есть ли какая-либо активность во время ожидания? Есть ли что — то в журналах Sql Server? Или журналы событий Windows?

4. Для полноты картины: это также происходит, когда вы вставляете запись в связанную форму или непосредственно в связанную таблицу?

5. SQL в комментарии показывает отсутствие объединения txtAge: "', '" amp; txtAge amp; "')" . Почему использование разделителей апострофа для возраста — это не поле числового типа? Зачем сохранять возраст вместо даты рождения?