ตามกฎแล้วคุณควรระบุสคีมาอย่างชัดเจนdbo
หากคุณต้องการสร้างวัตถุในสคีมานี้
เช่นเดียวกับคุณdb_owner
สกีมาเริ่มต้นของคุณคือdbo
ดังนั้นจึงไม่มีปัญหาเมื่อคุณไม่ได้ระบุสคีมา dbo ในขณะที่สร้างวัตถุ แต่สำหรับผู้ใช้อื่น ๆ (Windows) มันไม่เหมือนกัน
ผู้ใช้ของคุณเป็นสมาชิกของWindows group
ที่ไม่มีสคีมาเริ่มต้น ในกรณีนี้ผู้ใช้และสคีมาที่เกี่ยวข้องจะถูกสร้างขึ้นเมื่อผู้ใช้สร้างวัตถุใด ๆ มีการบันทึกไว้ที่นี่: CREATE SCHEMA (Transact-SQL)
สคีมาโดยนัยและการสร้างผู้ใช้
ในบางกรณีผู้ใช้สามารถใช้ฐานข้อมูลโดยไม่ต้องมีบัญชีผู้ใช้ฐานข้อมูล (ฐานข้อมูลหลักในฐานข้อมูล) สิ่งนี้สามารถเกิดขึ้นได้ในสถานการณ์ต่อไปนี้:
การเข้าสู่ระบบมีสิทธิ์ควบคุมเซิร์ฟเวอร์
ผู้ใช้ Windows ไม่มีบัญชีผู้ใช้ฐานข้อมูลแต่ละบัญชี (ฐานข้อมูลหลักในฐานข้อมูล) แต่เข้าถึงฐานข้อมูลในฐานะสมาชิกของกลุ่ม Windows ที่มีบัญชีผู้ใช้ฐานข้อมูล (ฐานข้อมูลหลักสำหรับกลุ่ม Windows)
เมื่อผู้ใช้ที่ไม่มีบัญชีผู้ใช้ฐานข้อมูลสร้างวัตถุโดยไม่ระบุสคีมาที่มีอยู่หลักการฐานข้อมูลและสคีมาเริ่มต้นจะถูกสร้างขึ้นโดยอัตโนมัติในฐานข้อมูลสำหรับผู้ใช้นั้น หลักการสร้างฐานข้อมูลและสคีมาจะมีชื่อเดียวกันกับชื่อที่ผู้ใช้ใช้เมื่อเชื่อมต่อกับ SQL Server (ชื่อล็อกอินของการพิสูจน์ตัวตน SQL Server หรือชื่อผู้ใช้ Windows)
ลักษณะการทำงานนี้จำเป็นเพื่อให้ผู้ใช้ที่อยู่ในกลุ่ม Windows สามารถสร้างและเป็นเจ้าของวัตถุได้ อย่างไรก็ตามอาจส่งผลให้มีการสร้างสกีมาและผู้ใช้โดยไม่ได้ตั้งใจ เพื่อหลีกเลี่ยงการสร้างผู้ใช้และสกีมาโดยปริยายเมื่อใดก็ตามที่เป็นไปได้ให้สร้างหลักการฐานข้อมูลอย่างชัดเจนและกำหนดสกีมาเริ่มต้น หรือระบุสคีมาที่มีอยู่อย่างชัดเจนเมื่อสร้างวัตถุในฐานข้อมูลโดยใช้ชื่อวัตถุสองหรือสามส่วน
เพื่อแก้ไขปัญหาเพียงแค่กำหนดdbo
สคีมาเป็นdefault schema
กลุ่มผู้ใช้ Windows ทุกกลุ่มหรือเขียนสคีมาอย่างชัดเจนเมื่อสร้างวัตถุ เสมอ.