भूमिका के लिए db_denycustomer
, मैं केवल ग्राहक तालिका का स्तंभ कोड चयन योग्य होना चाहता हूं, और दूसरों में से कोई भी नहीं। तो मैंने ऐसा किया:
DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer
... और यह ठीक काम करता है। ठंडा! लेकिन, क्यों ?
मैंने संबंधित लेखों में जो पढ़ा है वह अनुमतियाँ स्टैक है, लेकिन DENY
पूर्वता लेता है। इसके विपरीत, मेरे मामले में, ऐसा लगता है कि अंतिम अनुमति "क्वेरी" ने पूर्वता ले ली। निश्चित रूप से पर्याप्त है, अगर मैं उन्हें रिवर्स ऑर्डर में निष्पादित करता हूं, तो बाद DENY
वाला कोड कॉलम भी छुपाता है।
क्या आप इस बारे में विस्तार से बता सकते हैं?
मैंने उस उपयोगकर्ता को डिफ़ॉल्ट db_datawriter
और db_datareader
भूमिकाएं भी शामिल की हैं जिनके साथ मैंने परीक्षण किया था।