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

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

19.12.2017, 16:57. Показов 2824. Ответов 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
14353 / 9456 / 1360
Регистрация: 21.01.2016
Сообщений: 35,644
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
14353 / 9456 / 1360
Регистрация: 21.01.2016
Сообщений: 35,644
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
14353 / 9456 / 1360
Регистрация: 21.01.2016
Сообщений: 35,644
20.12.2017, 14:29
makimu, ну это тоже не было бы проблемой, если бы ваш код был бы достаточно абстрагирован он механизма хранения.
0
 Аватар для Козадоев
165 / 155 / 33
Регистрация: 05.03.2013
Сообщений: 879
20.12.2017, 14:31
Цитата Сообщение от Usaga Посмотреть сообщение
Т.е. никаких изменений как в самой локальной базе так и никаких обратных мёржей в рабочую БД.
Тогда нужен конвертер базы. Из обычной в локальную. Делается когда надо и все кому надо копируют ее себе на места для чтения.
1
Эксперт .NET
 Аватар для Usaga
14353 / 9456 / 1360
Регистрация: 21.01.2016
Сообщений: 35,644
20.12.2017, 14:32
Козадоев, ага. Причём, даже не обязательно в базу. Можно и иначе представить данные.
0
 Аватар для Козадоев
165 / 155 / 33
Регистрация: 05.03.2013
Сообщений: 879
20.12.2017, 14:38
Самое простое установить SQL Server на локальные машины и восстановить с backub файла.
0
Эксперт .NET
 Аватар для Usaga
14353 / 9456 / 1360
Регистрация: 21.01.2016
Сообщений: 35,644
20.12.2017, 14:42
Или переписать Data Layer, чтобы научить работать не только с базой данный MSSQL. makimu, выбора тут не особо)
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
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
Ответ Создать тему
Новые блоги и статьи
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru