ให้สิทธิ์ในการเลือกจากตารางระบบ


14

ฉันมีฐานข้อมูล Microsoft SQL Server 2008 r2 ผู้ใช้ชื่อ marie ถูกกำหนดผู้ที่สามารถเข้าถึงตารางในฐานข้อมูลหลัก มันใช้งานได้ดี ตอนนี้ฉันต้องการให้ marie สามารถทำแบบสอบถามนี้ได้:

SELECT resource_type,spid,login_time,status,hostname,program_name,nt_domain,nt_username,loginame
  FROM sys.dm_tran_locks dl
  JOIN sys.sysprocesses sp on dl.request_session_id = sp.spid

ตารางที่เกี่ยวข้องคือตารางต้นแบบ ฉันจะอนุญาตให้ marie อ่านจากพวกเขาได้อย่างไร ฉันได้ลองดำเนินการดังต่อไปนี้เป็น dbo:

GRANT ALL on sys.dm_tran_locks TO marie
GRANT ALL on sys.sysprocesses TO marie

ยังคงเมื่อ marie พยายามที่จะดำเนินการค้นหาข้างต้นข้อผิดพลาดคือ:

Msg 297, Level 16, State 1, Line 1
The user does not have permission to perform this action.

ผมทำอะไรผิดหรือเปล่า?


นอกจากนี้คุณควรใช้sys.dm_exec_requests, sys.dm_exec_sessionsฯลฯsysprocessesเป็นมุมมองที่เข้ากันได้ย้อนหลังและจะถูกลบออกจากผลิตภัณฑ์ในบางจุด
Aaron Bertrand

คำตอบ:


25

มุมมองระบบต้องการสถานะที่สูงขึ้นเล็กน้อยในการดูเนื่องจากมุมมองกว้าง คุณจะต้องการGRANT VIEW SERVER STATEสิ่งนี้:

GRANT VIEW SERVER STATE TO marie;

นี่คือลิงค์ไปยังคู่มือ: msdn.microsoft.com/en-us/library/ms188754%28v=sql.105%29.aspx
a_horse_with_no_name

@a_horse_with_no_name ขอบคุณกำลังมองหาสิ่งนั้นอยู่ :) เพิ่มลิงก์เพื่อตอบ
Mike Fal

สิ่งนี้ไม่ได้รับการสนับสนุนใน Azure SQL db - ฉันจะบรรลุสิ่งที่เท่าเทียมกันได้อย่างไร
tommed

1
ลองGRANT VIEW DATABASE STATEดู
Mike Fal

บางตารางภายใต้แน่นอนสามารถเลือกได้จากที่ได้รับอนุญาตเท่านั้นที่เลือกของฐานข้อมูลเดียวเช่นsys sys.indexes
John
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.