2009-03-31 5 views
5

SQL Server Compact 3.5 데이터베이스에서 스키마를 관리하기위한 아이디어를 구현하기위한 좋은 해결책을 찾고 있습니다.SQL Server Compact - 스키마 관리

SQL Server Express, SQL Server Standard, SQL Server Enterprise에서 스키마를 관리하는 몇 가지 방법을 알고 있지만 Compact Edition에서는 동일한 방법을 사용하는 데 필요한 도구를 지원하지 않습니다.

제안 사항이나 요령이 있으십니까?


래퍼웨어 소프트웨어가있는 100 개 이상의 클라이언트에 해당하는 것으로 확장해야합니다. 시스템이 변경됨에 따라 새 바이너리와 함께 클라이언트에 업데이트 스크립트를 게시해야합니다. 클라이언트에게 스크립트 파일을 건네고 "SSMSE에서 실행"이라고 말하지 않고도이를 게시 할 수있는 적절한 방법을 찾고있었습니다. 대부분의 고객은 그런 짐승을 할 수 없습니다.

친구 중 한 명은 내 작업의 SQL Server 조각을 처리하는 방법에 대한 부분 스크립트를 공개했지만 Compact Edition에서는 사용하지 않았습니다. 내가 이걸 위해 혼자있을 것처럼 보입니다.

제가 생각하기에, "괴짜 한 주"가 필요합니다. WiXNAnt이 어떻게 작동하는지와 같은 도구를 작성하여 쓰기 만하면됩니다. 작업을 처리 할 수있는 지나친 XML 문서.

내가 가치 있다고 생각한다면 CodePlex 및/또는 The Code Project에 게시 할 예정입니다. 이전에 수행 한 작업에 대한 개념을 더 잘 이해하기 위해 두 사이트를 모두 사용했기 때문입니다. 조금 줄여주는 것이 가치가 있다고 생각하십시오.


편집 2010년 5월 3일에 :

누군가가 "이름"이 프로젝트는, 나는 그렇게는 CodePlex에 MS SQL에 대한 쓴 더러운/불쾌한 버전을 업로드 것이다 기꺼이 경우 SQL Compact의 해킹을 시작할 수 있습니다. 필자는 계획중인 초기 응용 프로그램의 다음 개정판으로 소프트웨어가 Installable 패키지에서 Silverlight 응용 프로그램으로 변환되기 때문에 SQL Compact를 포기하고 저장소에 XML 파일을 사용하려고합니다. Silverlight는 더 나은 액세스 전략을 제공합니다.

답변

0

어떤 임의의 생각

  1. Microsoft Sync Framework이 하나 개의 옵션입니다 (확실하지 나는 완전히 불구하고 응답 할 수 있습니다). 처음으로 처음 배포 한 후에는 어떤 일을 할 수 있는지 충분히 알 수있는 기회가 없었습니다 (제대로 작동하는 것 같습니다). 그것의 MSDN 사이트가 있습니다 here

  2. 당신은 모바일 장치에서 스크립트를 실행할 수 있지만 SQL Management Studio와 같은 것을 통하지는 않습니다. 그래서 이론적으로 T-SQL 스크립트를 관리/유지할 수 있지만 아래쪽에는 T - SQL이 뒤얽힌 것 (CE의 명령문을 지원에) 나는 실행을 "자동화"할 수있는 방법을 모른다 -하지만 동기화 프레임 워크는 어떤 대답을 잡고 있습니다 ..

+1

Sync Framework를 사용하면 SQL Server의 전체 복사본과 데이터의 위성 복사본간에 데이터를 이동하는 것입니다. 모바일 개발을 담당하는 사람들은 소프트웨어가 발전함에 따라 데이터베이스 변경을 어떻게 처리합니까? –

+0

AFAIK도 스키마 변경 사항을 처리 할 수 ​​있습니다. – RobS

+0

"할 수 있습니다."하지만 Fx가 작동하는 방식은 매우 지저분합니다. 수행중인 작업에 따라 실제로 스키마를 변경하려면 새 스키마로 테이블을 다시 작성하고 이전 테이블의 데이터를 새 테이블로 이동하고 기존 테이블을 삭제하고 새 테이블의 이름을 바꿔야합니다. : –

0

당신의 주요 기준 중 하나가려고하는 경우 작은 파이프를 통해 효율적으로 작업하려면 DB 스키마 버전 (어쨌든 CMS에 체크인 된 스크립트에 묶여 있음)을 저장하고 업데이트가 필요할 때 변경 스크립트를 와이어 및 순서로 적용됩니다.DB에 로그를 유지하고 이러한 스크립트를 적용하여 연결 해제, 재부팅 및 기타 잠재적으로 불쾌한 문제를 정상적으로 처리 할 수 ​​있습니다.

-2

SQL Server Management Studio는 어떤 용도로 사용됩니까?
http://technet.microsoft.com/en-us/library/ms172933.aspx

+0

Damian .. 게시물을 읽은 것 같지 않습니다. 이 명확한 ... 100 + 클라이언트에 업데이트 스크립트를 게시 할 필요가 ... 응용 프로그램을 나를 위해 업데이트를 처리 할 수있는 방법이 필요합니다. 실제로 XML을 사용하여 내 자신의 메서드를 빌드하기로 결정했습니다. 그래서 nAnt 및 WiX와 같은 도구에서와 같은 성능을 발휘합니다. 이전에는 아무도 이런 작업을 해 본 적이 없기 때문에 ... 사본을 도르며 내 용도에 맞게 편집하고 완료 할 수는 없습니다. –

+0

@RichardB 내 대답은 * 당신이 당신의 질문을 수정하기 전에 * 추가되었습니다. 100 대 이상의 기계에서이 작업을 수행해야했기 때문에, 나는 그 게시물을 읽었습니다. 나는 정상적으로 이것과 같은 코멘트에 다시 오지 않을 것이다. 그러나 나는 결과로서 두 개의 투표를 받았다. 그것은 가장 적은 것을 말하기 위해 성가신 다. –

+0

사과. 나는 똑같은 것을 얻었고 그것을 깨달았어야한다. 위의 설명을 삭제하여 불에 타지 않도록 할 수있는 방법을 알고 있습니까? 나는 한 두번 나 자신을 얻었다. –

2

나는 현재 Migrator.Net을 조사 중이다. 이렇게하면 마이그레이션이라고하는 데이터베이스의 변경 사항을 C#에서 직접 작성할 수 있습니다.
이러한 마이그레이션에는 간단한 테이블 추가/삭제, 열 수정, 복잡한 데이터 업데이트 코드가 포함될 수 있습니다.

응용 프로그램이 부팅 될 때 데이터베이스가 현재 어떤 버전인지 확인하고 최신 상태로 유지하는 데 필요한 마이그레이션을 적용 할 수 있습니다. 이 모든 것은 자동으로 처리됩니다. 나는 컴팩트 지원 (는 기본 스키마가 dbo가 있다고 가정)와 몇 가지 사소한 문제가 있어요

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

로 :이 업데이트를 실행하는 코드는 간단합니다. 그러나 나는 그것들을 고치는 것이 너무 어려울 것이라고 생각하지 않는다.

+0

그 모습이 데이터베이스 독립적 인 솔루션이라고 생각하면 올인원 모두 멋지다. 나는 그것을 실제로 볼 필요가 있습니다. –

+0

관련하여 어떤 업데이트가 있습니까? –

+0

나는 한동안 Migrator.Net을 사용 해왔다. 프로젝트는 포기되었지만 제대로 작동합니다. 나는 약간의 변화를 만들었는데, 대부분 프로젝트가 구체적이다. Compact에서 버그를 수정하는 것은 쉬운 일로 드러났지만, 그 이후로 SQLite로 마이그레이션했습니다. 누군가에게 유용하면 github에 내 업데이트를 게시 할 수 있습니다. – oillio

관련 문제