Перенос приложения базы данных Access 2007 в SQL Server 2005 с использованием SSMA - проблемы - PullRequest
2 голосов
/ 02 марта 2009

Мне удалось запустить и запустить SQL Server 2005 Express на моем компьютере. Хорошо, чтобы провести некоторое тестирование, прежде чем пытаться выполнить это в «реальном мире».

У меня довольно большое приложение базы данных MS Access 2007, которое мне нужно перенести на SQL Server. сохраняя «Front End» в качестве пользовательского интерфейса. (Приложение уже является разделенной базой данных с передним и задним концом ....)

Я провел начальное тестирование использования SSMA для переноса моей базы данных Access в SQL. Сервер Экспресс.

Очевидно, я не понимаю некоторые вещи, и я думал, что увижу, если у кого-то есть любые идеи.

Концептуально я подумал, что должно было случиться, что база данных, которая находится на сервере, должна быть перенесена на сервер SQL а затем интерфейсная часть снова связывается с (теперь связанными с SQL) таблицами в серверной части.

Когда я делаю это с использованием SSMA, я получаю переименованные таблицы в Back End Доступ к файлу, который выглядит как «SSMA $ myTableNameHere $ local». Я также получить исходные имена таблиц, отображаемых в виде связанных таблиц ODBC.

Пока все хорошо.

НО .... Когда я иду, чтобы восстановить связанные таблицы из ПЕРЕДНЕГО КОНЦА ( пользовательский интерфейс) все, что я вижу, это имена "SSMA $ myTableNameHere $ local" НЕ оригинальные имена таблиц. (теперь связаны через ODBC) Я могу ссылаться на таблицы "SSMA ,,,,", но это будет означать изменение имен каждая таблица в каждом запросе и в каждой форме и во всем коде на фронте Конец! Не то, что я действительно хочу сделать.

SO ....

Я думал, что попробую перенести ПЕРЕДНЮЮ КОНЕЦ и посмотреть, что произойдет.

Что я закончил, так это ситуация, когда, в основном, это работает (есть некоторые серьезные ошибки и проблемы, на которые я еще даже не смотрел ... как отсутствующие данные и т. д. !!!!) и я все еще получаю «SSMA $ myTableNameHere $ local» таблицы и связанные таблицы ODBC с исходными именами.

Я пытаюсь понять ...... Значит ли это, что мы сделаем Миграция во внешнем интерфейсе, а затем просто скопируйте один и тот же файл каждому пользователю компьютер

Другой вопрос, который меня немного смущает, это то, что я не могу связать через ODBC в SQL Server Express на локальном компьютере (т.е. на моем компьютере), поэтому я не могу проверить перенести Back End, а затем связать с таблицами через Front End, как я иметь в прошлом больше в ситуации клиент / сервер.

Ответы [ 6 ]

2 голосов
/ 03 марта 2009

Предполагая, что SSMA заменяет таблицы в вашем внутреннем интерфейсе ссылками на SQL Server, все, что вам нужно сделать, это удалить исходные ссылки на таблицы в вашем внешнем интерфейсе и импортировать вновь созданные ссылки на таблицы с задней части . Затем вы можете отказаться от серверной части, поскольку она больше ни для чего не используется.

1 голос
/ 19 июля 2011

Я перенес все свои таблицы одну за другой в SQL Server 2005 из базы данных Access с помощью ODBC.Instruction: БД с открытым доступом (бэкэнд) Щелкните правой кнопкой мыши на столе, вам нужно перенести Прокрутите раскрывающийся список и выберите Базы данных ODBC. Откроется диалоговое окно «Выбор источника данных», нажмите кнопку «Создать» Открыто диалоговое окно создания нового источника данных Прокрутите вниз и выберите SQL Server, нажмите кнопку Далее. Присвойте имя своему источнику данных, нажмите «Далее», «Готово» Откроется диалоговое окно «Создать новый источник данных» Дайте некоторое описание ИЛИ оставьте пустым, введите Имя вашего SQL Server (вы назвали его при установке SQL Server на вашем компьютере) Нажмите Далее, Нажмите Далее Установите флажок "изменить базу данных по умолчанию на флажок Выберите БД, куда вы хотите перенести данные Нажмите Далее, нажмите Готово ПРИМЕЧАНИЕ. Вам нужно создать новую БД (пустую) на SQL Server, прежде чем делать все это Теперь: щелкните правой кнопкой мыши любую таблицу, выберите «Экспорт», выберите из выпадающего списка ODBC, в окне «Источники данных» выберите источник данных, который вы создали, нажмите «ОК». Используйте SQL Server с SQL Management Studio Express. Все даты должны иметь маску ввода; Весь текст и заметка должны иметь значение «Разрешить нулевую длину» = Да После всего отсоедините все ссылки от Access back-end и установите ссылки из SQL.RENAME на все вновь связанные таблицы со старыми именами. Используйте пользовательский интерфейс Fron-end, пока не сделаете что-то новое.

0 голосов
/ 28 марта 2009

Использование SSMA отличается, когда вы используете odbc. Если у вас есть приложение, использующее полный доступ (бэкенд и фронтэнд). Вы можете манипулировать объектами, легко ограничивая формы, используя DAO и т. Д. Без проблем, тогда, когда вам нужно перенести базу данных на сервер SQL, вы можете использовать непосредственно odbc (связывая себя с серверами SQL), ssma, ... основная проблема как сохранить ограниченные формы, запросы, код на стороне клиента. Если вы используете непосредственно odbc, вы должны заново связать все объекты и изменить код, но если вы используете ssma, вам ничего не нужно делать, вы продолжите работать так же, как и раньше. Проблема с SSMA заключается в том, как развернуть клиентский интерфейс на стороне клиента, если вы разработали клиентскую часть в другом месте, используя другой сервер sql?

0 голосов
/ 10 марта 2009

Честно говоря, теперь, когда вы мигрировали, вам нужно посмотреть на дизайн ваших таблиц. По моему опыту, мастера миграции Access плохо выбирают правильный тип данных. Например, если у вас есть памятное поле, вы можете легко использовать поле varchar, но последний использованный мной мастер (более ранняя версия) всегда преобразовывал их в текстовые поля. Теперь также пришло время рассмотреть некоторые исправления, такие как создание полей даты datetime вместо символьного, если у вас была эта ошибка в прошлом.

Я бы никогда больше не подумал об использовании мастера для переноса данных, если бы знал, как сильно они могут это сделать.

Вы также обнаружите, что простого преобразования данных в SQL Server часто бывает недостаточно, чтобы реально повысить производительность. Вам нужно будет протестировать все запросы и подумать, сможете ли вы вместо этого преобразовать их в хранимые процедуры, если они медленные. Устранение перевода с Jet SQL на T-sql может быть улучшением производительности. Кроме того, существует множество функций t-sql, которые могут улучшить производительность, но не имеют эквивалентов Access. Доступ к настройке производительности невелик, но чтобы получить выгоду от настройки производительности с бэкэндом SQL Server, вам нужно написать конкретные запросы для SQL Server. Индексирование необходимо учитывать, если таблицы Access не были правильно проиндексированы.

0 голосов
/ 10 марта 2009

Я бы укусил пулю и переименовал таблицы на стороне SQLServer обратно в понятные имена, которые вы имели в исходной базе данных. У вас, вероятно, будет меньше проблем. Особенно, если у вас есть встроенный код на стороне MS Access.

Что касается того, как вы сейчас развернете сторону MS Access, то должно быть достаточно создать ссылку ODBC на рабочей станции пользователя и скопировать файл MS Access на его рабочий стол (хотя вы можете создать MDE (или эквивалент 2007 года), чтобы предотвратить его случайное нарушение).

0 голосов
/ 03 марта 2009

Простите, что у меня недостаточно знаний о Acronym Soup, но я предполагаю, что SSMA - это «мастер импорта данных» SQL Server 2005 или мастер в Access для отправки данных на SQL Server. Похоже, что вы отправили данные на SQL Server из Access - то, что вы не хотите делать. Вы хотите использовать DTS в SQL Server (теперь он называется SSIS или что-то в этом роде?) Для импорта данных в SQL Server. Тогда вы будете иметь свои таблицы в SQL Server. Затем просто создайте запись DSN для SQL Server и заново свяжите ваши таблицы. Все должно быть хорошо.

В целом, общее правило заключается в импорте таблиц Access с использованием SQL Server вместо использования Access для отправки данных на SQL Server.

...