Собственные SQL QUERYs из Excel - PullRequest
2 голосов
/ 04 мая 2020

Мое приложение состоит из основной книги Excel WB и любого количества клиентских книг Excel. Все они содержат отчеты, управляемые запросами SELECT QUERY, управляемыми подключениями данных Excel к серверу SQL через SQLOLEDB, а теперь и MSOLEDB SQL. Эти ЗАПРОСЫ на SQL сервере включают данные из главного WB, к которому SQL Server обращается через Microsoft.ACE.OLEDB.12.

Главный WB также создает хранимые процедуры на SQL сервере, используя DROP ПРОЦЕДУРА и СОЗДАТЬ ПРОЦЕДУРУ, SQL которой настроен на основе данных в Excel. Отчеты в клиентских базах данных управляются подключениями к данным, которые EXE C эти SP. Таким образом я могу «скрыть» файловые структуры данных, полученных из Excel, а также предоставить единую точку управления SP SQL. Я полагаю, что это обычная структура.

Все это работало довольно хорошо примерно до прошлого года, 2019 года. Исследования показывают, что Excel сломал это в версии 1907. Мы уже далеко за пределами этого, я в версии 2004. Теперь все SELECT по-прежнему работают, а EXEC работают до тех пор, пока они вызывают SELECT в SP. Но DROP и CREATE из главного WB больше не работают, и вызов EXE C из Excel для вызова SP для выполнения DROP или CREATE также не работает.

Другие столкнулись с похожими проблемами:

Я обнаружил, что могу заставить ПРОЦЕДУРУ ОТДАЧИ работать, если у меня есть

  • Disabled Native SQL QUERY Warnings, как указано выше;

  • После оператора DROP следует оператор SELECT 1 ..., как указано выше;

  • И построитель соединений в Excel теперь вынуждает меня подключиться к таблице в Excel, даже если SQL в соединении не возвращает данные (например, DROP или CREATE). Даже если я не выбираю таблицу при определении соединения, я должен назначить соединение таблице в Excel при выходе из построителя. Я ненавижу это, но это заставляет DROP работать. Я повторно использовал одно соединение данных для DROP и CREATE и для выполнения некоторых EXEC, обновляя текст команды SQL с помощью VBA до соответствующего SQL по мере необходимости.

Однако ... Даже со всеми этими небольшими обходными путями CREATE PROCEDURE по-прежнему не работает. Итак, я ищу помощь в том, как заставить собственный SQL ЗАПРОС для СОЗДАНИЯ ПРОЦЕДУРЫ работать в текущей версии Excel.

Если есть более широкий совет и взгляд на командно-ориентированный (т. Е. Не возвращающий данные) Собственные запросы SQL QUERY в подключениях к данным Excel, это тоже интересно! Спасибо.

...