Если я добавлю простое подключение данных таблицы Sql Server к листу Excel, сможет ли он заблокировать эту таблицу, если подключение никогда не закрывается?





Обычный ответ: да, но это зависит от обстоятельств ...
.. в основном от того, какую стратегию блокировки использует ваша база данных (опять же, в зависимости от конфигурации). Я предполагаю, что Excel откроет «обычное» соединение с базой данных. Если вы сейчас запросите таблицу, это может уже заблокировать таблицу, если у вас есть пессимистическая стратегия блокировки.
Надеюсь, это поможет ... есть масса информации о блокировках, относящихся ко многим системам баз данных.
Хотя я думаю, что можно заблокировать таблицу, я бы сказал, что Excel обычно этого не делает, поскольку вы только выбираете данные. Если вы попытаетесь что-то обновить, убедитесь, что вы заблокируете базовую таблицу, но пока вы только просматриваете данные, все будет в порядке.
Чтобы убедиться, почему бы просто не провести некоторое тестирование на таблице с меньшим количеством пользователей в системе или, может быть, на таблице в другой БД, настроенной таким же образом? Затем вы можете использовать SP_LOCK на SQL Server, чтобы увидеть, заблокировало ли ваше соединение Excel таблицу, или вы можете попытаться выполнить другой запрос к своей таблице, чтобы увидеть, заблокирована ли она.
Аналогичный вопрос задавали на форумах Microsoft. Согласно этому сообщению, по умолчанию Excel запрашивает полную блокировку строк в таблице. Итак, да, он может заблокировать стол.
В сообщении MSDN обсуждаются различные уровни изоляции, доступные в SQL 2005, так что это может оказаться полезным, если вы используете эту версию.