ไม่สามารถติดตั้งวัตถุสนับสนุนไดอะแกรมฐานข้อมูล ... ไม่มีเจ้าของที่ถูกต้อง


133

ฉันพยายามสร้างไดอะแกรมฐานข้อมูลด้วย SQL Server 2008 แต่เกิดข้อผิดพลาด:

ไม่สามารถติดตั้งอ็อบเจ็กต์การสนับสนุนไดอะแกรมฐานข้อมูลเนื่องจากฐานข้อมูลนี้ไม่มีเจ้าของที่ถูกต้อง ในการดำเนินการต่อขั้นแรกให้ใช้หน้าไฟล์ของกล่องโต้ตอบคุณสมบัติฐานข้อมูลหรือคำสั่งแก้ไขการอนุญาตเพื่อตั้งค่าเจ้าของฐานข้อมูลเพื่อเข้าสู่ระบบที่ถูกต้องจากนั้นเพิ่มวัตถุสนับสนุนไดอะแกรมฐานข้อมูล

จากนั้นฉันลองทำสิ่งต่อไปนี้:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

erorr ถัดไปปรากฏขึ้น:

ข่าวสารเกี่ยวกับ 15404 ระดับ 16 สถานะ 11 บรรทัด 1 ไม่สามารถรับข้อมูลเกี่ยวกับกลุ่ม Windows NT / ผู้ใช้ 'WIN-NDKPHUPPNFL \ Administrator' รหัสข้อผิดพลาด 0x534

ปัญหาคือชื่อของพีซีเปลี่ยนเป็น "DevPC" ฉันยังเปลี่ยนสิ่งนี้ในสคริปต์การอัปเดต แต่ยังคงเป็นข้อผิดพลาด 15404 เหมือนเดิม

ฉันจะทำอย่างไรเพื่อแก้ไขข้อผิดพลาดที่น่ารำคาญนี้


4
คุณยังได้รับปัญหานี้เมื่อคุณกู้คืนข้อมูลสำรองจากเครื่องอื่น
Tim Abell

เมื่อคุณกู้คืนฐานข้อมูลจากเครื่องอื่นคุณสามารถแก้ไขข้อผิดพลาดนี้ได้โดยเรียกใช้คำสั่งสองคำสั่ง: 1) alter authorization on database::[db_name] to [sa]จากนั้น 2) รันคำสั่งเดิมอีกครั้งและแทนที่[sa]ด้วยผู้ใช้ที่เป็นเจ้าของฐานข้อมูลทันทีหลังจากการกู้คืน
James L.

คำตอบ:


184

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

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

หรือหากคุณต้องการเปลี่ยนเจ้าของเป็นบัญชีผู้ดูแลระบบภายในเครื่องควรเป็น:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

เนื่องจากการเปลี่ยนชื่อเครื่องเป็นDevPCได้กำจัดบัญชีภายในเครื่องที่ใช้ในการตั้งชื่อWIN-ND...\Administratorและสิ่งนี้ยังทำให้เจ้าของฐานข้อมูลปัจจุบันเป็นโมฆะ

หากSELECT @@SERVERNAME;ไม่ถูกต้อง (ควรบอกว่าDevPC) ดังนั้นเพื่อให้แน่ใจว่าการเปลี่ยนชื่อเซิร์ฟเวอร์ของคุณถูกระงับภายใน SQL Server คุณอาจต้องการออกสิ่งต่อไปนี้:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

มันแสดงให้เห็น: "WIN-NDKPHUPPNFL" ฉันใช้คำสั่ง sql ของคุณแล้วมันใช้งานได้ ... แต่การตั้งค่านี้ถูกต้องหรือไม่หรือฉันต้องทำอย่างอื่นเพิ่มเติมหรือไม่?
Rookian

นั่นขึ้นอยู่กับจริงๆ หากคุณต้องการให้ฐานข้อมูลของคุณเป็นของผู้ใช้โดเมน / เวิร์กกรุ๊ป Windows อาจมีงานที่ต้องทำมากกว่านี้ โดยส่วนตัวฉันพบว่ามีปัญหานี้ อาจจะอ่านสิ่งนี้ก่อน: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand

1
มีปัญหาในการตั้งค่าเป็นsaถ้าคุณปิดใช้งานการพิสูจน์ตัวตน sql หรือไม่?
Tim Abell

@AaronBertrand สวัสดีฉันมีคำถามโดยค่าเริ่มต้นถ้าเราสร้างเจ้าของฐานข้อมูลฐานข้อมูลถูกตั้งค่าเป็นผู้ใช้ windows ปัจจุบันและหากผู้ใช้ windows ปัจจุบันเป็นผู้ดูแลระบบด้วย ทำไมเราต้องเปลี่ยนเป็น Sql Authantication Login อันที่จริงฉันไม่เข้าใจข้อผิดพลาดนี้ ถ้าเราเปลี่ยนเป็น sa เข้าสู่ระบบมันใช้งานได้ แต่ผู้ดูแลระบบ Windows Login ยังเป็นผู้ดูแลระบบ คุณช่วยกรุณา?
UfukSURMEN

ฉันกู้คืนฐานข้อมูลจำนวนมากและทั้งหมดแสดงข้อผิดพลาดในคำถามของ OP แม้ว่าคุณสมบัติของแต่ละฐานข้อมูลจะแสดงผู้ใช้ที่ถูกต้อง ฉันใช้คำสั่งที่ 1 เพื่อเปลี่ยนเป็น[sa]จากนั้นฉันก็เปลี่ยนกลับเป็นผู้ใช้ที่มันบอกว่าก่อนหน้านี้และวิโอล่าไม่มีข้อผิดพลาดอีกต่อไป ไม่แน่ใจว่าเหตุใดการกู้คืนฐานข้อมูลจึงไม่ได้ตั้งค่าเจ้าของฐานข้อมูลอย่างถูกต้อง ...
James L.

210

ใน SQL Server Management Studio ให้ทำดังต่อไปนี้:

  1. คลิกขวาที่ฐานข้อมูลของคุณเลือกคุณสมบัติ
  2. ไปที่หน้าตัวเลือก
  3. ในรายการแบบหล่นลงทางด้านขวาที่มีข้อความ "ระดับความเข้ากันได้" ให้เลือก "SQL Server 2005 (90)" 3-1 เลือก "SQL Server 2008" หากคุณได้รับข้อผิดพลาดในการเปรียบเทียบ
  4. ไปที่หน้าไฟล์
  5. ป้อน "sa" ในกล่องข้อความของเจ้าของ 5-1 หรือคลิกที่จุดไข่ปลา (... ) และเลือกเจ้าของที่ถูกต้อง
  6. กดตกลง

หลังจากทำสิ่งนี้คุณจะสามารถเข้าถึงไดอะแกรมฐานข้อมูลได้

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


2
มีเหตุผลใดที่ฐานข้อมูลไม่ควรมีเจ้าของ? ฉันเข้ามาในฐานข้อมูลผลิตภัณฑ์ของคนอื่นและไม่มีการตั้งค่าเจ้าของ นี่คือเจตนา? (ไม่มีใครที่ลูกค้าจะรู้จัก)
Jason Kleban

ฐานข้อมูลควรมีเจ้าของ การเลือก "sa" แทนเจ้าของที่ถูกต้องเป็นเพียงทางเลือกง่ายๆในการแก้ไขข้อผิดพลาดข้างต้น แต่การเลือกเจ้าของที่ถูกต้องก็ช่วยแก้ปัญหาได้เช่นกัน
Lesly Revenge

3
ใครช่วยอธิบายวัตถุประสงค์ของการเปลี่ยนระดับความเข้ากันได้ในขั้นตอนเหล่านี้ เพียงแค่ตั้งค่าเจ้าของภายใต้ไฟล์เป็น "sa" ก็เพียงพอแล้วสำหรับฉัน (แม้ว่าฉันจะไม่ได้เปิดใช้ sql auth แต่ก็แปลก)
Tim Abell

สิ่งนี้ได้ผลสำหรับฉัน ฉันจำเป็นต้องลบผู้ใช้ของฉันออกจาก Databasename> Security แม้ว่า
Gezim

สิ่งนี้ใช้ได้ผลสำหรับฉันบน SQL Server 2017 โดยใช้ Management Studio 17.9 โดยไม่ต้องใช้ขั้นตอนที่ 1
Giorgio Barchiesi



5

ผมมีปัญหาเหมือนกัน.
ฉันต้องการดูแผนภาพซึ่งฉันสร้างขึ้นในวันเดียวกันที่ทำงานที่บ้าน แต่ฉันทำไม่ได้เพราะข้อความนี้
ฉันพบว่าเจ้าของฐานข้อมูลเป็นผู้ใช้คอมพิวเตอร์ของฉัน - ตามที่คาดไว้ แต่เนื่องจากคอมพิวเตอร์อยู่ในโดเมนของ บริษัท และฉันไม่ได้เชื่อมต่อกับเครือข่ายของ บริษัท ฐานข้อมูลจึงไม่สามารถหาเจ้าของได้

สิ่งที่ฉันทำคือเปลี่ยนเจ้าของเป็นผู้ใช้ภายในและได้ผล !!
หวังว่านี่จะช่วยใครบางคนได้

คุณเปลี่ยนผู้ใช้โดยคลิกขวาที่ฐานข้อมูลคุณสมบัติไฟล์เจ้าของ


3

สิ่งนี้แก้ไขให้ฉัน ตั้งค่าเจ้าของที่พบในส่วน 'ไฟล์' ของหน้าต่างคุณสมบัติฐานข้อมูลและเป็นสคริปต์โดยสตูดิโอการจัดการ

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

ตามเอกสารของ sp_changedbownerตอนนี้เลิกใช้แล้ว

จากคำตอบของอิสราเอล คำตอบของแอรอนคือรูปแบบที่ไม่ได้รับการสนับสนุนจากสิ่งนี้


3

เลือกฐานข้อมูลของคุณ - คลิกขวา - เลือกคุณสมบัติ

เลือกไฟล์ทางด้านซ้ายของหน้า

ในกล่อง OWNER ให้เลือกปุ่มที่มีจุดสามจุด (…) อยู่ในนั้น

ตอนนี้เลือกผู้ใช้และคลิกตกลง


0

ฉันเพิ่งมีประสบการณ์นี้ ฉันได้อ่านคำแนะนำในหน้านี้รวมถึงคำแนะนำของ SQL Authority (ซึ่งเป็นสิ่งเดียวกัน) และข้อใดข้างต้นไม่ได้ผล

ในท้ายที่สุดฉันก็ลบบัญชีและสร้างใหม่ (ด้วยชื่อผู้ใช้ / รหัสผ่านเดียวกัน) เช่นนั้นปัญหาทั้งหมดก็หายไป

น่าเศร้านี่หมายความว่าฉันไม่รู้ว่ามีอะไรผิดพลาดจึงไม่สามารถแบ่งปันสิ่งอื่นได้


0

1. คลิกขวาที่ฐานข้อมูลของคุณ 2. จากนั้นเลือกคุณสมบัติ 3. เลือกตัวเลือกในระดับความเข้ากันได้เลือก sql 2008 [100] หากคุณกำลังทำงานกับ Microsoft sql 2008

4. จากนั้นเลือกไฟล์และเขียน (sa) ในกล่องข้อความของเจ้าของ

ได้ผล 100% สำหรับฉัน


0

วิธีที่ง่ายกว่าในการแก้ปัญหานี้คือคลิกขวาที่ชื่อฐานข้อมูลของคุณเลือก "การสืบค้นใหม่" พิมพ์ "exec sp_changedbowner 'sa'" และดำเนินการค้นหา แล้วคุณจะดีไป


0

คุณต้องเข้าสู่ฐานะผู้ดูแลระบบคลิกขวาเพื่อ microsofft sql server management studio และเรียกใช้ในฐานะผู้ดูแลระบบ


0

จำเป็นต้องดำเนินการในตัวแก้ไขแบบสอบถามเท่านั้น ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domain \ account];


-3

ปัญหาที่แท้จริงคือเจ้าของเริ่มต้น (dbo) ไม่มีการแมปการเข้าสู่ระบบเลยขณะที่ฉันพยายามแมปการเข้าสู่ระบบ sa กับเจ้าของฐานข้อมูลฉันได้รับข้อผิดพลาดอีกครั้งที่ระบุว่า "ผู้ใช้กลุ่มหรือบทบาท 'dbo' มีอยู่แล้ว ... "อย่างไรก็ตามหากคุณลองใช้รหัสนี้จะใช้งานได้จริง:

EXEC sp_dbcmptlevel 'yourDB', '90';

ไป

แก้ไขการอนุญาตบนฐานข้อมูล :: yourDB เป็น "yourLogin"

ไป

ใช้ [yourDB]

ไป

ดำเนินการในฐานะผู้ใช้ = N'dbo 'REVERT

ไป


-3

คลิกขวาที่ฐานข้อมูลของคุณจากนั้นเลือกคุณสมบัติ เลือกตัวเลือกในระดับความเข้ากันได้เลือก sql 2005 [90] แทน 2008 หากคุณกำลังทำงานกับ Microsoft sql 2008 จากนั้นเลือกไฟล์และเขียน (sa) ในกล่องข้อความของเจ้าของ มันอาจจะใช้ได้

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