Я взял на себя поддержку приложения VB .Net, которое использует базу данных Access. Теперь я обнаружил, что разработчик, который написал это приложение, не создал никаких уникальных индексов в столбцах первичного ключа для таблиц в базе данных. Таким образом, ни один из полей первичного ключа не помечен как первичный ключ в доступе, и поэтому Access не выполняет двойную проверку. Кроме того, столбцы первичного ключа не будут автоматически увеличиваться с использованием типа AutoNumber в Access, а разработчик использовал такие запросы, чтобы вставлять строки в таблицы:Пакетное обновление базы данных Access (DDL). Возможное?
INSERT INTO Пользователи (pkid, FirstName, Surname, City) SELECT iif (isnull (max (pkid)), 0, max (pkid)) + 1, [@strFirstName], [@strSurname], [@strCity], FROM Users;
Это приложение, как правило, работает как сетевое приложение, в котором одновременно используется приложение до 40 человек, и в сочетании с проблемами проектирования, которые уже упоминались, это привело к серьезным проблемам параллелизма, когда нескольким пользователям присваивается одинаковое значение первичного ключа. Это == БОЛЬШАЯ ПРОБЛЕМА. :(
Теперь мне нужно разобраться в этом (угадайте, что я буду делать в эти выходные!). Я подумал, что, возможно, используя мьютекс вокруг кода, который вызывает запросы вставки Access, а не самый простой из решения, но это было бы самым быстрым. В конечном счете, хотя я бы хотел, чтобы база данных была скорректирована и имела правильные значения первичного ключа, но приложение в настоящее время работает примерно на 15 разных сайтах, поэтому мне нужно сделать какую-то партию обновление базы данных
Я не знаком с Access (это первый раз, когда я пользуюсь Access), извините, если это немного вопрос о нобе, но мне нужно решение быстро. Если я была ли эта проблема с базой данных Sybase или MSSql, с которой я знаком, я бы создал пакет SQL, который включал необходимые DDL-команды для исправления базы данных. Поэтому возникает вопрос: возможно ли в Access создать SQL-скрипт, который можно запустить из пакетного файла? Если нет, как я могу начать создавать «патч», который может быть выполнен на разных сайтах, которые будут обновлять соответствующие базы данных.
Спасибо, Remou. Я поеду по этому маршруту. – BruceHill