Связка SQL Server + Access + Интернет

Joss
Дата: 04.02.2016 17:45:37
У клиентов есть задача, написанная на Access. И довольно большая, постоянно изменяющаяся база.
А у них свои клиенты, которым необходимо работать с этой задачей. Хозяева не хотят отдавать эту базу в чужие руки.
А хотят, чтоб клиенты работали с ней через интернет. Особенности базы: её изменять могут лишь хозяева, остальные могут только получать из неё различные выборки.
Делать соответствующий сайт и переводить всё на MySQL, PHP, ASP они то ли не хотят, то ли не могут (скорее второе, финансы). Вот они и крутятся, чтоб не переписывать задачу, а как-то ухитриться работать с ней удалённо через интернет.

Какие есть идеи?

Пока предложено следующее.
Первое предложение. Перевести базу на MS SQL Server, дать ему выход в интернет. Клиент оставить как Access.

Другое предложение. Попробовать использовать SharePoint. База то не меняется.

Третье предложение. Удалённый доступ через сервер терминалов (или терминальный сервер)

Сложность ещё в том, что у клиентов нет сильного админа (или вообще нет админа). И как всё это настроить - неизвестно.

Может кто-то создавал что-то подобное и поделится идеями или опытом?


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
simply
Дата: 04.02.2016 18:35:46
Советовать не буду, расскажу как у меня в организации.
Разделенная база. Таблица на терминальном сервере. Клиенты разложены по папкам с именами папок равными имени учетной записи пользователя. Ярлык для подключения к удаленному рабочему столу один на всех, т.е. он организован так, что через него, пользователь запускает клиента в папке со своей учетной записью. Удаленность довольно большая: Новосибирск, Владивосток, Якутия. Проблем в общем то особенных нет.
Если есть конкретные вопросы, отвечу.
Ёжик`
Дата: 04.02.2016 21:24:12
Еще способ:
Трехзвенка
Акс умеет работать с xml.
IIS + asp - как сервер приложений, будет принимать отдавать XML, писать читать MSSQL.
Акс будет работать с вебсервером и локальной акцесной кеш-базой .

Это не теория :)
vmag
Дата: 04.02.2016 22:22:47
Joss,

Много зависит от того, что значит
Joss
Хозяева не хотят отдавать эту базу в чужие руки

- не хотят отдавать информацию? (так они её будут отдавать в любом из предложенных вариантов)
- не хотят отдавать структуру БД вместе с информацией? (так если есть информация по таблично, структура делается на раз / два)
Это я к чему? Если вопрос стоит о том, что нельзя отдавать ПРАВО на актуализацию информации, то можно поступить так:
1. у клиентов настроить рабочее место с разделенной БД (управляющая программа + файл БД)
2. поставлять клиентам периодически актуальный файл БД (способов много):
- скачивание с сайта или с файлообменника
- рассылка по электронной почте
Файл в RAR можно делать самораспаковывающимся в определенное место...
Можно так же попробовать репликацию в одну сторону...
Пусть там хоть обковыряют информацию, при очередном обновлении всё станет на свои места...
Точно так же можно иногда обновлять и управляющую программу...
vmag
Дата: 04.02.2016 22:30:34
simply
Таблица на терминальном сервере. Клиенты разложены по папкам с именами папок равными имени учетной записи пользователя. Ярлык для подключения к удаленному рабочему столу один на всех, т.е. он организован так, что через него, пользователь запускает клиента в папке со своей учетной записью.


В январе один из клиентов попал конкретно, ну и других немного зацепило на серваке...
Взломали одного из юзеров (по RDP вряд ли - пароль был стойкий, скорее сам трояна хапанул дома) и с..ки пошифровали всё, что этому юзеру было доступно на серваке...
MrShin
Дата: 05.02.2016 08:12:51
По-моему тут однозначно первый вариант. Смигрировать базу среднего размера на SQL сервер можно за день-два, фрилансеры за несколько тыс руб это сделают с удовольствием. Нет своего сервера - возьмите хостинг базы, например, у того же MS - Azure за $5 в месяц для небольшой базы или бесплатно MySQL на множестве хостингов предлагают.

Терминальный доступ, в отличие от SQL сервера не решит проблему с разграничением доступа к информации, клиенты будут иметь возможность отредактировать базу при наличии соответствующих знаний, никакая акцессовская защита не устоит.

С Sharepoint я бы не стал связываться вообще, переделка приложения на веб версию обойдется намного дороже миграции на SQL. Впрочем, он так же работает на MS SQL.

Вариант с репликацией неплох, но опять же - полная копия данных будет у всех клиентов, обновление не в реалтайме.
Leoris
Дата: 05.02.2016 11:17:47
MrShin,

а насколько технически подкованы клиенты? Можно вывести данные в БД (AWS, Azure и т.д.) и создать для клиентов отдельного пользователя с правами только на чтение определённых представлений (view). самим разумеется заходить под админом под пользователем со всеми правами.

А уж способов забрать информацию масса - можно отдать настроенный Access, Excel и т.д.
Joss
Дата: 05.02.2016 12:22:46
Спасибо за отклики. Попробую прояснить кое-какие вопросы.

1. Клиенты (основные) не очень хорошо подкованы программно и технически. Небольшая фирма занимающаяся обработкой некоторых поступающих данных (ресурсы, торговый оборот и т.п.), анализом этих данных

2. На счёт, что жалко и что не жалко отдавать. База разделённая. Клиента отдавать не жалко. А вот базу с данными - это да. Фирма как раз и живёт за счёт предоставления такой информации. Хотят заказчики узнать всё о пиломатериалах фанере, цементу или шиферу. Пожалуйста, им полный расклад. Что, где и сколько продано, закуплено, завезено, вывезено и кем всё это сделано. Ну и графики и таблицы соответствующие.

3. Объём базы - несколько сотен мегабайт. Письмом не отошлёшь. Только через файлообменник.

Ответ Ёжику
Трёхзвенка - это хорошо. Опять же теоретически. Кто будет писать ASP ? Кто будет настраивать IIS ? Но как вариант будет предложен к рассмотрению. Сегодня же вечером.

Ответ simpli
Ваш способ требует минимальных затрат. Возможно он как раз и будет принят. Но решать не мне. Если разрешите, то я к Вам обращусь за уточнениями.

Лично мне больше импонирует переход на MS SQL, но тут много работы. Нужно настроить SQL сервер для выхода в интернет, нужно переписать программу, часть запросов на хранимки и вьюхи, запросы к серверу. (хотя при использовании mdb и accdb это и не обязательно, но тормоза будут жуткие) Да, и какой сервер использовать? Можно использовать MS SQL Express или надо приобретать полноценную версию? Возможно трудности по переходу будут сопоставимы с разработкой новой программы .

Пока будем думать.
Leoris
Дата: 05.02.2016 12:51:58
Joss, если размер базы - несколько сотен мегабайт, то Express с головой хватит. Посмотрите на вариант Amazon RDS c MS SQL Express. без оптимизации будет стоить около 40 баксов в месяц, зато пропадает боль с настройкой, обновлениями, бэкапами и прочим
Predeclared
Дата: 05.02.2016 13:52:05
Joss
... Пока будем думать.

Я бы попробовал следующее:
1. У клиентов-потребителей - морда отчетной системы (с минимумом данных, например справочниками),
хоть на Access, хоть на чем-то другом,
которая на основании прописанных шаблонов шлет на электронную почту клиента-исполнителя
письмецо ЗАДАНИЕ примерного содержания (можно шифровать/дешифровать):

Шаблон=1
Параметр1=333
Параметр2=
Параметр3=222
Параметр4=#01/01/2016#
Параметр5=-1
и т.д.

2. У клиента-исполнителя своя морда отчетной системы, которая умеет :
* читать входящую почту,
* валидировать ее содержимое, и, если соответствует,
* скармливать ЗАДАНИЕ непосредственно отчетной системе, которая умеет:
* строить на основании выбранного шаблона в ЗАДАНИИ и прочих параметрах необходимые отчеты, графики и прочее,
* выводить результаты в виде PDF или XLS, возможно, архивировать,
* отсылать их на почту клиента-потребителя.

И все это можно реализовать не отходя от Access-а в сторону других технологий.
Да и Дмитрий без работы профита не останется. :)