2010-08-03 40 views
7

tôi muốn xây dựng một ứng dụng nhỏ bật lên thông báo khay (hoặc cửa sổ bật lên bánh mì nướng hoặc thứ gì đó) bất cứ khi nào cập nhật hoặc chèn vào bảng nhất định trong cơ sở dữ liệu máy chủ SQL.khay thông báo cập nhật cơ sở dữ liệu

Cách đơn giản nhất để làm điều này vì tôi muốn tránh bỏ phiếu nếu có thể?

+0

câu trả lời tốt dưới đây, mặc dù tôi muốn nói bỏ phiếu mà thực sự là cách đơn giản nhất. Nó có nhược điểm của nó, đôi khi khá nghiêm trọng nhược điểm, nhưng phức tạp không phải là một trong số họ. –

Trả lời

7

Query Notifications. Đây là tính năng SQL Server cho phép ứng dụng đăng ký các thông báo được đẩy từ máy chủ khi dữ liệu được thay đổi. Nó thường được sử dụng thông qua lớp SqlDependency.

Gần đây tôi đã đăng LinqToCache project cho phép bạn thêm các thông báo dựa SqlDependency và huỷ bỏ hiệu lực bộ nhớ cache để truy vấn LINQ:

var query = (from r in ctx.table select r).AsCached(
"table", new CachedQueryOptions() { 
    OnInvalidated = (sender, args) { 
     // the query was invalidated, data has changed 
     // refresh display or notify user 
    } 
}); 
2

Các thủ tục được lưu trữ mở rộng là những gì tôi nghĩ trước tiên, và có lẽ là giải pháp tôi muốn sử dụng nếu tôi muốn chạy ứng dụng giám sát trên chính Máy chủ SQL. Nhưng tôi đoán đó không phải là trường hợp.

Tôi khuyên bạn nên sử dụng MSMQ như một lớp trung gian, bản thân tôi, vì nó đi kèm với mọi phiên bản Windows trong những ngày này và ít nhiều được thiết kế riêng cho loại thứ này. Vì vậy, đi qua các lớp, ở đây, bạn có:

  1. UPDATE và INSERT gây nên trên bàn của bạn nhất định, mà gọi ...
  2. ... một assembly .NET (bổ sung sử dụng tích hợp CLR), trong đó ...
  3. ... đặt thông báo mô tả chèn/cập nhật vào hàng đợi MSMQ trên máy chủ, ...
  4. ... được ứng dụng khay của bạn nhận, bất cứ nơi nào đang chạy ...
  5. ... và sau đó được hiển thị.

Có mẫu mã để truy cập vào MSMQ từ SQL Server ở đây: http://www.codeproject.com/KB/database/SqlMSMQ.aspx

+0

+1, nhưng bài viết nói rằng cách tốt nhất để làm điều đó là sử dụng CRL, và đó là chỉ có sẵn từ SQL Server 2005 – Unreason

+0

Bình luận công bằng, tôi nên đã đề cập đến điều đó. Để mở rộng, bạn * cũng có thể sử dụng kỹ thuật này bằng cách sử dụng thủ tục được lưu trữ mở rộng để gọi MSMQ xếp hàng thông báo chèn/cập nhật của bạn và vẫn nhận được lợi ích nếu ứng dụng giám sát của bạn chạy trên máy từ xa . Nhưng, thẳng thắn, nếu bạn đang ở trên SQL 2005 hoặc sau đó và do đó có thể làm điều đó theo cách CLR, tôi mạnh mẽ đề nghị bạn làm theo cách đó. Việc thực hiện dễ dàng hơn nhiều. :) Cảm ơn! – Cerebrate

Các vấn đề liên quan