Материал: Автоматизация процесса ведения документации и отчетности в "ФГБУ ФИПС"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
59
Для этих целей разработана инструкция для сотрудников, осуществляющих
информационное обеспечение.
ИНСТРУКЦИЯ
1. Связывание таблиц Access и SQL Server
При связывании таблицы Access SQL Server или таблица SQL Azure, базы данных
Jet содержит сведения о подключении и метаданные таблицы, но данные хранятся
в SQL Server или SQL Azure. Эта привязка позволяет приложений на базе Access
вычисляются для доступа к таблицам, несмотря на то, что реально существующих
таблиц и данных находятся в SQL Server или SQL Azure.
2. Если использовать SQL Server проверки подлинности, пароль хранится в
виде открытого текста на связанных таблицах Access. Рекомендуется использовать
проверку подлинности Windows.
Чтобы связать таблицы
В обозревателе метаданных доступа выберите таблицы, которые нужно
связать.
Щелкните правой кнопкой мыши таблиц, а затем выберите ссылку.
SQL Server Migration Assistant (SSMA) для доступа создает резервные копии в
исходной таблице доступа и создает связанную таблицу.
После привязки таблицы, таблицы в SSMA отображаются со значком
небольшой ссылки. В режиме доступа таблицы отображаются со значком
«связанный», являющийся шаром со стрелкой, указывающей на него.
При открытии таблицы в Access, данные извлекаются с помощью курсора
набора ключей. Таким образом для больших таблиц, все данные извлекаются
только за один раз. Тем не менее как просмотреть таблицы, доступ получает
дополнительные данные по мере необходимости.
Важно!
Чтобы связать таблицы access с базой данных Azure, требуется SQL Server
Native Client(SNAC) версии 10.5 или более поздней версии.
Можно получить последнюю версию SNAC из пакет дополнительных компонентов
Microsoft® SQL Server® 2008 R2.
4. Отсоединение доступа к таблицам
60
Когда вы не отмените привязку в таблице Access из SQL Server или таблицу
SQL Azure, SSMA восстанавливает исходные таблицы Access и ее данных.
Чтобы разорвать связь между таблицами
В обозревателе метаданных доступа выберите таблицы, которые вы хотите
удалить связь.
Щелкните правой кнопкой мыши таблиц, а затем выберите отменить связь.
5. Связывание таблиц на другой сервер
Если вы привязали доступа к таблицам в одном экземпляре SQL Server и
более поздней версии требуется изменить ссылки на другой экземпляр,
необходимо повторно связать таблицы.
6. Обновление связанных таблиц
Если SQL Server меняется или изменяются определения таблиц SQL Azure, можно
удалить связь и повторно свяжите таблицы в SSMA, используя процедуры,
приведенные ранее в этом разделе. Можно также обновить таблицы с помощью
доступа.
7. Обновление связанных таблиц с помощью режима доступа
Откройте базу данных Access.
Выберите таблицу.
Щелкните правой кнопкой мыши связанную таблицу, а затем выберите
Диспетчер связанных таблиц.
Установите флажок рядом с каждой связанной таблицы, который требуется
обновить и нажмите кнопку ОК.
Возможные проблемы после миграции:
В следующих разделах список проблем, которые могут возникнуть в
существующие приложения Access, после переноса баз данных с доступом к SQL
Server или SQL Azure, а затем связать таблицы, а также причины и способы их
устранения.
2. Низкая производительность работы со связанными таблицами
Причина. Некоторые запросы могут снижать скорость после преобразования
по следующим причинам:
61
Приложение зависит от функций, которые не существуют в SQL Server или
SQL Azure, в результате чего в таблицы извлекается локально, чтобы выполнить
запрос SELECT.
Запросы, которые обновляют или удаляют многие строки, отправляются в
качестве параметризованного запроса для каждой строки.
Решение. Преобразуйте медленно выполняемые запросы в передаваемые
запросы, хранимые процедуры или представления. Преобразование в передаваемых
запросах связано со следующими проблемами:
Передаваемые запросы нельзя изменить. Результат запроса изменения или
добавления новых записей должен быть выполнен альтернативным способом,
например, путем явного изменения или добавления кнопки в форме, привязанный к
запросу.
Некоторые запросы требуют ввод данных пользователем, но передаваемые
запросы не поддерживают ввод данных пользователем. Входные данные
пользователя можно получить с Visual Basic для приложений (VBA), которые
запрашиваются параметров или форму, которая используется в качестве элемента
управления вводом. В обоих случаях код VBA в код отправляет запрос с входными
данными пользователя на сервер.
3. Не обновляются столбцы при обновлении записей
Причина. После вызова RecordSet.AddNew в Jet, столбец автоматически
изменится, прежде чем обновится запись. Новое значение столбца удостоверений
доступно только после сохранения новой записи.
Решение. Выполните следующий код Visual Basic для приложений (VBA) перед
обращением к поле идентификации:
Recordset.Update
Recordset.Move 0,
Recordset.LastModified
4. Новые записи недоступны
Причина. При добавлении записи, чтобы SQL Server или таблица SQL Azure
с помощью VBA недоступны новые записи. В том случае, если поле уникального
индекса таблицы имеет значение по умолчанию и не назначено значение к этому
полю, новая запись не отображается до повторного открытия таблицы в SQL Server
62
или SQL Azure. Если попытаться получить значение из новой записи, появляется
следующее сообщение об ошибке:
Run-time error '3167' Record is deleted.
Решение. При открытии SQL Server или SQL Azure таблицы с помощью кода
VBA, включить dbSeeChanges параметр, как показано в следующем примере:
Set rs = db.OpenRecordset("TestTable", dbOpenDynaset, dbSeeChanges)
5. После миграции некоторые запросы не позволяют пользователю
добавить новую запись
Причина. Если запрос не содержит все столбцы, включенные в уникальный
индекс, нельзя добавить новые значения с помощью запроса.
Решение. Убедитесь, что все столбцы, включенные в хотя бы один
уникальный индекс являются частью запроса.
6. Вы не можете изменить схему связанной таблицы
Причина. После переноса данных и связывания таблицы пользователь не
может изменить схему данных в Access.
Решение. Изменения схемы данных с помощью SQL Server Management
Studio и затем обновление связи в Access.
7. Функциональные возможности HyperLink теряются после переноса
данных
Причина. После переноса данных, гиперссылки в столбцах теряют свою
функциональность и упрощается в тип nvarchar(max).
Решение. Нет.
8. Некоторые типы данных SQL Server не поддерживаются
Причина. Если обновить SQL Server или таблицы SQL Azure на типы
данных, которые не поддерживаются в Microsoft Access, потеряется возможность
открыть таблицу в Access.
Решение. Можно составить запрос, который возвращает только те строки,
которые имеют поддерживаемые типы данных.
На этапе отладки также можно использовать утилиту по выдаче данных
запроса в консоль отладки (для проверки обработки запросов). Утилита взята из
свободных источников и служит для связи Access с SQL. Таким образом,
необходимо проверить работу запроса минимум три раза.
63
Утилита это называется q, принимает в качестве параметров сам запрос
(либо полностью в виде SQL, либо только название запроса или таблицы, главное,
чтобы это можно было открыть через CurrentDB.OpenRecordset), максимальную
ширину поля при выдаче (если поле больше оно обрезается, по умолчанию 10
символов) и максимальное количество записей (по умолчанию 100 записей), и
выдает в консоль содержимое результатов данного запроса в текстовом виде.
Данные по результатам проверки и отладки отправляются начальнику
информационной службы.
КОНЕЦ ИНСТРУКЦИИ
Данная инструкция должна использоваться для наладки информационной
системы в ФИПС.
На этапе контрольного примера рассмотрим реализацию на локальном ПК и
сформирован дамп базы данных сервера, представленный ниже.
Дамп базы данных в SQL
#
# DUMP FILE
#
# Database is ported from MS Access
#------------------------------------------------------------------
# Created using "MS Access to MySQL" form http://www.bullzip.com
# Program Version 5.5.282
#
# OPTIONS:
# sourcefilename=C:/Users/olga/Downloads/Архивный отдел ФИПС (1) (1).accdb
# sourceusername=
# sourcepassword=
# sourcesystemdatabase=
# destinationdatabase=movedb
# storageengine=MyISAM
# dropdatabase=0
# createtables=1
# unicode=1
Источник: https://baza.diplomsite.ru/previewfile/2054