การโพสต์สิ่งนี้เป็นคำตอบเพียงเพราะมันยาวเกินไปสำหรับความคิดเห็นและเพราะมันจะเกี่ยวข้องกับผู้ใช้คนอื่นในไม่ช้า
SQL Server 2014 เพิ่มสิทธิ์ระดับเซิร์ฟเวอร์ใหม่บางอย่างที่จะช่วยในสถานการณ์ประเภทนี้อย่างแน่นอน - พวกเขาได้รับการออกแบบโดยคำนึงถึงการตรวจสอบ แต่ความต้องการประเภทนี้ดูเหมือนจะพอดีกับใบเรียกเก็บเงินเช่นกัน คุณสามารถเพิ่มสองสิทธิ์ต่อไปนี้ในการเข้าสู่ระบบในระดับเซิร์ฟเวอร์:
CONNECT ANY DATABASE
SELECT ALL USER SECURABLES
ก่อนหน้านี้ฟังดูเหมือนจะอนุญาตให้ล็อกอินเชื่อมต่อกับฐานข้อมูลใด ๆ สิ่งที่ดีเกี่ยวกับสิ่งนี้คือมันจะยอมให้สิ่งนี้แม้สำหรับฐานข้อมูลที่สร้างขึ้นในอนาคต (หากคุณไม่ได้ตั้งค่าการปฏิเสธอย่างชัดเจนซึ่งเป็นวิธีที่คุณสามารถป้องกันฐานข้อมูลผู้ใช้บางอย่างจากการเข้าสู่ระบบที่มีสิทธิ์นี้) หลังอนุญาตให้เข้าสู่ระบบเพื่อดำเนินการอ่านในฐานข้อมูลใด ๆ ที่พวกเขาสามารถเข้าถึง - เพื่อให้พวกเขาสามารถSELECT
จากตารางมุมมอง UDF ฯลฯ แต่พวกเขาจะไม่สามารถดำเนินการใด ๆUPDATE
(ฉันไม่ได้ทดสอบว่าสิทธิ์นี้เข้าใจเมื่อ กระบวนงานที่เก็บไว้ดำเนินการ DML) เหล่านี้ที่ดีในการทำงานรวมกันถ้าคุณต้องการที่จะให้เข้าสู่ระบบที่เปิดกว้างการเข้าถึงแบบอ่านไปยังเซิร์ฟเวอร์ทั้งหมดหรือจะเป็นเม็ดเล็กที่คุณสามารถให้แบบดั้งเดิมCONNECT
สิทธิพิเศษไปยังฐานข้อมูลบางอย่างและSELECT ALL USER SECURABLES
เจตจำนงทางขวาเท่านั้นทำงานสำหรับฐานข้อมูลเหล่านั้นที่การเข้าสู่ระบบมีการเข้าถึงอย่างชัดเจน
การเปลี่ยนแปลงด้านความปลอดภัยในปี 2014 มีการจัดทำเป็นเอกสารไว้ที่นี่ - บางส่วน; พวกเขาลืมเกี่ยวกับสิทธิ์ระดับฐานข้อมูลALTER ANY DATABASE EVENT SESSION
- แม้ว่ามันจะไม่เกี่ยวข้องที่นี่