सिस्टम तालिकाओं से चयन करने की अनुमति दें


14

मेरे पास एक डेटाबेस Microsoft SQL Server 2008 r2 है। मैरी नामक उपयोगकर्ता को परिभाषित किया गया है, जो मुख्य डेटाबेस पर तालिकाओं तक पहुंच सकता है; यह अच्छा काम करता है। अब, मैं चाहूंगा कि मेरी इस क्वेरी को करने में सक्षम हो:

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

इसमें शामिल टेबल मास्टर टेबल हैं; मैं उनसे शादी करने की अनुमति कैसे दूं? मैंने पहले ही निम्नलिखित को dbo के रूप में निष्पादित करने का प्रयास किया:

GRANT ALL on sys.dm_tran_locks TO marie
GRANT ALL on sys.sysprocesses TO 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एक पश्चगामी संगतता दृश्य है और कुछ बिंदु पर उत्पाद से निकाल दिया जाएगा।
हारून बर्ट्रेंड

जवाबों:


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 धन्यवाद, उसी की तलाश में था। :) उत्तर के लिए लिंक जोड़ा गया।
माइक फाल

यह Azure SQL db में समर्थित नहीं है - मैं यहाँ समकक्ष कैसे प्राप्त करूं?
tommed

1
कोशिश करो GRANT VIEW DATABASE STATE
माइक फाल

के तहत कुछ तालिकाओं sysको वास्तव में किसी एकल डेटाबेस की केवल चुनिंदा अनुमतियों से चुना जा सकता है, जैसे कि sys.indexes
जॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.