SQL Server Compact - управление схемами - PullRequest
5 голосов
/ 31 марта 2009

Я некоторое время искал хорошее решение для реализации идеи управления схемой в базе данных SQL Server Compact 3.5.

Я знаю несколько способов управления схемой в SQL Server Express , SQL Server Standard, SQL Server Enterprise, но Compact Edition не поддерживает необходимые инструменты, необходимые для использования той же методологии.

Есть предложения / советы?


Я должен расширить это, чтобы сказать, что это для 100+ клиентов с программным обеспечением. По мере изменения системы мне нужно публиковать сценарии обновления вместе с новыми двоичными файлами для клиента. Я искал достойный метод, чтобы опубликовать это без необходимости просто передать клиенту файл сценария и сказать «Запустите это в SSMSE». Большинство клиентов не способны сделать такого зверя.

Мой собеседник раскрыл частичный скрипт о том, как справиться с SQL Server, в части моей задачи, но никогда не работал в Compact Edition. Похоже, я буду сам по себе для этого.

Я думаю, что я решил сделать, и для этого потребуется неделя гиков, это написать какой-то инструмент, очень похожий на то, как WiX и NAnt работает, так что я могу просто написать переусердствующий документ XML для обработки работы.

Если я сочту это целесообразным, я опубликую его на CodePlex и / или Project Code , потому что я немного использовал оба сайта, чтобы лучше понять концепции рабочих мест, которые я сделано в прошлом, и я думаю, что стоит отдать немного назад.


Изменить на 5/3/2010:

Если кто-то захочет «назвать» проект, я загружу грязную / неприятную версию, написанную для MS SQL, в CodePlex, чтобы, возможно, мы могли начать взламывать версию SQL Compact. Хотя, я думаю, что со следующей редакцией первоначального приложения, которое я планировал, я собираюсь отказаться от SQL Compact и просто использовать XML-файлы для хранения, поскольку программное обеспечение преобразуется из устанавливаемого пакета в приложение Silverlight. Silverlight дает лучшую стратегию доступа.

Ответы [ 4 ]

2 голосов
/ 28 апреля 2010

Я сейчас просматриваю Migrator.Net . Это позволяет вам записывать изменения в вашу базу данных, называемые миграциями, непосредственно в C #.
Эти миграции могут содержать все: от простых добавлений / удалений таблиц, модификаций столбцов до сложных кодов обновления данных.

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

Assembly asm = Assembly.Load("LocalModels.migration");
Migrator m = new Migrator("SqlServerCe", "Data Source=LocalModels.sdf", asm, false);
m.MigrateToLastVersion();

У меня есть пара незначительных проблем с поддержкой Compact (предполагается, что по умолчанию используется схема dbo). Но я не думаю, что их будет слишком сложно исправить.

0 голосов
/ 06 мая 2009

Если один из ваших ключевых критериев будет работать эффективно на небольшом канале, единственный реальный выбор, который у вас есть, - это сохранить версию схемы БД (возможно, как-то привязанную к сценариям, проверенным в вашей CMS), и когда обновление Сценарии изменений отправляются по проводам и применяются по порядку. Возможно, вы захотите сохранить журнал в вашей БД, а также применять эти сценарии, чтобы вы могли корректно обрабатывать отключения, перезагрузки и другие потенциально неприятные проблемы.

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

Вам пригодится SQL Server Management Studio?
http://technet.microsoft.com/en-us/library/ms172933.aspx

0 голосов
/ 31 марта 2009

некоторые случайные мысли (не уверен, что я могу ответить полностью)

  1. Microsoft Sync Framework является одним из вариантов. У меня не было возможности полностью оценить, что он может сделать после того, как вы развернули его после первого запуска (что, кажется, работает нормально). Для этого есть сайт MSDN здесь

  2. Вы можете выполнять сценарии на мобильном устройстве, но не через что-то вроде SQL Management Studio, поэтому теоретически вы можете управлять / поддерживать сценарии T-SQL, но недостатком является то, что T-SQL будет запутанным на поддерживаемые заявления CE), и я не знаю, как «автоматизировать» выполнение - но Sync Framework может содержать некоторые ответы ..

...