2009-03-31 14 views
5

Szukałem od jakiegoś czasu dobrego rozwiązania, aby zaimplementować ideę zarządzania schematem w bazie danych SQL Server Compact.SQL Server Compact - Zarządzanie schematami

Znam kilka sposobów zarządzania schematem na SQL Server Express, SQL Server Standard, SQL Server Enterprise, ale wersja Compact Edition nie obsługuje niezbędnych narzędzi wymaganych do korzystania z tej samej metodologii.

Wszelkie sugestie/porady?


Powinienem to rozwinąć, aby powiedzieć, że jest on przeznaczony dla ponad 100 klientów z oprogramowaniem wrapperware. W miarę zmiany systemu muszę publikować skrypty aktualizacji wraz z nowymi plikami binarnymi dla klienta. Szukałem przyzwoitej metody publikowania tego bez konieczności wręczania klientowi pliku skryptu i mówienia "Uruchom to w SSMSE". Większość klientów nie jest w stanie zrobić takiej bestii.

Mój kolega ujawnił częściowy skrypt dotyczący obsługi zadania SQL Server, ale nigdy nie pracował na Compact Edition. Wygląda na to, że będę sam za to.

To, co postanowiłem zrobić, i będzie potrzebować "tygodnia geeków" do wykonania, to napisać narzędzie podobne do tego, jak działa WiX i NAnt, więc mogę po prostu napisać nadgorliwy dokument XML do obsługi pracy.

Jeśli uważam, że warto, opublikuję go na CodePlex i/lub The Code Project, ponieważ wykorzystałem obie strony, aby lepiej zrozumieć koncepcje zadań, które wykonałem w przeszłości, i myślę, że prawdopodobnie warto trochę oddać.


Edycja na 03.05.2010:

Jeśli ktoś jest chętny do „nazwa” projekt, będę przesyłać brudną/paskudną wersję Pisałem dla MS SQL do CodePlex tak że może uda nam się zacząć hackowanie wersji SQL Compact. Chociaż, myślę, że przy kolejnej wersji początkowej aplikacji, którą planowałem, zamierzam zrezygnować z SQL Compact i po prostu użyć plików XML do przechowywania, ponieważ oprogramowanie jest konwertowane z pakietu instalacyjnego na aplikację Silverlight. Silverlight daje lepszą strategię dostępu.

Odpowiedz

0

kilka przypadkowych myśli (nie wiem, mogę w pełni odpowiedzieć choć)

  1. Microsoft Sync Framework jest jedna opcja. Nie miałem szansy, aby w pełni docenić, co może zrobić, gdy już wdrożyłeś go po raz pierwszy (co wydaje się działać dobrze). Istnieje witryna MSDN dla niego here

  2. Możesz wykonywać skrypty na urządzeniu mobilnym, ale nie przez coś takiego jak SQL Management Studio, więc teoretycznie możesz zarządzać/utrzymywać skrypty T-SQL, ale wadą jest to, że T -SQL zostanie zwinięty (CE obsługiwany wypowiedzi), a ja nie znam sposobu na „automatyzację” wykonanie - ale Sync Framework może posiadać kilka odpowiedzi ..

+1

Używanie struktury synchronizacji ... to jest przenoszenie danych między pełnowymiarową kopią serwera SQL a satelitarną kopią danych. Mój punkt widzenia brzmiał, w jaki sposób użytkownicy mogą wprowadzać zmiany w bazach danych dotyczących rozwoju mobilnego, gdy ich oprogramowanie ewoluuje? –

+0

Możesz także AFAIK obsługiwać zmiany schematu z nim również – RobS

+0

"Możesz", ale jest to bardzo niechlujna propozycja ze sposobem działania Fx. Aby dokonać zmian schematu, w zależności od tego, co robisz, musisz odtworzyć tabelę z nowym schematem, przenieść dane ze starej tabeli do nowej, usunąć istniejące i zmienić nazwę nowego. :( –

0

Jeśli jeden z kluczowych kryteriów będzie aby pracować efektywnie nad małą rurką, jedynym prawdziwym wyborem jest przechowywanie wersji DB Schema (może jakoś powiązana ze skryptami zaznaczonymi w twoim CMS) i kiedy wymagana jest aktualizacja, skrypty zmian są wysyłane drut i stosowane w kolejności.Prawdopodobnie będziesz chciał zachować dziennik w twoim DB, jak również te skrypty są stosowane, abyś mógł z wdziękiem obsługiwać rozłączenia, restarty i inne potencjalnie nieprzyjemne problemy.

-2

Czy program SQL Server Management Studio jest dla Ciebie przydatny?
http://technet.microsoft.com/en-us/library/ms172933.aspx

+0

Damian .. Nie sądzę, że przeczytałeś post ... i może muszę zrobić to jaśniej ... Potrzebuję opublikować skrypty aktualizacji dla ponad 100 klientów ... Potrzebuję sposobu, aby aplikacja mogła obsłużyć aktualizacje dla mnie Tak naprawdę zdecydowałem się na zbudowanie własnej metody, używając Xml, dzięki czemu działa podobnie do tego, co masz w narzędziach takich jak nAnt i WiX, po prostu jest do bani, że nikt nigdy tego nie robił ... że nie mogę po prostu snipować kopii, edytować na mój użytek, i skończyć z nią. –

+0

@RichardB Moja odpowiedź została dodana * przed * zmodyfikowałeś swoje pytanie, aby wspomnieć, że musiałem to zrobić na ponad 100 maszynach, więc tak, zrobiłem * przeczytałem post. Zwykle nie powracałbym takim komentarzem, ale wydaje mi się, że w rezultacie otrzymałem kilka głosów w dół, co jest denerwujące. –

+0

przeprosin. Dostaję to samo i nie mogłem tego zrozumieć. Czy znasz jakiś sposób, że mogę usunąć powyższy komentarz, abyś nie został spalony? Zdobyłem to raz lub dwa razy sam. –

2

Obecnie szukam w Migrator.Net. Umożliwia to zapisywanie zmian w bazie danych, zwanych migracjami, bezpośrednio w języku C#.
Migracje te mogą zawierać wszystko, od prostych dodatków/zrzutów tabel, modyfikacji kolumn, po skomplikowany kod aktualizacji danych.

Po uruchomieniu aplikacji może sprawdzić, w jakiej wersji aktualnie znajduje się baza danych i zastosować migrację, która jest wymagana do aktualizacji. Wszystko to jest obsługiwane automatycznie. Kod do uruchomienia tej aktualizacji jest tak proste, jak:

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

Mam kilka drobnych problemów z obsługą Compact (zakłada schemat domyślny jest dbo). Ale nie sądzę, że będzie to zbyt trudne, aby je naprawić.

+0

To całkiem fajne all-in-all, biorąc pod uwagę, że wygląda na rozwiązanie niezależne od bazy danych. Może naprawdę muszę na to spojrzeć. –

+0

czy masz jakieś aktualizacje w związku z tym? –

+0

Używam Migrator.Net przez pewien czas. Projekt jest porzucony, ale działa mi dobrze. Wprowadziłem pewne zmiany, większość z nich jest specyficzna dla projektu. Naprawienie błędu w Compact okazało się łatwe, ale od tego czasu przeszedłem na SQLite. Mogę zamieścić moje aktualizacje na Github, jeśli będą one przydatne dla kogoś. – oillio

Powiązane problemy