коллекционирую причины проблем при переходе MDB -> MSSQL
АлексейК
Дата: 03.06.2004 09:37:01
Всем привет!
подвернулась работка по переводу на MSSQL. не хотелось бы ударить в грязь лицом.
интересуют
именно проблемы связанные с переносом данных (таблиц),
то есть что нужно проверить перед тем как делать экспорт данных.
пока знаю следующие:
1 Размер связанных полей
если связь по текстовому в одной таблице размер 50 а в другой 100 то связь в MDB работает , но при экспорте будет ошибка.
2 тип дата. Дата не должна быть раньше чем 1 января 1900 года.
3 нельзя, чтоб название таблицы или запроса начиналось цифрами
может еще кто с чем сталкивался?
хочу написать код который проверит данные перед экспортом.
Hummer
Дата: 03.06.2004 10:34:17
2 АлексейК
Да вроде больше ничего - если дело ограничивается таблицами:)
По крайней мере, больше не сталкивался ни с чем, хотя причина может в том, что мдб были вылизаны:)
Senin Viktor
Дата: 03.06.2004 11:12:41
ну если еще только добавить: не забыть установить последние обновления на акес, сиквел и мдак :)
Shuhard
Дата: 03.06.2004 11:14:09
ну и уж Dump Master сделать
Rivkin Dmitry
Дата: 03.06.2004 11:27:36
По поводу даты - я не согласен. Дату меньше чем 1 января 1900 года сервер переварит. К примеру, если есть поле времени, в мдб оно в действительности хранится как 1899/12/30 10:15:33, при переносе в MSSQL оно таким же и сохранится. Я плохо понимаю почему в Microsoft сделали две родные базы данных с нулевой датой, отличающейся на 2 дня, но то что сделано, уже сделано.
Теперь нужно учитывать, что если понадобится получить полную дату (день и час) в MSSQL она окажется отличной от действительности на 2 дня, т.е.
03/06/2004 + 1899/12/30 10:15:33 = 01/06/2004 10:15:33
После перехода к MSSQL нужно быть осторожным при создании таблиц средствами MSSQL, которые будут линковаться к Акцесу: нельзя выбирать типы полей, которые не поддерживаются Акцесом, а поля типа бит всегда должны быть с default, AutoNumber - only Int = Long from Access
мдя
Дата: 03.06.2004 11:54:39
| | автор |
| | плохо понимаю почему в Microsoft сделали две родные базы данных |
MS SQL не "родная". Это клон Sybase SQL (с выкупом прав, переделкой и прочей историей)
neal
Дата: 03.06.2004 12:01:04
Если я правильно понял - твоя задача
перенести таблицы из MDB на MSSQL Server 2000
в базу MDB вставить связанные таблицы через ODBC.
ИМХО,
хорошо зарекомендовала такая последовательность действий:
1) создание Database на MSSQL под логином Administrator,
выставление порядка сортировки Cyrillic_CI_AI (без чувствительности к регистру) если нужно.
2) Экспорт таблиц лучше производить через DTS (MSSQL-ный).
3) Потом пройти по всем и проверить все поля, поставить их констрейты и дефольные значения, расставить первичные ключи, связи между таблицами. Создать индексы где нужно.
Тут нужно очень внимательно. Можно сделать скрипт.
Таблицы без ключа могут перестать обновляться из Access'а.
Таблицы со сложным ключем - медленны в работе (при добавлении/удалении/изменении ключевых полей).
4) Сразу надо быть готовым к тормозам в тех местах где сложные запросы или алгоритмы с обновлением. Так что если база боевая - то надо будет быстро переписать их как вьюхи или ввиде хранимых процедур.
Вьюхи подключить как связанные таблицы.
Хранимые процедуры вызывать через ADO.
5) Правильно раздать права и настроить ODBC-коннекшен на всех машинах.
6) Создание связанных таблиц(вьюшек) в Access'е.
На все про-все может уйти несколько часов (пока с базой никто не работает), либо спокойно подготовить структуру на сервере и написать DTS-конвертаций данных (полностью или только новых после последнего экспорта).
Успехов!
neal
Дата: 03.06.2004 12:02:50
Да и связь по текстовому полю (хоть 1 хоть 50 символов) - очень медленная, лучше использовать целые числа.
Hummer
Дата: 03.06.2004 12:10:57
2 neal
А после всего этого начинаем переписывать код для адп проекта:)
И ещё, я думаю, что Алексей это всё знает:)
АлексейК
Дата: 03.06.2004 13:05:20
я тут отбегал...
неожидал что столько наотвечают.
всем спасибо за участие!!
2 Rivkin Dmitry
| | автор |
| | По поводу даты - я не согласен. Дату меньше чем 1 января 1900 года сервер переварит |
я сам не пробовал, но была статья микрософт вроде при попытке экспорта таких дат - ошибка. вероятно это происходит при экспорте не средствами dts а мастером аксесса, кроме того народ в форум писал. вот я взял на заметку.
neal
| | автор |
| | хорошо зарекомендовала такая последовательность действий: создание Database на MSSQL под логином Administrator, выставление порядка сортировки Cyrillic_CI_AI (без чувствительности к регистру) если нужно. |
имеется ввиду лучше использовать windows-аутентификацию и предварительно создать базу QA именно с этим колейшеном вместо использования мастера dts?
что касается остальных действий по провеке связей и оптимизации индексов, вьюшек и хранимок это все понятно, сейчас ставится задача перенести данные чтоб при процедуре экспорта не было ошибок.