Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 2
Регистрация: 11.10.2016
Сообщений: 15

MSSQL. Локальная БД и удаленная

19.12.2017, 16:57. Показов 2886. Ответов 31

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Написал я приложение вдохновленный музой, все запустил и внедрил. Пришла пора это приложение обслуживать выпускать какие-нибудь обновления и тут появилась засада.

Приложение работает с БД MSSQL 2014 в локальной сети организации. Простым смертным вносить изменения в БД не разрешено, но есть привилегированные сотрудники, кому это делать можно. Ну и пусть себе изменяют =) Вот только приложение умеет работать и с LocalDB MSSQL 2014, файлы *mdf и * log которой являются полной копией БД MSSQL 2014 в локальной сети. Такой функционал необходим для работы вне стен организации или же в том случае, когда подключиться к БД MSSQL 2014 в локальной сети нет возможности.
Логично, что самая актуальная БД - это БД на сервере в локальной сети (далее ЛС). Отсюда первый вопрос:

1. Как обеспечить актуальность содержимого локальной БД?

Попытки которые я предпринимал:
1. Экспорт данных в файл из БД в ЛС. Далее подключал LocalDB к локальному серверу на своем ПК, обновлял данные, отключал LocalDB. Пихал обновленные файлы LocalDB в репозиторий с обновлениями ПО, откуда пользователи обновлялись, заменяя более поздние файлы.

2. Тупо копировал файлы *mdf и * log нужной мне БД в репозиторий с обновлениями ПО, откуда пользователи обновлялись.

Оба варианта оказались не АЙС.... Первый, потому что сильно мудреный. Второй, потому что тупо скопировав файлы *mdf и * log приложение потом может не заработать из-за ошибки доступа MSSQL, что чаще всего и происходит. Отсюда второй вопрос:

2. Как должна быть организована логика такого рода приложения исходя из вашего опыта и навыков?

Я могу смириться с неудобствами, если я разрабатываю какие-нибудь изменения, сидя дома за ПК, при этом изменения коснулись структуры БД или её содержимого - ок! Напишу я скрипт, который выполнится в БД ЛС и все будет гут.
И задам третий вопрос:

3. Как более корректно копировать файлы *mdf и * log из БД в ЛС, чтобы потом их использовать в приложении для второго варианта работы в автономном режиме (без подключения к ЛС организации)?

Буду благодарен за Ваши ценные рекомендации по моим вопросам.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2017, 16:57
Ответы с готовыми решениями:

Не подключается удаленная БД - MSSQL
Добрый день. Проблема - есть сервер, на нем развернута БД (MSSQLSERVER 2012, не Express). Внутри локальной сети проблем с доступом к БД...

Переход с mssql Express 2008 R2 на mssql 2012
Уважаемые Гуру! Темы о mssql 2008 попадаются значительно чаще , чем о mssql 2012. Хочу перейти на 2012 enterprise. Есть ли...

Совместимость datetime в MSSQL 7 и MSSQL 2000
Господа, помогите разобраться. Такая ситуация, понаписал скриптов под SQL 7, перенесли на SQL 2000, возникла проблема с форматом datetime. ...

31
1 / 1 / 2
Регистрация: 11.10.2016
Сообщений: 15
20.12.2017, 14:08  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Kitniess Посмотреть сообщение
Пусть сервер делает бекап бд. А в приложении с local bd делай восстанрвлерие из бекапа
Вот это хорошо! только

Цитата Сообщение от Usaga Посмотреть сообщение
Если же речь о переиспользовании кода, который с оригинальной базой работает, то вы реально можете бэкап делать и разворачивать на локальном SQLExpress-сервере (один же чёрт, вы LocalDB ставите).
разве нельзя сделать восстановление, если установлен только SQLLocalDB? SQLExpress - это + 200МБ, не сильно круто ли для "Электронного каталога"? =)

я вот тут нарыл
https://stackoverflow.com/ques... mmatically
прокатит ли такой вариант?

А как бы Вы организовали логику подобного приложения, чтобы не попасть в такую ситуацию, как у меня? (у всех спросил =) )
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,895
20.12.2017, 14:14
makimu, я не знаю, можно ли восставить обычную базу в LocalDB. Я не уверен.

Цитата Сообщение от makimu Посмотреть сообщение
А как бы Вы организовали логику подобного приложения, чтобы не попасть в такую ситуацию, как у меня?
Я бы перегонял данные в другой формат, попроще. Специальный readonly для другого приложения и не грел бы голову.

Добавлено через 1 минуту
Т.е. в основном приложении (если таковое есть) добавил бы функциональность выгрузки данных. Выгружал бы в какой-нибудь XML, JSON или ещё что. Но уж точно не в MDF
1
 Аватар для Козадоев
165 / 155 / 33
Регистрация: 05.03.2013
Сообщений: 879
20.12.2017, 14:18
Цитата Сообщение от makimu Посмотреть сообщение
А как бы Вы организовали логику подобного приложения, чтобы не попасть в такую ситуацию, как у меня? (у всех спросил =) )
Если надо, чтоб юзеры работали локально. Но при этом их результаты нужно объединять в глобальную базу. То пусть так и работают.
Нужен отдельный сервис, который будет периодически сливать всю информацию с локальных баз в общую. И из общей обновлять в локальных.
Чтобы не было коллизий каждая запись снабжается ID пользователя и временем создания/изменения. Каждое изменение создает новую запись а не меняет старую. Таким образом хранится и история всех изменений, а записи не накладываются и не пересекаются.
1
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,895
20.12.2017, 14:20
Козадоев, да не, ТС-у нужен автономный read only каталог. Т.е. никаких изменений как в самой локальной базе так и никаких обратных мёржей в рабочую БД.
0
1 / 1 / 2
Регистрация: 11.10.2016
Сообщений: 15
20.12.2017, 14:25  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Я бы перегонял данные в другой формат, попроще. Специальный readonly для другого приложения и не грел бы голову.


Да, только я использую единый код для работы с данными. И если мне нужно поработать локально с localDB, к примеру, внести какие-нибудь правки, добавить/удалить таблицы и потом это все в приложении продебажить - думаю с XML, JSON у меня такое не совсем получится. Хотя у меня может не хватать навыка и каких-то знаний и я могу заблуждаться.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,895
20.12.2017, 14:29
makimu, ну это тоже не было бы проблемой, если бы ваш код был бы достаточно абстрагирован он механизма хранения.
0
 Аватар для Козадоев
165 / 155 / 33
Регистрация: 05.03.2013
Сообщений: 879
20.12.2017, 14:31
Цитата Сообщение от Usaga Посмотреть сообщение
Т.е. никаких изменений как в самой локальной базе так и никаких обратных мёржей в рабочую БД.
Тогда нужен конвертер базы. Из обычной в локальную. Делается когда надо и все кому надо копируют ее себе на места для чтения.
1
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,895
20.12.2017, 14:32
Козадоев, ага. Причём, даже не обязательно в базу. Можно и иначе представить данные.
0
 Аватар для Козадоев
165 / 155 / 33
Регистрация: 05.03.2013
Сообщений: 879
20.12.2017, 14:38
Самое простое установить SQL Server на локальные машины и восстановить с backub файла.
0
Эксперт .NET
 Аватар для Usaga
14736 / 9510 / 1364
Регистрация: 21.01.2016
Сообщений: 35,895
20.12.2017, 14:42
Или переписать Data Layer, чтобы научить работать не только с базой данный MSSQL. makimu, выбора тут не особо)
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
20.12.2017, 14:45
Цитата Сообщение от Usaga Посмотреть сообщение
Или переписать Data Layer, чтобы научить работать не только с базой данный MSSQL
+100500
0
1 / 1 / 2
Регистрация: 11.10.2016
Сообщений: 15
20.12.2017, 15:16  [ТС]
Ну что же, тему можно считать закрытой.

СпасиБО Usaga, Козадоев, hoolygan, insite2012, Kitniess, за то что не были равнодушными к проблеме.

На сегодняшний день приму версию создания backup средствами MSSQL и восстановления при помощи localDB, на англоязычных форумах пишут, что это можно сделать не устанавливая SQLExpress.

При будущих разработках буду учитывать возможность работы не только с MSSQL. А сейчас нет желания переписывать код для данного приложения. Все = экземпляр localDB сотрудники используют крайне редко.

Нет ничего более постоянного, чем временно перемотанное изолентой =)

Всем спасиБО!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2017, 15:16

Совместимость datetime в MSSQL 7 и MSSQL 2000
Господа, помогите разобраться. Такая ситуация, понаписал скриптов под SQL 7, перенесли на SQL 2000, возникла проблема с форматом datetime. ...

Перенос БД из MSSQL 6.5 на MSSQL 7.0
Как перенести базу с сервера 6.5 на сервер 7.0? Серверы стоят на разных компьютерах. В помощи написано, что можно с помощью DTS Import /...

Удаленная БД
Доброе время суток, уважаемые форумчане!!! Мне необходимо создать удаленную БД, но я не разу с этим не работал, по этому без понятия с...

Удаленная БД
Добрый день. Мне необходимо создать удаленную БД. Мне необходима такая БД, которая будет стоять на одном из ПК в локальной сети, и к ней...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru