สร้างบทบาทฐานข้อมูลเพื่ออนุญาตการเข้าถึงการอ่านไปยังตารางทั้งหมด เข้าถึงการเขียนบางอย่าง


9

เรามีฐานข้อมูลที่มีมากกว่า 1,000 ตาราง ฉันต้องสร้างบทบาทที่อนุญาตให้อ่านได้อย่างเดียวบนทุกตารางรวมถึงการเขียนเพื่อเข้าถึงสองตารางที่เฉพาะเจาะจง

ฉันยุ่งกับบทบาทฐานข้อมูล แต่เมื่อใดก็ตามที่ฉันไปเพิ่มตารางฉันต้องเลือกทั้งหมด 1,000 ... มีวิธีที่ดีกว่าในการทำเช่นนี้?


ที่จริงแล้วอาจเป็นวิธีที่ง่ายที่สุด ... มีวิธีที่สคริปต์ที่? ฉันต้องการเก็บชุดสคริปต์ไว้ทุกครั้งที่เรารีเฟรชหนึ่งในฐานข้อมูลเหล่านี้ฉันสามารถกลับไปตั้งค่าทั้งหมดได้ทันที
Wes

คำตอบ:


9

การให้สิทธิ์บนสคีมา (เช่นdbo) จะเรียงซ้อนกับวัตถุทั้งหมดในสคีมานั้น สำหรับข้อยกเว้นแต่ละข้อคุณสามารถระบุรายการเหล่านั้นอย่างชัดเจน:

GRANT SELECT ON SCHEMA::dbo TO [role];
GO

GRANT INSERT, UPDATE --, DELETE
  ON dbo.table_they_can_write_to TO [role];

DENY SELECT ON dbo.table_they_cannot_read TO [role];

3
ง่ายพอสมควร ดีใจที่เรามีชุมชนเช่นนี้
Wes

1

ลองสิ่งนี้:

EXEC sp_MSForEachTable 'GRANT INSERT, UPDATE ON ? to [ROLE]'

3
FYI สิ่งนี้ให้การเขียน แต่ไม่มีการเข้าถึงเพื่ออ่านตารางทั้งหมดและยังละเว้นสคีมาทั้งหมด นอกจากนี้ยังsp_MSForEachTableไม่มีเอกสารสนับสนุนและอาจประสบปัญหาการข้ามเหมือนsp_MSForEachDBกัน
Aaron Bertrand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.