मैं एक प्रोग्रामर हूं, डीबीए नहीं ... मुझे पता है कि खतरनाक होना ही काफी है।
मुझे विरासत वाले उपयोगकर्ता के साथ एक डेटाबेस विरासत में मिला है जो डेटाबेस के लिए db_owner है। हम व्यावसायिक कारणों से मौजूदा तालिकाओं, स्कीमा, आदि के लिए इस उपयोगकर्ता की अनुमति को समायोजित नहीं कर सकते हैं, लेकिन कुछ नए तालिकाओं का निर्माण किया जा रहा है, और मैं केवल यही चाहता हूं कि इस उपयोगकर्ता का चयन उन पर हो।
इन तालिकाओं के लिए इस उपयोगकर्ता के लिए अनुमतियां निर्धारित की गई हैं ताकि सब कुछ अस्वीकृत हो जाए, सिवाय चुने के, जो कि GRANT पर सेट है।
फिर भी जब यह उपयोगकर्ता (डबडमिन) इन तालिकाओं में से किसी एक (SELAudit) पर एक चयन करने का प्रयास करता है, तो यह त्रुटि होती है:
The SELECT permission was denied on the object 'AccountingAudit', database 'billing', schema 'dbo'.
मैंने इस एसक्यूएल को चलाने की कोशिश की है और यह देखने के लिए कि इस तालिका / उपयोगकर्ता के लिए क्या अनुमतियाँ निर्धारित हैं:
select object_name(major_id) as object,
user_name(grantee_principal_id) as grantee,
user_name(grantor_principal_id) as grantor,
permission_name,
state_desc
from sys.database_permissions
और यह वही है जो मुझे वापस मिलता है:
AccountingAudit dbadmin dbo ALTER DENY
AccountingAudit dbadmin dbo CONTROL DENY
AccountingAudit dbadmin dbo DELETE DENY
AccountingAudit dbadmin dbo INSERT DENY
AccountingAudit dbadmin dbo REFERENCES DENY
AccountingAudit dbadmin dbo SELECT GRANT
AccountingAudit dbadmin dbo TAKE OWNERSHIP DENY
AccountingAudit dbadmin dbo UPDATE DENY
AccountingAudit dbadmin dbo VIEW DEFINITION DENY
AccountingAudit dbadmin dbo VIEW CHANGE TRACKING DENY
ऐसा लगता है कि यह सही काम करना चाहिए?
मैं जो सेलेक्ट कॉल कर रहा हूं वह SSMS के भीतर से एक बहुत ही बेसिक सेलेक्ट * अकाउंटिंग अडिट है। मैं कोई विशेष sp_executesql या ऐसा कुछ नहीं कर रहा हूँ।
मैंने स्पष्ट रूप से अनुमति देने की कोशिश की है:
GRANT SELECT ON [dbo].AccountingAudit TO dbadmin
इसका कोई प्रभाव नहीं है (यह क्यों होगा, पहले से ही ऊपर दी गई क्वेरी यह बताती है!; ;-)
मैंने stackoverflow.com के माध्यम से और अन्य जगहों पर खोज की है, और मुझे अभी तक कोशिश नहीं की गई कुछ भी नहीं मिल सकता है। मुझे आश्चर्य है कि अगर स्कीमा सेटअप के साथ कुछ करना है। (इस बिंदु पर मैं स्कीमा के बारे में बहुत कम जानता हूं।)
कोई विचार? धन्यवाद!