Member 14898617 Ответов: 3

Публикация winform подключенной к базе данных access на сетевом диске


Hello all , 

I have created a winform application which is currently in my C drive(desktop) connected to access database which is also present in bin/debug of my winform source folder.

Now i want to 

publish this in a network drive where two users can open this form and enter data .

When i go to publish folder my database name is not showing in application files , hence i am not able to connect to it .

please help how to publish this application.

I have attached my app.config which i think might help you providing me a solution.
<pre lang="xml"> <?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsFormsApp1.Properties.Settings.TrialConnectionString"
            connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Trial.accdb"
            providerName="System.Data.OleDb" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>


Что я уже пробовал:

Кроме того , у меня нет мастера настройки проекта, поэтому я попробовал опубликовать его прямым методом Project-publish-and publish wizard

3 Ответов

Рейтинг:
25

OriginalGriff

Здесь есть три проблемы:
1) Вы действительно не хотите использовать Access в качестве многопользовательской базы данных. Да, да - вы мочь .. но это не значит, что это хорошая идея. Каждый раз, когда я это делал, он возвращался, чтобы укусить меня и вызвать некоторые реальные проблемы. Если вам нужна многопользовательская база данных, используйте серверную систему, такую как Sql Server или MySql - они предназначены для этого, и это делает жизнь намного проще.
2) проблема, которую вы заметили, есть ... Каталог данных должен находиться на локальном компьютере: компьютере, на котором запущено приложение, а не на компьютере, содержащем приложение на сетевом диске. Поэтому, если вы не хотите, чтобы каждый пользователь имел свою собственную отдельную версию БД (а это обычно кошмар для управления, как только они начинают обновлять и вставлять), вам нужно будет поместить БД в папку, до которой каждый может добраться, вероятно, через подключенный диск, и изменить строку подключения, чтобы ссылаться на этот диск, папку и файл для каждого пользовательского компьютера.
3) Вы очень, очень определенно не хотите, чтобы БД хранилась на вашем dev-компьютере, и уж точно не в папке dev: вы идете, чтобы внести изменения, вы тестируете его, и ... он опустошает стол. Это сбивает с толку других пользователей и занимает некоторое время, чтобы разобраться. Машины Dev работают на копии производственной БД (или копии только с тестовыми данными / анонимизированными данными (живые данные-плохая идея с точки зрения GDPR POV).

Я бы настоятельно рекомендовал посмотреть на центральную установку SqlServer с отдельной установкой на вашем компьютере разработчика для тестирования, а не использовать доступ вообще.


Рейтинг:
17

Dave Kreskowiak

Вы не хотите, чтобы база данных Access была частью вашего развертывания.

Почему? Ну, когда вы опубликуете следующую версию своего приложения, развертывание перезапишет базу данных на вашем сетевом диске, уничтожив данные, которые уже там есть.

Кроме того, доступ ужасен в многопользовательской среде. Первоначально он был спроектирован и построен как "настольная", или однопользовательская, база данных. Многопользовательская поддержка была наложена на него сверху. У вас будут проблемы, и вам, черт возьми, лучше иметь резервные копии базы данных, желательно на ежедневной основе, потому что время от времени вам нужно будет ее восстанавливать.

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

Техническое обслуживание-это тоже заноза в заднице. Когда вам нужно обновить базу данных, вы не можете просто скопировать новый файл базы данных поверх старого. Вы сделаете это случайно, и вам придется восстанавливать данные из резервной копии. Ты ведь делал резервные копии каждый день, верно? Кроме того, когда вы обновите базу данных, все, кто использует приложение, должны будут выйти из него, прежде чем вы сможете это сделать.


Рейтинг:
1

Member 14898617

Большое вам спасибо за ваши предложения ..сейчас я создаю базу данных SQl для того же самого.