Об'єкти підтримки діаграми бази даних не можуть бути встановлені ... немає дійсного власника


132

Я намагався створити схему бази даних за допомогою SQL Server 2008, але виникає помилка:

Об'єкти підтримки діаграми бази даних неможливо встановити, оскільки ця база даних не має дійсного власника. Для продовження спочатку скористайтеся сторінкою «Файли» діалогового вікна «Властивості бази даних» або оператором ALTER AUTHORIZATION, щоб встановити власника бази даних дійсний логін, а потім додайте об’єкти підтримки діаграми бази даних.

Потім я спробував наступне:

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

Наступний ерор вискакує:

Msg 15404, рівень 16, стан 11, рядок 1 Не вдалось отримати інформацію про групу / користувача Windows NT 'WIN-NDKPHUPPNFL \ Administrator', код помилки 0x534.

Проблема в тому, що ім'я ПК змінилося на "DevPC" Я також змінив це в сценарії оновлення, але все одно та сама помилка 15404.

Що я можу зробити, щоб виправити цю надокучливу помилку?


4
Ця проблема також виникає під час відновлення резервної копії з іншої машини.
Тім Абелл

Коли ви відновите db з іншої машини, ви можете виправити цю помилку, виконавши дві команди: 1) alter authorization on database::[db_name] to [sa], а потім 2) знову запустіть ту саму команду та замініть [sa]на користувача, який володів базою даних відразу після відновлення.
Джеймс Л.

Відповіді:


182

Ви повинні розглянути обліковий запис автентифікації 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/…
Аарон Бертран

1
Чи є проблеми з його налаштуванням, saякщо у вас відключена автентифікація sql?
Тім Абелл

@AaronBertrand Привіт, у мене є питання. За замовчуванням Якщо ми створимо базу даних, власник буде встановлений на поточного користувача Windows, а якщо поточний користувач Windows також є адміністратором. Чому нам потрібно змінити його на Вхід для автентичності Sql. Дійсно, я не можу зрозуміти цю помилку. Якщо ми змінимо його на sa login, він працює. Але адміністратор Windows Login також є System Admin. Ви можете допомогти?
UfukSURMEN

Я відновив купу баз даних, і всі вони відображали помилку у питанні про ОП, навіть якщо властивості кожної бази даних показували дійсного користувача. Я використав 1-ю команду, щоб змінити її, [sa]а потім я змінив її назад користувачеві, який сказав, що це було раніше, і віола, більше помилок. Не впевнений, чому відновлення бази даних не встановило належним чином власника бази даних ...
Джеймс Л.

208

У студії управління SQL Server виконайте наступне:

  1. Клацніть правою кнопкою миші на вашій базі даних, виберіть властивості
  2. Перейдіть на сторінку параметрів
  3. У спадному списку праворуч з написом "Рівень сумісності" виберіть "SQL Server 2005 (90)" 3-1. виберіть "SQL Server 2008", якщо ви отримаєте помилку порівняння.
  4. Перейдіть на сторінку файлів
  5. Введіть "sa" у текстове поле власника. 5-1 або натисніть на еліпси (...) та оберіть належного власника.
  6. Натисніть ОК

після цього тепер ви зможете отримати доступ до діаграм баз даних.

введіть тут опис зображення


2
Чи є причина, чому база даних НЕ повинна мати власника? Я заходжу в чужу базу даних продуктів, і власника немає. Це було навмисно? (У клієнта немає нікого, хто би знав).
Джейсон Клебан

База даних повинна мати власника. Вибір "sa" замість законного власника - це просто простий вибір, щоб виправити помилку вище. Але вибір законного власника також вирішив проблему.
Lesly Revenge

3
Чи може хтось пояснити мету зміни рівня сумісності в цих кроках? Просто встановлення власника у файлах на "sa" для мене було достатньо (навіть якщо я не ввімкнув sql auth, як не дивно).
Тім Абелл

Це працювало для мене. Мені потрібно було видалити свого користувача з імені бази даних> Безпека.
Гезим

Це працювало для мене на SQL Server 2017, використовуючи Management Studio 17.9, не потребуючи кроку 1
Джорджіо Барчіесі,

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

Це працює.


5

Введіть "SA" замість "sa" у текстове поле власника. Це працювало для мене.


5

У мене була така ж проблема.
Я хотів переглянути свою схему, яку я створив того ж дня на роботі, вдома. Але я не зміг через це повідомлення.
Я дізнався, що власником бази даних був користувач мого комп'ютера - як і очікувалося. але оскільки комп'ютер знаходиться в домені компанії, і я не підключений до мережі компанії, база даних не змогла вирішити власника.

Тож, що я зробив, це змінити власника на місцевого користувача, і це спрацювало !!
Сподіваюся, що це комусь допоможе.

Ви змінюєте користувача, клацнувши правою кнопкою миші на базі даних, властивостях, файлах, власнику


3

Це зафіксувало це для мене. Він встановлює власника, знайденого в розділі "файли" вікна властивостей бази даних, і він є сценарієм студії управління.

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

Відповідно до документації sp_changedbowner, це тепер застаріле.

Виходячи з відповіді Ізраїлю. Відповідь Аарона - це непридатний варіант цього.


3

Виберіть базу даних - Клацніть правою кнопкою миші - Виберіть Властивості

Виберіть FILE у лівій частині сторінки

У полі ВЛАСНИКА виберіть кнопку, у якій є три крапки (…)

Тепер виберіть користувача і натисніть кнопку ОК


0

Я щойно це пережив. Я прочитав пропозиції на цій сторінці, а також пропозиції органів управління SQL (це те саме), і жодне з перерахованого вище не працювало.

Врешті-решт я видалив обліковий запис і відтворив (з тим же ім’ям користувача / паролем). Просто так усі питання пішли.

На жаль, це означає, що я не знаю, що пішло не так, тому я не можу поділитися нічим іншим.


0

1. Правий клацання на базі даних, 2. Потім виберіть властивості. 3.Виберіть параметр у рівнях сумісності, виберіть sql 2008 [100], якщо ви працюєте з Microsoft sql 2008.

4. Потім виберіть файл і запишіть (sa) у текстове поле власника

На 100% працює для мене.


0

Простішим способом вирішити ці проблеми буде клацання правою кнопкою миші на назві вашої бази даних, виберіть "Новий запит", введіть "exec sp_changedbowner 'sa" "та виконайте запит. Тоді вам буде добре піти.


0

ви повинні ввести як адміністратор правою клавішею миші на студію управління сервером microsofft sql і запустити як адміністратор


0

Виконати його потрібно лише в редакторі запитів ПІДКЛЮЧЕННЯ АВТОРИЗАЦІЇ НА ДАТАБАЗІ :: YourDatabase TO [домен \ акаунт];


-3

Справжня проблема полягає в тому, що власник за замовчуванням (dbo) взагалі не містить вхід у нього. У міру спроби відобразити вхід sa для власника бази даних я отримав ще одну помилку із зазначенням "користувач, група чи роль" dbo " вже існує ... ". Однак якщо ви спробуєте цей код, він фактично працює:

EXEC sp_dbcmptlevel 'yourDB', '90';

йти

ПОДІЛИТИ АВТОРИЗАЦІЮ НА БАНКУ :: yourDB ДО "yourLogin"

йти

використовувати [yourDB]

йти

ВИКОНАТИ ЯК КОРИСТУВАЧ = N'dbo 'REVERT

йти


-3

клацніть правою кнопкою миші на базі даних, а потім виберіть властивості. виберіть опцію на рівнях сумісності, виберіть sql 2005 [90] замість 2008, якщо ви працюєте з Microsoft sql 2008., тоді виберіть файл і запишіть (sa) у текстове поле власника. це, можливо, спрацює

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.