Практика развертывания базы данных - PullRequest
5 голосов
/ 07 июня 2011

Я развернул много программного обеспечения для моих клиентов.В основном это приложения Window Forms.Вот моя текущая практика.

  1. Вручную установите SQLExpress и SQL Management Studio на каждый клиентский ПК.
  2. Затем используйте ClickOne для установки кода с сервера.
  3. Когда в коде произошли изменения, я буду использовать ClickOne для развертывания - (НЕТ ПРОБЛЕМЫ с этим шагом)
  4. Но что делать в столбце базы данных, что мне делать?

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

Мне трудно установить базу данных на клиентском ПК, поскольку это сильно затрудняет мою работу по отладке.Я думаю о переносе своей клиентской базы данных на хост на онлайн-сервере.Но это сопровождается следующими ограничениями:

  1. Что если интернет не работает?
  2. Что, если у моего клиента нет интернета?

Не могли бы вы помочь мне посоветовать?Это общая проблема, с которой сталкивается разработчик?Какова общая практика там?Помогает ли Window Azure или SQL CE?

Ответы [ 3 ]

1 голос
/ 07 июня 2011

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

  1. Попросите клиента загрузить свою копию базы данных обратно к вам. Это предоставит вам данные, которые у них есть, и вы сможете использовать их с отладочной копией кода для выявления проблем. Недостатком является то, что если база данных велика, это может быть проблемой при ее передаче.
  2. Пульт на машину клиента. Наблюдайте за системой удаленно, используя что-то вроде CoPilot . Таким образом, вы сможете увидеть, что происходит в естественной среде.

Возможно, есть и другие способы, но это пара хороших. Что касается использования онлайновой базы данных, это вариант, но он имеет свой собственный набор проблем. Вы упомянули пару. Что касается Azure, то он основан на облаке (онлайн), поэтому к нему будут применяться те же проблемы. SQL CE не поможет вам больше, чем ваша текущая установка.

Суть в том, что я бы порекомендовал вам поискать способы устранения одной проблемы (как указано выше) вместо создания нового набора проблем путем перехода к интернет-решению. Я бы порекомендовал переходить в Интернет только в том случае, если он решает более масштабные задачи бизнеса (например, мобильность). То же самое, что вы делали только в Интернете, вероятно, только усложнит жизнь.

Чтобы подытожить комментарии, приведенные ниже, поскольку они имеют отношение к данной проблеме, если вы выбираете между файловыми базами данных, которые не нужно физически устанавливать на машине, ваш лучший выбор, вероятно, между SQLite и SQL CE. Microsoft лучше поддерживает SQL CE, но это более крупный пакет и меньше возможностей, чем урезанный SQLite. Вот хорошее обсуждение различий:

https://stackoverflow.com/questions/2278104/sql-ce-sqlite-what-are-the-differences-between-them

Однако проблема усложняется, когда вы начинаете смотреть на linq2sql, поскольку он предназначен для SQL-сервера. Microsoft не поддерживает SQL CE с linq2sql из коробки, хотя есть обходной путь, который заставит его работать:

http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx

SQLite вообще не поддерживается с linq2sql, но есть способ использовать linq для общения с SQLite:

LINQ с SQLite (linqtosql)

Эта библиотека также поддерживает другие распространенные базы данных, включая MySQL и Firebird.

1 голос
/ 07 июня 2011

В зависимости от данных, я бы порекомендовал использовать SQL CE.Если данных не слишком много, скорость не является основной целью (CE медленнее, чем Express), и вам не нужны функции DB, не поддерживаемые CE (например, хранимые процедуры), это лучший выбор, IMHO, потому что:

  • Клиенту не требуется устанавливать полный SQL-сервер (упрощенная установка / развертывание)
  • У вас нет проблем с несколькими экземплярами SQLExpress
  • Ваше ПО не 'Не нужно беспокоиться, если даже есть экземпляр SQL
  • Меньше ресурсов, используемых на стороне клиента

Кроме того, клиенты могут отправить вам свой DB-файл SQL CE для проверки, и вы сделаете этоне нужно заходить на их сайт.

Относительно легко реализовать синхронизацию вне сайта с SQL CE и MS Sync FW.

0 голосов
/ 07 июня 2011

Вы можете использовать утилиту SQLCMD для выполнения сценария изменений, как упоминалось в этом связанном вопросе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...