Прежде всего, я бы никогда не позволил пользователям запускать свои собственные запросы на производственном компьютере. Они могут выполнять сканирование таблицы или какой-либо другой убийца производительности в течение всего дня.
У нас похожая ситуация, и мы обычно создаем пользовательские хранимые процедуры, чтобы пользователи могли "вызывать" и разрешать доступ только к серверу резервного копирования, на котором выполняются "почти живые" данные.
Наши пользователи знакомы с Excel, поэтому я создаю хранимую процедуру с достаточным количеством параметров для фильтрации / настройки, и они могут легко вызвать ее, используя что-то вроде:
EXEC YourProcedureName '01/01/2010','12/31/2010','Y',null,1234
Я точно документирую, что делают параметры, и, как правило, они хороши.
Чтобы настроить запрос Excel, вам необходимо настроить источники данных на ПК пользователя (панель управления - источники данных - odbc), которые будут немного различаться в зависимости от вашей версии Windows.
В Excel вам нужно настроить «запрос», который является просто командой EXEC
сверху. В зависимости от версии Excel, это должно быть что-то вроде: меню - данные - импорт внешних данных - запрос новой базы данных. Затем выберите источник данных, подключитесь, пропустите средство создания диаграмм и введите приведенный выше SQL. Кроме того, не пытайтесь заставить одну процедуру делать все, создавать разные в зависимости от того, что они делают.
Как только данные попадают на лист Excel, наши пользователи переносят их на другие листы и манипулируют ими по своему желанию.
Некоторые пользователи немного продвинуты и «пытаются» написать свой собственный SQL, но это боль. Я заканчиваю отладкой и исправлением их некорректных запросов. Кроме того, как только вы исправите запрос, они всегда возятся с ним и ломают его снова. использование хранимой процедуры означает, что они не могут ее изменить, и я могу поместить ее вместе с другими нашими процедурами в хранилище исходного кода.