สคีมาเริ่มต้นของ SQL Server 2008 ไม่ได้รับการเคารพหรือไม่


9

เราเพิ่งคัดลอกฐานข้อมูล SQL 2008 ไปยังเซิร์ฟเวอร์อื่นเพื่อจุดประสงค์ในการทดสอบ ผู้ใช้ทั่วไปที่เข้าสู่ระบบใช้วัตถุบางอย่างในสคีมาที่แน่นอน สมมติว่ามันเป็นผู้ใช้และสคีfoobar

fooสกีมาเริ่มต้นของbarทั้งอินสแตนซ์และระดับฐานข้อมูล อย่างไรก็ตามเมื่อfooเข้าสู่ระบบจะไม่พบวัตถุใด ๆ ในbarสคีมาโดยไม่ต้องใช้ชื่อที่ผ่านการรับรองโดยสมบูรณ์

ทำไมสคีมาเริ่มต้นถึงใช้งานไม่ได้ที่นี่?

คำตอบ:


13

มีสิทธิ์ดูแลระบบของผู้ใช้บน SQL Server หรือไม่ เพราะถ้ามันทำแล้วผู้ใช้ดูแลระบบใด ๆ จะมีค่าเริ่มต้นที่กำหนด schema dboเป็นอิสระจากสิ่งที่ตั้งอยู่ในคุณสมบัติของผู้ใช้สำหรับฐานข้อมูลเฉพาะ

ดังนั้นเพื่อให้มีสคีมาเริ่มต้นผู้ใช้จำเป็นต้องมีบทบาทฐานข้อมูลเช่น db_owner, db_datawriter และอื่น ๆ แทนที่จะเป็นเซิร์ฟเวอร์บทบาทดูแลระบบ

บอกฉันถ้าไม่ใช่กรณีของคุณ


1
คุณเป็นเทพเจ้าและฉันน้อมความรู้ของคุณฉันงงจนฉันชนเข้ากับเรื่องนี้!
Jens

1

สถานการณ์อื่นที่ปัญหานี้อาจเกิดขึ้น (SQL 2008 R2) ...

ฉันมีผู้ใช้ที่เชื่อมโยงกับการเข้าสู่ระบบการรับรองความถูกต้องของ SQL ว่าฉันพยายามเชื่อมโยงกับสคีมาที่มีอยู่ การเข้าสู่ระบบไม่มีสิทธิ์ดูแลระบบดังนั้นวิธีการข้างต้นจึงไม่ช่วย

ในที่สุดฉันก็พบว่าฐานข้อมูลยังคงถูกกำหนดค่าในโหมดความเข้ากันได้ของ SQL 2000 การเปลี่ยนไปใช้ SQL 2005 แก้ไขปัญหาได้


ดูเหมือนว่าฉันมีปัญหานี้ (ผู้ใช้ที่เชื่อมโยงกับการรับรองความถูกต้องของ SQL ว่าฉันพยายามเชื่อมโยงกับสคีมาที่มีอยู่) ยกเว้นระดับความเข้ากันได้ของฉันคือ 'SQL Server 2016 (130)'
tbone

0

มันจะสมมติว่าสคีมาเริ่มต้นบนเซิร์ฟเวอร์ใหม่คือ dbo; หากสคีมายังไม่ถูกคัดลอกกับฐานข้อมูล

ไม่ใช่วิธีแก้ปัญหา แต่อาจช่วยได้โดยดูที่บทความ msdn http://msdn.microsoft.com/en-us/library/dd283095.aspx


เราได้กำหนดค่าสกีมาเริ่มต้นสำหรับfooบนเซิร์ฟเวอร์ใหม่ มันถูกตั้งค่าเป็นbarทั้งผู้ใช้อินสแตนซ์และระดับผู้ใช้ฐานข้อมูล
John Cromartie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.