หลักการฐานข้อมูลเป็นเจ้าของสกีมาในฐานข้อมูลและไม่สามารถทิ้งข้อความได้


28

ฉันพยายามลบหลักการจากฐานข้อมูล แต่ไม่สามารถทำได้เพราะเป็นเจ้าของสคีมา อย่างไรก็ตามเมื่อฉันไปแก้ไขผู้ใช้กล่องเพื่อยกเลิกการเลือก schemae นั้นเป็นสีน้ำเงินและไม่สามารถเคลื่อนย้ายได้ ฉันจะลบหลักการออกจากสกีมาเหล่านี้ได้อย่างไร

คำตอบ:


31

ลอง T-SQL เพื่อทำสิ่งนี้:

alter authorization
on schema::YourSchemaName
to dbo
go

drop user TheUserYouWantToDelete
go

คุณไม่สามารถลบหลักการที่เป็นเจ้าของสคีมาดังนั้นการALTER AUTHORZATIONเปลี่ยนแปลงสคีมาที่เป็นเจ้าของ (ฉันใช้YourSchemaNameแต่เห็นได้ชัดว่าแทนที่สคีมาที่เป็นเจ้าของในฐานข้อมูลของคุณ) เป็นdbo(เช่นเดียวกันคุณสามารถเปลี่ยนความเป็นเจ้าของเป็นหลักที่คุณต้องการ สภาพแวดล้อม) ที่จะช่วยให้คุณวางผู้ใช้ที่เป็นเจ้าของสคีมาก่อนหน้านี้ (ตัวอย่างเช่นวัตถุประสงค์ที่ฉันใช้TheUserYouWantToDeleteแต่ตอนนี้จะเป็นเจ้าของที่คุณไม่ต้องการวางไว้


โอเคสิ่งนี้ใช้ได้ผล อย่างไรก็ตามฉันสับสนเล็กน้อยว่าทำไม ทำไมฉันต้องอนุญาตสคีมาให้สคีอื่น บางทีฉันอาจจะต้องทบทวนสกีมา ...
rsteckly

1
@rsteckly ประยุกต์, การอนุมัติ = ความเป็นเจ้าของ หากคุณสามารถลบผู้ใช้ที่เป็นเจ้าของสคีมาสคีนั้นจะไม่ถูกต้องเนื่องจากไม่มีเจ้าของอีกต่อไป ลองนึกภาพคุณสามารถลบลูกค้าที่สั่งซื้อได้ รหัสลูกค้าในตารางคำสั่งซื้อหมายถึงอะไรหากไม่มีลูกค้าที่ชี้ไป ฉันจะจัดส่งคำสั่งซื้อได้ที่ไหน
Aaron Bertrand

ขออภัยตัวอย่างของฉันไม่ได้อธิบายอย่างดี เราไม่ได้มีการเปลี่ยนแปลงการอนุญาตให้กับdboสคีเรากำลังจะเปลี่ยนอนุญาตให้dboหลัก นั่นอาจเป็นฐานข้อมูลหลักก็ได้
Thomas Stringer

30

วิธี T-SQL ใช้งานได้ ขอบคุณ http://zarez.net/?p=179 ฉันพบวิธี SSMS ในการทำเช่นนี้ (UI)

วิธีเปลี่ยนเจ้าของสคีมาจาก Sql Server Management Studio:

Expand your database -> Security -> Schemas

ในรายละเอียด Object Explorer คุณสามารถดูรายการสกีมาและเจ้าของ:

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณไม่ทราบว่าผู้ใช้เป็นเจ้าของสคีมาใดให้ตรวจสอบคุณสมบัติของผู้ใช้

ป้อนคำอธิบายรูปภาพที่นี่

เปิดคุณสมบัติของ schema ที่ผู้ใช้เป็นเจ้าของและคลิก "ค้นหา" เพื่อค้นหาเจ้าของใหม่ หากคุณไม่รู้จักเจ้าของใหม่คุณสามารถ "ค้นหา" หนึ่งคน

Properites -> Search -> Browse

และคุณสามารถเปลี่ยนเจ้าของสคีมาเป็น dbo (หรือใครก็ตามที่เหมาะสมที่สุด)

ป้อนคำอธิบายรูปภาพที่นี่


1
วิธี T-SQL นั้นดีกว่าและยืดหยุ่นกว่ามาก การทำผ่าน GUI จะมีความเจ็บปวดเสมอ!
Kin Shah

ฉันทั้งหมดสำหรับวิธี T-SQL เช่นกันเพราะสามารถใช้ในสคริปต์ได้
woodvi

2
หมายเหตุ: F7 เป็นทางลัดในการแสดงรายละเอียดหากยังไม่มา
Simon_Weaver
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.