Подключение SQL Server к сети
Когда программа SQL Server устанавливается впервые, она может использоваться только на текущем компьютере, т. е. другие компьютеры не могут зарегистрироваться на сервере и начать использовать любые его БД.
На первый взгляд это сводит на нет основную цель применения SQL Server. (На второй взгляд тоже.) Однако корпорация Microsoft знает, что если они выпускают программный продукт, широко открытый остальному миру с его хакерами, взломщиками и всякого рода околокомпьютерными злоумышленниками, кто-то где-нибудь да достучится до него. По этой причине программа SQL Server применяет самый безопасный подход — она ограничивает доступ к себе текущим компьютером до тех пор, пока вы не дадите ей разрешение принимать внешние вызовы.
Для того чтобы открыть SQL Server для внешнего мира, необходимо изменить два конфигурационных параметра. Если вы работаете под управлением ОС Windows XP или Vista, также нужно настроить брандмауэр Windows, чтобы он пропускал SQL Server. Самые свежие инструкции по установке можно найти в статье из Базы знаний (Knowledge Base) на Web-странице http://support.microsoft.com/kb/914277.
После внесения этих изменений другие пользователи, наконец, смогут связаться с программой SQL Server и попробовать зарегистрироваться. Однако дело еще не сделано. SQL Server все еще может отказать пользователям, т. к. программа не предоставляет доступа тем, кому не доверяет.
Кому же доверяет SQL Server Express? Далее приведена вся подноготная.
■ Когда программа SQL Server устанавливается впервые, она настроена на доверие администратору компьютера, на котором проходила установка. (Технически быть администратором означает, что ваша учетная запись Windows принадлежит группе Администраторы(Administrators).)
■ Если вы при установке выбрали аутентификацию в режиме Mixed mode...(Смешанный режим...), доступ будет разрешен тому, кто предоставит имя пользователя и пароль sa, заданные во время установки.
Если вы хотите, чтобы программа SQL Server доверяла другим пользователям, придется выполнить кое-что еще. Обычно вы должны гарантировать, что каждый пользователь, нуждающийся в работе программы SQL Server, принадлежит одной из Windows-групп (группа — это коллекция пользователей, имеющая осмысленное название, например, Гости(Guests),
Администраторы (Administrators) ЛюбителиБД (DatabaseLovers) и т. д.). Создание группы — это задача установки ОС Windows, поэтому для ее выполнения необходимо проконсультироваться с сетевым администратором. После того как дело сделано, нужно сообщить программе SQL Server о необходимости доверять вашей группе. Для этого можно применять несколько методов, но легче всего загрузить из Интернета бесплатное программное средство SQL Server Management Studio (см. рис. 20.2). Дополнительные сведения можно найти в справке SQL Server Management Studio Help (рассчитанной на технически грамотных пользователей) или поискать книгу, посвященную администрированию в программе SQL Server.
Примечание
В данный момент вы, возможно, удивлены тем, что программа SQL Server так усложняет жизнь. Причина кроется в том, что она разработана в расчете на максимальную гибкость. Когда вы просто пытаетесь разрешить пользователям работать с вашей БД, модель безопасности программы кажется до нелепости сложной, но она необходима, когда вам нужно четко управлять разрешениями для определенных действий с БД, предоставляемыми разным пользователям.
Создание БД SQL Server
Вы прошли сквозь долгий и изнурительный процесс установки. Сейчас пора пожинать плоды вашего труда и приступить к созданию вашей первой БД SQL Server.
Программа Access предоставляет два способа создания БД SQL Server:
■ можно взять обычную БД Access и преобразовать ее. Программа создает нужные вам таблицы и передает все данные в программу SQL Server;
■ можно использовать программу Access для создания с нуля новой БД SQL Server.
Как правило, преобразование — самый легкий вариант, поскольку разрешает разработать таблицы с помощью хорошо знакомых вам средств, а затем передать данные. (Как вы увидите, создание в программе Access таблицы SQL Server аналогично, но чуть отличается от процесса создания обычной таблицы Access. Это похоже на чувство, которое возникает, когда вы проснулись утром и обнаружили, что кто-то перевернул вашу коллекцию CD-дисков в ящике для белья. Ничего не пропало, но все не там, где вы привыкли находить.)
У метода прямого создания тоже есть свои достоинства. Важнее всего то, что он предоставляет больший контроль, поскольку лишен этапа преобразования. БД Access неточно соответствуют БД SQL Server (например, используемые типы данных похожи, но слегка отличаются). Если создавать БД с самого начала в программе SQL Server, вы избежите любых потенциальных проблем преобразования.
В следующих разделах вы познакомитесь с обоими подходами.
Преобразование БД
У программы Access есть удобный Мастер преобразования в формат SQL Server (Upsizing wizard), который превращает любую БД Access в БД SQL Server. Этот мастер аналогичен мастеру разделения БД — когда вы закончите, у вас будет серверная и клиентская части БД. Клиентская часть — файл Access, содержащий ваши формы, отчеты, макросы и программный
код. Серверная часть — это данные (и обычно запросы), которые хранятся в надежных руках программы SQL Server.
Вот как взять в оборот Мастер преобразования.
1. Откройте БД, которую хотите преобразовать.
Выберите на ленте Database Tools → Move Data → SQL Server(Работа с базами данных → Переместить данные → SQL-Server)1.
2. На экране появится первое окно Мастера преобразования (рис. 20.5).
Рис. 20.5.Обычно мастер преобразования применяется для переноса данных из файла БД Access в замечательную новую БД SQL Server
3. Выберите переключатель Create new database(создать базу данных) и затем нажмите кнопку Next(Далее).
Если вы уже создали БД SQL Server на компьютере с программой SQL Server (например, с помощью другого средства управления БД), можно было бы выбрать переключатель Use existing database(использовать существующую базу данных) для переноса ваших таблиц Access в эту БД. Но почти всегда имеет смысл создавать новую БД. Помимо всего прочего процессор БД, такой как SQL Server, может хранить практически неограниченное число БД.
4. На следующем этапе (рис. 20.6) необходимо сообщить программе Access, где искать сервер вашей БД. Сначала введите в поле в верхней части окна имя сервера.
Имя сервера состоит из имени компьютера, на котором запущена программа SQL Server, за которым следует обратный слэш, а затем слово SQLEXPRESS. Если компьютер, выполняющий программу SQL Server, назван FudgeServer, вы найдете свою БД на FudgeServer\SQLEXPRESS. Если вы подключаетесь к полной версии программы SQL Server
1 В данной главе рассматривается нерусифицированная версия программы Access. — Ред.
(не к версии Express), вторая часть имени, как правило, не нужна, достаточно Fudge-Server. Обратитесь за помощью к вашему администратору БД. |
Рис. 20.6. В этом окне программа Access собирается подключиться к компьютеру, названному MYSERVER, на котором выполняется программа SQL Server Express
Примечание
Для выяснения имени вашего компьютера, найдите пиктограмму Мой компьютер(My Computer) (на вашем рабочем столе или в программе Проводник (Windows Explorer)), щелкните ее правой кнопкой мыши и выберите строку Свойства (Properties). Далее перейдите на вкладку Имя компьютера(Computer Name). Вы увидите имя вашего компьютера и полезную кнопку Изменить...(Change), которой можно воспользоваться для изменения этого имени.
5. Оставьте установленным флажок Use Trusted Connection(Доверительное соединение).
Этот шаг сообщает программе Access о необходимости подключения с помощью учетной записи Windows. Однако если вы хотите подключиться с другим именем пользователя и паролем, сбросьте упомянутый флажок и введите нужную информацию в поля ввода, расположенные в нижней части окна.
6. Введите имя вашей БД и щелкните мышью кнопку Next(Далее).
Пользуйтесь теми же правилами, которым вы следовали при именовании объектов БД - имена должны быть короткими, без пробелов и знаков пунктуации.
Примечание
Когда создается БД, программа SQL Server не сообщает вам имя реального файла БД (как правило, это несколько файлов). Имена файлов не так важны. Вам следует знать имя, которым вы наградили вашу БД (например, BoutiqueFudge). За кадром программа SQL Server хранит ваши данные в соответствующих файлах, поэтому вам беспокоиться об их именах, не стоит.
7. Выберите таблицы, которые хотите перенести в вашу БД (рис. 20.7), и щелкните мышью кнопку Next(Далее).
Программа Access не разрешит выбрать запросы, которые вы хотите перенести в БД. Вместо этого она перенесет все запросы, связанные с выбранными вами таблицами. Другие объекты, такие как формы и отчеты, никогда не переносятся.
Рис. 20.7. Щелкните мышью кнопку > для переноса одной таблицы в список Export to SQL Serverили кнопку » для переноса всех таблиц
8. Следующие этапы позволят управлять способом создания ваших таблиц в программе SQL Server (рис. 20.8). Измените нужные параметры и щелкните мышью кнопку Next(Далее).
В главе 2 вы узнали об индексах, а в главе 4 познакомились со значениями по умолчанию и условиями на значения. Обычно, если вы потратили время на определение этих составляющих БД в программе Access, вам захочется сохранить их и в экспортируемых в SQL Server таблицах, поэтому оставьте соответствующие флажки установленными. Далее перечислены остальные параметры, которые можно использовать.
□ Флажок Table relationships(связи таблиц). Оставьте его установленным, что гарантирует сохранение в программе SQL Server связей между таблицами, которые вы определили. В этом случае у вас есть два варианта для выбора. Переключатель Use DRI(DRI), где DRI — сокращение для data relational integrity (ссылочная целостность данных), — обычная практика, обеспечивающая невозможность создания подчиненных или дочерних записей, ссылающихся на несуществующую главную или родительскую запись. Переключатель Use triggers(Триггеры) заставляет программу SQL Server применять менее распространенные средства каскадного удаления и каскадного обновления записей.
□ Раскрывающийся список Add timestamp fields to tables?(Добавлять поля штампа времени в таблицы?) позволяет создавать поле с текущими датой и временем — дополнительное поле, основная цель которого фиксировать момент времени внесения изменения. Данное поле иногда применяется для запрета накладывающихся изменений, т. к. оно позволяет проверить, не сделал ли кто-то еще изменений в записи с тех пор, как вы последний раз ее просматривали. Обычно поля с датой и временем не добавляются. Лучше вставить их в таблицу позже, когда вы решите, что хотите воспользоваться этой возможностью.
Рис. 20.8.Если вас пугают все параметры в этом окне, просто щелкните мышью кнопку Next,чтобы оставить все, как есть. Стандартные установки — как правило, то, что вам нужно
§ Флажок Only create the table structure...(создать только структуру таблицы...). С помощью этого параметра можно создать все таблицы в программе SQL Server, но не переносить данные. Этот вариант удобен, если в данный момент файл БД Access тестируется и в нем много не реальных, а тестовых данных.
9. На последнем этапе решается, как поступить с исходным файлом Access. Обычно выбирается вариант Create a new Access client/server application(Создать новое приложение Access).
Далее описывается назначение каждого из трех возможных вариантов.
§ Вариант Create a new Access client/server application(создать новое приложение Access). Если выбран этот вариант, создается файл Access специального типа, называемый проектом Access. Вы заметите разницу, т. к. у этого файла расширение adp. Данный файл — клиентская БД, содержащая все ваши отчеты, формы, программный код и специальный набор ссылок, позволяющих взаимодействовать с таблицами, находящимися на сервере. (Исходный файл БД Access остается, но вы, наверное, просто удалите его, потому что все ваши данные есть в программе SQL Server.)
§ Вариант Link SQL Server tables to existing application(связать таблицы SQL Server с существующим приложением). Этот вариант аналогичен созданию проекта Access за исключением того, что он модифицирует файл текущей БД, превращая его в клиентскую БД. Все таблицы, которые только что были перенесены, переименовываются добавлением в конец имени слова "local" (локальная) (таким образом, таблица Productsстановится таблицей Products_iocal).Кроме того, вы получите новый набор связанных таблиц с исходными именами. Каждая связанная таблица позволяет обращаться к соответствующей таблице в программе SQL Server. После того, как
убедитесь, что связи таблиц действуют, вероятно, стоит удалить локальные таблицы, чтобы не путаться. (Дополнительную информацию о связанных таблицах см. в примечании "На профессиональном уровне. Проекты Access no сравнению со связанными таблицами" далее в этом разделе.)
§ Вариант No application changes(не изменять приложение). При выборе этого варианта данные переносятся, но ваша БД Access не изменяется. Это означает наличие двух наборов данных: один набор в файле БД Access и другой в файле SQL Server (который можно просматривать и корректировать в программе Access). Такой результат обычно не то, что вам нужно.
10. Щелкните мышью кнопку Next (Далее).
Если создается проект Access (как описано в предыдущем пункте), программа Access запрашивает, хотите ли вы открыть новый проект клиентской БД прямо сейчас или сохранить открытой старую БД. Обычно появляется желание открыть новый файл, чтобы можно было в нем работать.
11. Щелкните мышью кнопку Finish(Готово) для того, чтобы начать процесс преобразования.
Программа Access подключается к SQL Server и начинает переносить все данные. Во время ее работы вы видите индикатор выполнения процесса (рис. 20.9).
Когда Access закончит, программа выведет на экран отчет со сводными данными о завершенном процессе. Отчет можно напечатать или выбрать на ленте Print Preview → Close Preview → Close Print Preview(Предварительный просмотр → Закрыть → Закрыть окно предварительного просмотра) для возврата к вашей БД.
Рис. 20.9. Процесс может занять какое-то время, зависящее от количества данных
Процесс преобразования обычно выполняется без проблем. Но не все данные переживут преобразование. Далее перечислены ингредиенты, которые могут быть потеряны.
■ Поля гиперссылок. Они превращаются в обычные текстовые поля.
■ Поля типа Вложение. Они становятся обычными текстовыми, полями, но в этих полях содержатся только имена файлов, которые вы поместили в БД как вложения.
■ Многозначные поля. Вы получите список значений, разделенных точкой с запятой. Такой результат содержит верные данные, но в форме, которую не может использовать программа SQL Server. Любые отношения или запросы, использующие эти данные, потерпят неудачу.
Если создается проект Access (а не просто связанные таблицы), ваши запросы тоже преобразуются. В результате потеряются следующие составляющие, поскольку программа SQL Server их не поддерживает:
■ запросы на изменение (см. главу 8) с параметрами;
■ перекрестные запросы;
■ запросы, ссылающиеся на значения, хранящиеся в форме. (Форма находится в вашей клиентской БД, поэтому после переноса запроса у него не будет доступа к данной информации.);
■ нестандартные запросы, которые были созданы в режиме SQL-команды, а не в Конструкторе, например запросы на объединение.