[SQL SERVER] วิธีแก้ Error: 15138 – The database principal owns a schema in the database, and cannot be dropped

เมื่อวันก่อนได้งานจากหัวหน้าให้เขียน Script เพื่อจัดการ User กับสิทธิื หลังการ Restore ฐานข้อมูล เมื่อลองเขียนคำสั่งเพื่อ Drop User พบ Error Message ดังนี้ The database principal owns a schema in the database, and cannot be dropped. (Microsoft SQL Server, Error: 15138) จาก Error Message ด้านบน สามารถสรุปสาเหตุของปัญหานั้น เกิดจาก User ที่เราต้องการจะ Drop นั้นเป็นเจ้าของ Schema ของฐานข้อมูลนี้ โดยเราสามารถตรวจสอบ Schema ที่ User นั้นๆจัดการอยู่ จากคำสั่ง SQL ดังนี้ หมายเหตุ: sys.schemas มองง่ายเลย คือ กระดาษ Note ที่เก็บข้อมูล Schema ของฐานข้อมูลนั่นเอง จากข้อมูลข้างต้นได้แสดงให้เห็นว่า User invest เป็นเจ้าของ Schema INVEST อยู่ เราจึงไม่สามารถ Drop User ได้ เราจึงจำเป็นต้องโอนสิทธิ์การดูแล Schema INVEST ไปให้ User อื่น เช่น dbo ตามคำสั่ง ดังนี้ ทดสอบ SELECT Schema ที่ User ดูแลด้วยคำสั่ง ดังนี้ ทดสอบ Drop user อีกครั้งพบว่าสามารถทำได้ ดังรูป




