Для совместного доступа к базе данных, просто поместите * .mdb файл в сеть поделиться и открыть его по сети. Я использую эту технику для примерно 15 пользователей сети, выходя за пределы этого или в местах с большим количеством трафика, я нажимаю на SQL Server.
Перенос на SQLServer - очень простая задача, особенно если вы используете компоненты dbGO (ADO), поскольку все, что потребуется, это изменение строки подключения для указания экземпляра SQL Server. Единственная проблема, с которой я столкнулась с таким преобразованием, - это логические поля. При доступе эти поля имеют внутреннее представление 0 или -1, а в SQL Server они имеют внутреннее представление 0 или 1. В Access они разрешаются как логические, в SQL Server этого нет. Например следующий запрос не в SQL Server:
SELECT * FROM TABLE WHERE BOOLFIELD
она должна быть переписана в виде:
SELECT * FROM TABLE WHERE BOOLFIELD <> 0
Все мои другие запросы работают должным образом ... за исключением даты/времени, которое Я предлагаю передать в качестве параметров и позволить драйверу обрабатывать перевод.
Процесс преобразования довольно прост. Используйте средство миграции для переноса базы данных доступа на SQL Server, а затем используйте базу данных сценариев SQL Server для создания сценария для вас. Либо предоставите этот сценарий своим клиентам для развертывания, сделайте это самостоятельно в каждом месте, либо напишите программу для синтаксического анализа и выполнения каждой команды, как считанной из файла.
Вы можете перенести данные из одной базы данных в другую через SQLServer с помощью метода OpenDataSource, а затем выполнить вставку из вашей базы данных доступа.
INSERT INTO TABLE FROM
OpenDataSource('Microsoft.Jet.OLEDB.4.0','Access.mdb')...TABLE
Другой вариант - перейти на n-Tier. Если у вас есть корпоративная версия Delphi, то ее не сложно перенести систему на истинное решение n-уровня с помощью TClientDatasets и написать несколько серверных функций. Конечно, пробег будет сильно зависеть от текущей компоновки вашего приложения и от того, насколько сложна система.
Я прочитал все ответы и до сих пор не понимаю ваш вопрос. Некоторые из ответов предполагают, что вы используете Access как интерфейс, а затем поднимаете вопрос о том, что делает Delphi в миксе. Я думаю, вы имеете в виду, что используете Jet MDB, а Access не задействован ни на одном уровне, и когда вы говорите: «Программа все равно должна работать под Ms Access (потому что портирование БД и переписывание приложения не может быть и речи) «вы имеете в виду, что вам нужно использовать заднюю часть производства Jet при разработке нового приложения, которое использует серверный конец. Но мне совершенно не ясно, каков ваш сценарий. –
Приложение Delphi управляет базой данных. Он использует стандартные компоненты ADO для Delphi для доступа к базе данных MDB. До сих пор база данных хранилась локально. Теперь приложение должно находиться на другом ПК, и оно будет по-прежнему использоваться для управления БД, однако другие клиенты должны подключиться к нему, а также изменить базу данных (не так много). И вопрос был «Каков правильный способ сделать это». Переписывающая часть означает, что перенос ее в систему БД, несовместимую с ADO, не является допустимым решением. – zz1433