PDA

View Full Version : Hỏi về lock database hoặc set lại connection trong SQL Sever



tuanpq
05-11-2006, 12:49
Mình muốn hỏi có cách này lock tạm thời database ko cho các máy khác cập nhật hay thêm mới dữ liệu trong SQL Server hay không. Hoặc là giới hạn số connection đến máy chủ SQL ngoại trừ máy của mình connect đến máy chủ. Vì mình muốn xử lý một lượng dữ liệu rất lớn, nên tạm thời phải ngắt kết nối của các máy khác đến máy chủ để chờ cho khi xữ lý xong thì mới cho phép kết nối lại. Ai có biết về vấn đề này xin chỉ giáo. Thanks.

lannguyen
05-11-2006, 14:23
Bạn có thể dùng GRANT để cấp quyền cho guest chỉ được select data thôi

tuanpq
05-11-2006, 17:12
Không, tất cả các máy đều sử dụng chung một account có toàn quyền đối với database (ví dụ database A).

xbacala
06-11-2006, 06:38
Thế thì simple. chỉ cần lock cái acct của ứng dụng, còn mình dùng sa hay account khác để xử lý dữ liệu.

tuanpq
06-11-2006, 11:51
Trên acc của ứng dụng thì có xây dựng chức năng phân quyền, mỗi acc trên ứng dụng chỉ cho phép truy xuất một phần trên database. Tuy nhiên một lúc nào đó, người có acc admin trên ứng dụng cần update toàn bộ dữ liệu ở database trên diện rộng, nếu không lock database hoặc ko giới hạn lại số connection thì những acc khác trên ứng dụng sẽ truy xuất vào và gây lỗi tại quá trình update. Ứng dụng xây dựng cho phép nhiều máy kết nối đến CSDL cùng một lúc, trên CSDL thì mình chỉ có một acc toàn quyền trên Database A mà mình tạo, ko có quyền của acc sa hay bất kỳ acc nào khác.

vqt
06-11-2006, 13:02
Hi,

Bạn vào Enterprise Manager chọn Database\Properties\Options. Thiết lập Access như mong muốn.

tuanpq
06-11-2006, 18:56
Không, tui muốn lock or set connection = các lệnh, hoặc store proc của SQL Server Analyzer mà thôi.

xbacala
06-11-2006, 21:04
You có thể set các option này cho datbase:

- Chỉ cho phép: only members of the db_owner, dbcreator, or sysadmin roles can use the database
ALTER DATABASE [Your_DB] SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE

- Only one user at a time can access the database
ALTER DATABASE [Your_DB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE


- Returns the database to its normal operating state
ALTER DATABASE [Your_DB] SET MULTI_USER WITH ROLLBACK IMMEDIATE


Còn muốn disable/enable user login:
EXEC sp_denylogin 'your_login_name'
EXEC sp_grantlogin 'your_login_name'

tuanpq
10-11-2006, 17:53
thanks bác xbacala, tui sẽ thử xem.

tuanpq
14-11-2006, 09:04
hi again, cách của bác xbacala đúng là rất hay, chỉ cho phép 1 user kết nối đến trong một thời điểm nhưng đồng thời cũng chỉ cho phép user đó mở một kết nối đến thôi, nhưng mình lại cần nhiều kết nối cho 1 user đó, hix, hết cách xem ra phải ngắt mạng rồi tiến hành cập nhật vậy.

Anyway, thanks all for helping me.

tieuthanhdu
04-05-2008, 10:49
Mình muốn hỏi có cách này lock tạm thời database ko cho các máy khác cập nhật hay thêm mới dữ liệu trong SQL Server hay không. Hoặc là giới hạn số connection đến máy chủ SQL ngoại trừ máy của mình connect đến máy chủ. Vì mình muốn xử lý một lượng dữ liệu rất lớn, nên tạm thời phải ngắt kết nối của các máy khác đến máy chủ để chờ cho khi xữ lý xong thì mới cho phép kết nối lại. Ai có biết về vấn đề này xin chỉ giáo. Thanks.

cho mình hỏi lock datbase là gì vậy? các bác nào biét thì giúp mình với. và cho mình cxin luôn tài liệu nhe