Подключение Access к SQL Server
В главе 18 вы рассмотрели, как коллективно использовать вашу заслуживающую награды БД совместно с другими людьми. Для кого-то это блаженное состояние программы Access. Группы пользователей могут сотрудничать, бизнесмены — следить за ежедневным рабочим процессом и все трудятся с удовольствием ныне и присно. Для других многопользовательская поддержка БД — долгая головная боль, поскольку программа Access просто не в состоянии удовлетворить всех, кто хочет внести изменения в одно и то же время.
В этой главе вы познакомитесь с другим подходом, который позволяет преодолеть ограничения Access и совместно использовать ваши БД с гораздо более многочисленными группами пользователей, у которых появится возможность существенно повысить интенсивность такого использования. Для этого нужно подключить программу Access к SQL Server, мощной серверной БД корпорации Microsoft. (Вернитесь к разд. "Access или SQL Sewer?" во введении, чтобы вспомнить разницу между серверными и клиентскими БД.)
Такое объединение обеспечит максимум возможностей. Вы сможете применять сверхнадежный процессор БД (каковым является SQL Server) без отказа от удобного пользовательского интерфейса, облегчающего выполнение разнообразных задач (каковой является программа Access). Самое замечательное заключается в том, что можно начать использование версии SQL Server, не потратив ни рубля.
Нужно ли переходить на SQL Server?
Как вы уже знаете, нет общего правила для определения, кто может успешно использовать многопользовательскую поддержку, а кто нет. Вы познакомились с предельными характеристиками — компания Fortune 500 с тысячами сотрудников, вероятно, не сможет использовать многопользовательскую поддержку Access, а команда со штатом 5 человек, занимающаяся дизайном интерьера, не столкнется ни с какими проблемами — но для многих пользователей следует учитывать множество факторов.
Успех коллективного использования зависит от того, сколько пользователей нуждаются в одновременном внесении изменений, какова тенденция изменения объема обновлений, как долго записи остаются в режиме редактирования и каков общий объем хранимых данных (например, огромными полями типа Memoи Вложениев многопользовательской БД управлять гораздо труднее, чем текстовыми и числовыми полями).
Некоторые факторы находятся вне пределов досягаемости программы Access — например, медленная или ненадежная сеть компании — что может разрушить коллективное использование БД. В разд. "Как действует многопользовательская поддержка в Access" главы 18 дано несколько важных признаков, позволяющих определить, когда многопользовательской
поддержки недостаточно. Однако если БД Access устанавливается для маленькой компании, возможно, следует самостоятельно протестировать режим коллективного использования БД.
Если вы впервые сталкиваетесь с многопользовательским применением БД, некоторые характерные симптомы предупредят вас о том, что БД не справляется. Далее перечислены некоторые ключевые признаки опасности.
■ Ваши корректировки часто перекрываются с чьими-то еще. В этой ситуации программа Access каждый раз запрашивает, как устранить конфликт (см. разд. "Обработка конфликтов редактирования" главы 18). Это самая распространенная проблема, и хотя она не разрушит вашу БД, конфликтующие корректировки могут привести к тому, что ваши изменения будут постоянно искажаться или стираться кем-то, одновременно с вами обращающимся к БД.
■ Вы не можете редактировать нужные вам записи. Эта проблема возникает, когда программа Access применяет блокировки (см. разд. "Применение блокировок для предотвращения наложения обновлений" главы 18) для предотвращения одновременных изменений. Блокировки позволяют Access избежать проблем наложения корректировок, но за это приходится платить. Вся остальная обработка, использующая заблокированную запись, полностью прерывается. И снова эта ситуация не очень опасна — как последствия от приема тройной дозы аспирина.
■ Данные повреждаются. Эта ситуация одновременно и не столь частая, и очень серьезная. Несмотря на редкость ее возникновения (она становится все реже с каждым выходом новой версии программы Access), иногда она все еще случается. Вы понимаете, что у вас появилась проблема, когда в поле оказываются искаженные данные или когда Access выводит нелепое сообщение об ошибке (например "Слишком много индексов" ("Too many indexes")) при попытке открыть объект БД. В разд. "Повреждение данных" главы 18 дается объяснение проблемы и несколько советов, как ее обезопасить.
Примечание
Порча данных может произойти не по вине программы Access. Например, если у некоего сотрудника пропало сетевое соединение в середине процесса сохранения изменения, Access может оставить БД с многопользовательской поддержкой в неопределенном или противоречивом состоянии. Единственный способ предотвращения подобных проблем — применение мощной программы управления БД, работающей на сервере, которая выполняет всю работу. (Именно эта идея лежит в основе SQL Server. Когда используется SQL Server, никто не изменяет БД непосредственно. Вместо этого пользователи создают вежливые запросы к постоянно работающему процессору БД SQL Server, который затем делает эту работу безопасным и контролируемым образом.)
Итак, что же делать, если выяснилось, что многопользовательская поддержка не дает нужных результатов? Самый лучший вариант — использовать мощную серверную программу управления БД, как SQL Server. Применение SQL Server, несомненно, добавит сложностей (вы потратите больше времени на се установку и проверку и наладку ее работы), но она обеспечит нерушимую поддержку безопасного и эффективного совместного использования БД.
Как работает SQL Server
Прежде чем вступить на территорию SQL Server, необходимо узнать немного больше о принципах работы этой программы. На рис. 20.1 показано взаимодействие программ SQL
Server и Access. В данном примере есть несколько пользователей, одновременно обращающихся к БД SQL Server, причем каждому из них на помощь приходит собственная копия программы Access.
Примечание
Это реальный принцип работы серверных БД, включая конкурирующие программные продукты, такие как Oracle и DB2. Однако у других БД нет отличной интеграции с программой Access, о которой вы узнаете в этой главе, поэтому клиентам приходится использовать другую клиентскую БД (обычно специально разработанное приложение).
Рис. 20.1. SQL Server хранит БД с таблицами (и иногда запросами). БД Access играет роль клиентской части, содержащей все остальные объекты других типов (отчеты, формы, макросы и модули программного кода)
Данный рисунок может показаться знакомым — в конце концов, в той или иной степени он напоминает принцип действия многопользовательской поддержки в Access. Каждый пользователь получает копию клиентской БД с формами и отчетами, а серверная БД (действительно хранящая данные) находится на другом компьютере (сервере) и доступна всем.
Но есть и существенная разница. На территории SQL Server у отдельных клиентских БД меньше работы. Вместо самостоятельной модификации БД они связываются с программой SQL Server (которая не что иное, как Windows-программа, работающая в фоновом режиме на серверном компьютере). По сути, вы переводите программу Access на менее квалифицированную работу, понижаете в должности. Теперь она отвечает за привлекательный внешний вид, макросы и распечатки, но освобождена от действительно тяжелой работы (добавления, удаления и обновления записей).