2009-03-31 7 views
5

Tôi đã tìm kiếm một thời gian để có giải pháp tốt để triển khai ý tưởng quản lý lược đồ trên cơ sở dữ liệu SQL Server Compact 3.5.SQL Server Compact - Quản lý lược đồ

Tôi biết một số cách quản lý giản đồ trên SQL Server Express, Chuẩn SQL Server, SQL Server Enterprise, nhưng Compact Edition không hỗ trợ các công cụ cần thiết cần thiết để sử dụng cùng một phương pháp.

Bất kỳ đề xuất/mẹo nào?


Tôi nên mở rộng điều này để nói rằng nó dành cho hơn 100 khách hàng có phần mềm bao bọc. Khi hệ thống thay đổi, tôi cần xuất bản các tập lệnh cập nhật cùng với các tệp nhị phân mới cho ứng dụng khách. Tôi đã tìm kiếm một phương pháp phong nha mà theo đó để xuất bản này mà không cần phải chỉ tay khách hàng một tập tin kịch bản và nói "Chạy này trong SSMSE". Hầu hết khách hàng không có khả năng làm một con thú như vậy.

Một người bạn của tôi đã tiết lộ một phần kịch bản về cách xử lý phần SQL Server trong nhiệm vụ của mình, nhưng chưa bao giờ làm việc trên Compact Edition. Có vẻ như tôi sẽ tự mình làm việc này.

Những gì tôi nghĩ rằng tôi đã quyết định làm, và nó sẽ cần một "tuần geek" để hoàn thành, là viết một số loại công cụ giống như cách WiXNAnt hoạt động, để tôi có thể viết một tài liệu XML quá mức để xử lý công việc.

Nếu tôi nghĩ rằng nó đáng giá, tôi sẽ xuất bản nó trên CodePlex và/hoặc The Code Project vì tôi đã sử dụng cả hai trang web một chút để hiểu rõ hơn về các khái niệm cho công việc tôi đã làm trong quá khứ và nghĩ rằng nó có lẽ đáng giá để trả lại một chút.


Chỉnh sửa trên 2010/05/03:

Nếu ai đó sẵn sàng "tên" dự án, tôi sẽ tải lên các phiên bản bẩn/khó chịu mà tôi đã viết cho MS SQL để CodePlex để có lẽ chúng ta có thể bắt đầu hack một phiên bản của SQL Compact. Mặc dù, tôi nghĩ với bản sửa đổi tiếp theo của ứng dụng ban đầu mà tôi đang lên kế hoạch, tôi sẽ loại bỏ SQL Compact và chỉ sử dụng các tệp XML để lưu trữ, vì phần mềm đang được chuyển đổi từ gói có thể cài đặt thành ứng dụng Silverlight. Silverlight chỉ cung cấp một chiến lược truy cập tốt hơn.

Trả lời

0

một vài suy nghĩ ngẫu nhiên (không chắc chắn tôi hoàn toàn có thể trả lời mặc dù)

  1. các Microsoft Sync Framework là một lựa chọn. Tôi đã không có cơ hội để hoàn toàn đánh giá cao những gì nó có thể làm một khi bạn đã triển khai nó sau lần đầu tiên ban đầu (mà dường như làm việc tốt). Có một trang web MSDN cho nó here

  2. Bạn có thể thực hiện các kịch bản trên một thiết bị di động, nhưng không thông qua một cái gì đó giống như SQL Management Studio, vì vậy về mặt lý thuyết bạn có thể quản lý/duy trì kịch bản T-SQL nhưng xuống bên là T -SQL sẽ phức tạp (để báo cáo CE của hỗ trợ) và tôi không biết một cách để "tự động" thực hiện - nhưng khung Sync có thể giữ một số câu trả lời ..

+1

Sử dụng khung đồng bộ hóa ... đó là di chuyển dữ liệu giữa bản sao SQL Server đầy đủ và bản sao dữ liệu vệ tinh. Quan điểm của tôi là những người phát triển di động xử lý các thay đổi cơ sở dữ liệu khi phần mềm của họ phát triển như thế nào? –

+0

Bạn cũng có thể AFAIK xử lý các thay đổi lược đồ với nó cũng là – RobS

+0

Bạn "Có thể", nhưng một đề xuất rất lộn xộn với cách thức hoạt động của Fx. Để thực sự thực hiện thay đổi lược đồ, phụ thuộc vào những gì bạn đang làm, bạn phải tạo lại bảng với giản đồ mới, di chuyển dữ liệu từ bảng cũ sang bảng mới, xóa hiện có và đổi tên mới. :( –

0

Nếu một trong những tiêu chí quan trọng của bạn sẽ để làm việc hiệu quả trên một đường ống nhỏ, lựa chọn duy nhất bạn có là lưu trữ phiên bản lược đồ DB (có thể bằng cách nào đó liên kết với các tập lệnh được kiểm tra trong CMS của bạn) và khi cần cập nhật, các kịch bản thay đổi sẽ được gửi qua dây và áp dụng theo thứ tự.Bạn có thể muốn giữ một bản ghi trong DB của bạn cũng như các kịch bản được áp dụng để bạn có thể xử lý một cách duyên dáng ngắt kết nối, khởi động lại và các vấn đề tiềm ẩn khó chịu khác.

-2

SQL Server Management Studio có sử dụng cho bạn không?
http://technet.microsoft.com/en-us/library/ms172933.aspx

+0

Damian .. Tôi không nghĩ rằng bạn đã đọc bài đăng ... và có lẽ tôi cần phải thực hiện điều này rõ ràng hơn ... Tôi cần xuất bản các tập lệnh cập nhật lên 100+ ứng dụng khách ... Tôi cần một cách để ứng dụng có thể xử lý các bản cập nhật cho tôi Tôi đã quyết định xây dựng phương pháp riêng của mình, sử dụng Xml, Nó thực sự giống như những gì bạn có trong các công cụ như nAnt và WiX Nó chỉ hút mà không ai từng làm điều này trước đây ... rằng tôi không thể chỉ chụp một bản sao, chỉnh sửa để sử dụng và được thực hiện với nó. –

+0

@RichardB Câu trả lời của tôi đã được thêm * trước * bạn đã sửa đổi câu hỏi của mình để đề cập đến bạn cần thiết để làm điều này trên hơn 100 máy, vì vậy có, tôi đã * đọc bài đăng. Tôi sẽ không bình thường trở lại trên một bình luận như thế này, nhưng có vẻ như tôi đã nhận được một vài phiếu xuống như vậy, điều này gây phiền nhiễu khi nói ít nhất. –

+0

xin lỗi. Tôi nhận được điều tương tự, và không phải đã nhận ra nó. Bạn có biết bất kỳ cách nào mà tôi có thể thanh lọc các bình luận ở trên để bạn không bị đốt cháy? Tôi đã nhận được rằng một lần hoặc hai lần bản thân mình. –

2

Tôi hiện đang xem xét Migrator.Net. Điều này cho phép bạn ghi các thay đổi vào cơ sở dữ liệu của bạn, được gọi là di chuyển, trực tiếp trong C#.
Những di chuyển này có thể chứa mọi thứ từ các bổ sung/bảng đơn giản, sửa đổi cột, thành mã cập nhật dữ liệu phức tạp.

Khi ứng dụng của bạn khởi động, nó có thể xác minh phiên bản cơ sở dữ liệu hiện đang sử dụng và áp dụng bất kỳ di chuyển nào được yêu cầu để cập nhật. Tất cả điều này được xử lý tự động. Mã để chạy bản cập nhật này đơn giản như:

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

Tôi đang gặp một vài vấn đề nhỏ với hỗ trợ Nhỏ gọn (nó giả định lược đồ mặc định là dbo). Nhưng tôi không nghĩ sẽ quá khó để sửa chúng.

+0

Đó là khá mát mẻ tất cả-trong-tất cả, xem xét rằng có vẻ là một giải pháp cơ sở dữ liệu độc lập. Tôi thực sự có thể cần phải nhìn vào đó. –

+0

bạn có bất kỳ cập nhật nào liên quan đến điều này không? –

+0

Tôi đã sử dụng Migrator.Net một thời gian. Dự án bị bỏ rơi, nhưng nó hoạt động tốt cho tôi. Tôi đã thực hiện một số thay đổi, hầu hết trong số họ dự án cụ thể. Sửa lỗi với Compact đã trở nên dễ dàng, mặc dù tôi đã chuyển sang SQLite kể từ đó. Tôi có thể đăng các cập nhật của mình lên github nếu chúng hữu ích cho ai đó. – oillio