Sau nhiều giờ cố gắng tìm ra cách tạo tài khoản người dùng chỉ có quyền truy cập vào 1 DB và chỉ có thể xem DB đó. Tôi nghĩ rằng tôi đã tìm ra nó !!!!
-
Tạo tài khoản người dùng ( đảm bảo tài khoản đó không được ánh xạ tới bất kỳ Cơ sở dữ liệu nào, nếu không bạn sẽ gặp lỗi cuối cùng Msg 15110, Cấp 16, Trạng thái 1 và lưu ý giải pháp được đề xuất )
USE [master] GO CREATE LOGIN [us4] WITH PASSWORD=N'123', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
-
Nhấp chuột phải vào phần trên của SQL (Tên SQLSERVER)>
Properties
>Permissions
> Nhấp vàouser account
và chọnDeny
để xem cơ sở dữ liệu.use [master] GO DENY VIEW ANY DATABASE TO [us4]
-
Nhấp chuột phải vào DB, Thuộc tính, Tệp mới được tạo và thay đổi Chủ sở hữu thành tài khoản mới được tạo. ( lưu ý quan trọng :
ALTER ROLE [db_owner] ADD MEMBER [us4]
không hoạt động )USE [dbname] GO EXEC dbo.sp_changedbowner @loginame = N'us4', @map = false
Tại thời điểm này, khi người dùng đăng nhập, anh ta sẽ thấy Master, tempdb và cũng sẽ thấy DB mới mà anh ta là Chủ sở hữu DB..Bạn có thể muốn đi tới Tools>Option
và bật tùy chọn ẩn các đối tượng hệ thống để bạn không hiển thị cái chính, tempdb, v.v. Bạn cũng có thể cần SP1 nếu tùy chọn này không hoạt động
Msg 15110, Level 16, State 1, Line 1
The proposed new database owner is already a user or aliased in the database.
giải pháp được đề xuất cho Msg 15110: để giải quyết lỗi trên, chỉ cần xóa người dùng khỏi nút bảo mật cơ sở dữ liệu và thử lại
Hy vọng điều đó sẽ giúp ...
Nikhil