Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Hỏi về ứng dụng kết nối SQL Server cho nhiều người dùng

    Cho mình khi nhiều user kết nối đến cùng 1 database thì làm sao biết được database đã bị thay đổi bởi người dùng.
    Ví dụ: User A và User B cùng kết nối đến Database SQL Server và cùng mở table1 ,làm sao User A biết được dữ liệu đã bị User B thay đổi trên table1 và dữ liệu vừa mới được User B thay đổi sẽ cập nhật qua bên User A.Mình đang bị bí ở chổ này,mong mọi người chỉ dẫn thêm cho mình,mình viết bằng ngôn ngữ C#.Net 2005 và SQL Server 2000

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    SqlServer có cơ chế lock, khi 1 table bị 1 user sử dụng thì nó sẽ lock lại, các thao tác từ các user khác sẽ phải đợi mới thực hiện được!

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Vậy là đâu có phương thức nào mà .Net hỗ trợ ta để biết được điều đó sau mấy pro.Nếu vậy là mình phải tự viết tay mấy phương thức đó sau.Nếu lock table thì bạn cho ví dụ và nói rõ hơn về ý tưởng đó đi.Có người nói mình dùng Trigger trong SQL,nhưng cũng ko nói rõ.Mà không biết trong Trigger có thể gọi hàm qua bên C# luôn ko ta.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    lấy 2 ý kiến của 2 bạn ở trên là giải quyết được đó.ok

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trigger là tạo bảng tự động khi mình thực hiện thao tác j đó(truy xuất nó jống như table thì fải), mà đơn jản vẫn là tạo cột user(hoặc tạo bảng log như itkttn).

    còn cái lock là gì vậy U? nói rỏ hơn xíu đc ko? do cơ chế auto của SQL hay mình thực hiện code cho nó, U nói lại nhe
    Cái này tự có, auto

    vi du trường hợp ngen: nếu UA vào table ở time 1, UB vào time 2, UA update lại table ở time 3, vậy UB phải rerfresh lại mí bt được ai đã sửa table đó đúng ko?
    Phải vậy rồi bạn à. Mình nghĩ trước khi user nào đó muốn modify db thì nên bấm nút refresh. Hoặc bạn làm sự kiện đưa chuột vào là tự động refresh db ( MouseHover event)

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi coldheart
    Theo mình thì nếu muốn bít chính xác user nào vừa thao tác với table đó, thì bạn nên tạo 1 column User. Khi user nào thao tác làm thay đổi table này, thì sẽ cập nhật tên đó vào col User
    vi du trường hợp ngen: nếu UA vào table ở time 1, UB vào time 2, UA update lại table ở time 3, vậy UB phải rerfresh lại mí bt được ai đã sửa table đó đúng ko? [IMG]images/smilies/dont_know.gif[/IMG]


    SqlServer có cơ chế lock, khi 1 table bị 1 user sử dụng thì nó sẽ lock lại, các thao tác từ các user khác sẽ phải đợi mới thực hiện được!
    còn cái lock là gì vậy U? nói rỏ hơn xíu đc ko? do cơ chế auto của SQL hay mình thực hiện code cho nó, U nói lại nhe [IMG]images/smilies/Surprised.gif[/IMG]

  7. #7
    Khi có user đăng nhập vào soft của bạn và thao tác với database thì bạn nê ghi log, có thể ghi ra file hoặc tạo bảng trong database.
    Bạn sẽ ghi những thông tin sau:
    username, ngày giờ,thao tác (thêm, xóa, sửa), table nào, dữ liệu mà người đó đã thao tác vào table.
    Tốt nhất là ghi ra file.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Theo mình thì nếu muốn bít chính xác user nào vừa thao tác với table đó, thì bạn nên tạo 1 column User. Khi user nào thao tác làm thay đổi table này, thì sẽ cập nhật tên đó vào col User

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •