Выполнение переноса

При переносе базы данных в SQL Server, кроме таблиц, переносятся индексы и связи между таблицами. При этом индексы отображаются в соответствующие объекты SQL Server. Индексы, использующиеся в Access и SQL Server, очень похожи, отличие состоит только в том, что SQL Server не поддерживает индексы по убыванию. Первичные ключи из Access отображаются в некластеризованные уникальные индексы в SQL Server. В SQL Server 6.x и выше они, кроме того, маркируются и как первичные ключи.

Если перенос выполняется в SQL 6.x или выше, то при переносе связей вы можете выбрать один из методов задания связей в SQL Server: декларативная ссылочная целостность (DRI —Declarative Referential Integrity) или триггер (см. рис. 19.10). DRI — это свойство SQL Server, которое позволяет задавать связи между таблицами в описаниях таблиц в виде внешних ключей (foreign keys). Однако DRI не поддерживает каскадных обновлений и удалений. Поэтому, чтобы сохранить те описания каскадных операций, которые были в базе данных Access, следует использовать триггеры (примеры триггеров и индексов приведены в гл. 17). При переносе таблиц переносятся все поля, которые были в таблицах Access, и такие их свойства, как правила проверки введенных значений (validation rules) и значения по умолчанию (default values).

Замечание

Особенным образом осуществляется перенос полей таблиц Access типа Гиперссылка (Hyperlink). SQL Server не поддерживает, полей такого типа. При переносе на SQL Server поля типа Гиперссылка (Hyperlink) преобразуются в текстовые поля, содержащие все свойства гиперссылки в одной строке: ее название, всплывающую подсказку, адрес и закладку ресурса. Но при открытии таблиц, хранящихся на SQL Server, в клиентском приложении Access гиперссылки полностью работают, ведь вся информация сохранена.

Для таблиц Access, имеющих поля типа Одинарное с плавающей точкой (Single) (это 4 байта), Двойное с плавающей точкой (Double) (это 8 байтов), Поле MEMO (Memo), Поле объекта OLE (OLE Object), в результате переноса в SQL Server создается еще поле типа Штамп времени (Timestamp). Это поле Microsoft Access использует при работе с присоединенными таблицами сервера для проверки, не было ли изменений в записи. При отсутствии этого поля работа с такими таблицами может быть не всегда корректной.

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

  1. Откройте в Microsoft Access 2002 базу данных, которую требуется перенести.
  2. Выберите команду Сервис, Служебные программы, Мастер преобразования в формат SQL Server (Tools, Database Utilities, Upsizing Wizard). Появится диалоговое окно, представленное на рис. 19.6.
  3. Если нужно создать новую базу данных на SQL Server, в которую будут перенесены таблицы из приложения Access 2002, переходите к шагу 5. Чтобы связать приложение Access 2002 с существующей базой данных в SQL Server (в нашем * примере это база данных Sample на SQL Server), выберите переключатель Использовать существующую базу данных (Use existing database) и нажмите кнопку Далее (Next). Появится диалоговое окно, представленное на рис. 19.7.

Диалоговое окно выбора способа переноса базы данных

Рис. 19.6. Диалоговое окно выбора способа переноса базы данных

Вкладка Machine Data Source

Рис. 19.7. Вкладка Machine Data Source

  1. Чтобы указать файловый источник данных, выделите один из существующих источников данных в списке на вкладке File Data Sources или нажмите копку New, чтобы создать новый. Если нужно использовать некоторый специфический для данного компьютера источник данных (к ним относятся пользовательские или системные источники), раскройте вкладку Machine Data Sources (см. рис. 19.7) и выделите соответствующий элемент в списке существующих источников данных (например, созданный с помощью Администратора ODBC системный источник данных SampleSDSN, подключенный к базе данных Sample на SQL Server) или нажмите копку New (Создать), чтобы создать новый. После указания источника данных нажмите кнопку ОК и переходите к шагу 7.
  2. Если нужно создать новую базу данных на SQL Server, в которую будут перенесены таблицы из приложения Access 2002, выберите в первом диалоговом окне Мастера преобразования в формат SQL Server переключатель Создать базу данных (Create new database) и нажмите кнопку Далее (Next). Появится диалоговое окно, представленное на рис. 19.8.

Диалоговое окно для регистрации новой базы данных в SQL Server

Рис. 19.8. Диалоговое окно для регистрации новой базы данных в SQL Server

  1. Выберите в списке имя сервера, на котором нужно создать новую базу данных, затем укажите способ регистрации на SQL Server. Чтобы использовать регистрацию на SQL Server через систему защиты Windows NT или 2000, установите флажок Доверительное соединение (Trusted Connection). Иначе для регистрации непосредственно на SQL Server введите в текстовые поля имя пользователя и пароль для регистрации на SQL Server, а также имя новой базы данных. Нажмите кнопку Далее (Next).
  2. На этом этапе будет установлено соединение с SQL Server. Для -того, возможно, потребуется ввести имя пользователя и пароль или будут использованы па-. раметры регистрации, заданные на предыдущих этапах.
  3. В следующем диалоговом окне мастера можно выбрать те таблицы, которые требуется переместить на SQL Server. Чтобы перенести все таблицы, нажмите кнопку >> и кнопку Далее для перехода к следующему окну.
  1. Как уже говорилось выше, при переносе таблиц на сервер, имеется возможность перенести не только сами таблицы, но и некоторые атрибуты таблиц — индексы, правила проверки вводимых значений, значения по умолчанию, а также связи между таблицами. Сбросьте лишние флажки или оставьте все, как предлагает мастер по умолчанию. Кроме того, мастер предложит вам добавить в некоторые таблицы специальное поле — Штамп времени (Timestamp), которое можно добавлять в каждую таблицу, можно не добавлять совсем, а можно предоставить мастеру самому решить, в каких случаях добавить штамп времени. Можно также установить флажок, который указывает, что на сервере требуется создать только структуру таблиц и не переносить данные. Оставьте все значения такими, как предлагает мастер по умолчанию, и нажмите кнопку Далее.
  2. На следующем шаге мастер предлагает выбрать способ преобразования приложения
    • просто переместить таблицы на SQL Server, не изменяя самого приложения;
    • переместить таблицы и связать их с приложением. В этом случае мастер сохраняет исходные таблицы Access, переименовывает их (добавляется суффикс локальная ( local) ) и присоединяет преобразованные таблицы SQL Server к приложению в виде связанных таблиц ODBC с теми же именами, которые имели до переноса таблицы Access. Этих действий вполне достаточно для того, чтобы преобразованное приложение оставалось работоспособным;
    • создать новое приложение — проект Access, в которое переносятся все объекты приложения и которое взаимодействует с таблицами на сервере через новый интерфейс - OLE DB/ADO.

    Выберите желаемый вариант преобразования. При этом в случае создания проекта Access нужно задать имя файла проекта (с расширением adp). Можно также установить флажок, указывающий на необходимость сохранения имени пользователя и пароля для регистрации.

  3. В последнем окне выдается сообщение о том, что вся необходимая информация получена и мастер готов начать преобразование. Возможно, мастер предложит выбрать, какой из файлов требуется открыть после преобразования: новый проект Access или оставить открытым исходный файл MDB. Выберите необходимый переключатель и нажмите кнопку Готово (Finish).
  4. После этого начнется процесс преобразования и переноса объектов базы данных без отображения дополнительных диалоговых окон, требующих подтверждения каких-либо действий. Это удобно, когда осуществляется перенос объемной базы данных и процесс может продлиться достаточно долго. При этом отображается окно с индикатором выполнения переноса и кнопкой Отмена (Cancel), позволяющей в любой момент прервать этот процесс.
  5. По окончании процесса переноса отображается отчет о полученных результатах, который можно сохранить, например, в формате снимка отчета или HTML. Когда отчет будет просмотрен и закрыт, на экране отобразится окно исходной базы данных или преобразованного приложения Access.