Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm thế nào để tìm tên đăng nhập, tên người dùng cơ sở dữ liệu hoặc vai trò của người dùng miền sqlserver không có thông tin đăng nhập của riêng họ?

Tôi hiểu rằng thông tin đăng nhập Người dùng miền được ánh xạ vào nhóm QUẢNG CÁO?

Bạn phải nhớ rằng người dùng có thể thuộc một số nhóm AD và mỗi nhóm có thể được ánh xạ bằng cách nào đó trong cơ sở dữ liệu, điều này có thể hơi lộn xộn. Ngoài ra, nó có nghĩa là bạn cần một cái gì đó có nhiều kết quả :)

Hãy thử điều này:

select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1

Tôi nghĩ rằng nó sẽ lấy đúng tất cả các thông tin đăng nhập Windows Group sẽ được ràng buộc với những người dùng cụ thể. Sau đó, bạn có thể tham gia nó cho người dùng cơ sở dữ liệu, tức là:

Select u.name from YourDB.sys.syslogins l
inner join YourDB.sys.sysusers u
on l.sid = u.sid
where l.loginname = ANY (select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1)

Bạn phải ghi nhớ rằng - bằng mọi cách - bạn có thể cần phải xử lý các tập hợp toàn bộ thay vì xử lý các giá trị đơn lẻ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nối hai cấu trúc bảng giống hệt nhau với dữ liệu khác nhau

  2. Cách thực hiện một thủ tục được lưu trữ bên trong một truy vấn chọn

  3. Truy vấn T-SQL để hiển thị định nghĩa bảng?

  4. Tại sao và khi nào một mệnh đề LEFT JOIN với điều kiện trong mệnh đề WHERE không tương đương với cùng một LEFT JOIN trong ON?

  5. Làm thế nào để thực thi một thủ tục được lưu trữ MSSQL với Thư viện PHP ADOdb?