สำหรับบทบาท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
บทบาทให้กับผู้ใช้ที่ฉันทดสอบด้วย