เราเพิ่มการเข้าสู่ระบบเซิร์ฟเวอร์และผู้ใช้ฐานข้อมูลที่จับคู่ Windows Group กับอินสแตนซ์ SQL 2008 R2 โดยใช้สคริปต์ต่อไปนี้โดยเปลี่ยนชื่อเป็น anonymity:
USE master
go
CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
go
USE AppDb
go
CREATE USER [DOMAIN\AppUsers] FOR LOGIN
[DOMAIN\AppUsers]
go
EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers'
go
เมื่อบัญชี DOMAIN \ User1 เข้าสู่แอป User1 ทำการสืบค้นตารางใน dbo schema ได้ดีเนื่องจาก User1 เป็นสมาชิกของ DOMAIN \ AppUsers แต่แอปนี้อนุญาตให้ผู้ใช้สร้างตารางด้วย เมื่อสร้างตารางเหล่านี้โดยไม่ระบุสกีมา SQL Server จะทำสิ่งต่อไปนี้:
- สร้างผู้ใช้ 'DOMAIN \ User1' ใน AppDb ที่ใช้การเข้าสู่ระบบ 'DOMAIN \ User1' ที่ไม่อยู่ใน SSMS \ Security \ Logins สำหรับอินสแตนซ์
- สร้างสคีมา 'DOMAIN \ User1' ใน AppDb
- สร้างตารางเหล่านั้นโดยใช้ในสคีมา 'DOMAIN \ User1' ใหม่
ฉันรู้สึกงงงันกับผลลัพธ์เหล่านี้ นี่คือคำถามของฉัน:
- ฉันคาดว่าการสร้างตารางจะล้มเหลวแทนที่จะสร้างวัตถุเพิ่มเติม ใครสามารถชี้ให้ฉันเป็นส่วนหนึ่งของ Books Online ที่อธิบายสิ่งนี้
- ทำไมเซิร์ฟเวอร์ไม่สร้างสคีมา 'DOMAIN \ AppUsers' และเพิ่มตารางใหม่ในสคีมานั้นถ้ามันจะเพิ่มสคีมา
- นอกจากนี้ฐานข้อมูลใช้การเข้าสู่ระบบไม่แสดงใน SSMS \ Security \ Logins อย่างไร
- ดูที่ผู้ใช้ 'DOMAIN \ User1' ใน SSMS \ Databases \ AppDb \ Security \ Users ไอคอนผู้ใช้มีลูกศรสีแดงเล็ก ๆ ชี้ลง นั่นหมายความว่าอย่างไร?
เราเพิ่งเริ่มใช้ Windows Authentication ภายในองค์กรที่ต้องการ SQL Authentication เพื่อความเรียบง่ายดังนั้นฉันมั่นใจว่าคำถามของฉันมาจากการไม่รู้ถึงความแตกต่าง รหัสนี้เขียนขึ้นนานก่อนที่เราจะพิจารณาใช้การรับรองความถูกต้องของ Windows ดังนั้นฉันแน่ใจว่าเราจำเป็นต้องปรับปรุงความเข้าใจของเราในการสร้างสกีมาใหม่เมื่อเข้าสู่ระบบโดยใช้ Windows Authentication เป็นผู้อื่นนอกเหนือจากเจ้าของฐานข้อมูล
ในกรณีที่คุณไม่สามารถบอกได้ฉันเป็นผู้ผลักดันให้ใช้การพิสูจน์ตัวจริงของ Windows ผ่านการรับรองความถูกต้องของ SQL หากเราไม่เข้าใจสิ่งนี้อย่างถ่องแท้เราจะกลับไปใช้การพิสูจน์ตัวจริงของ SQL