Помилка зміни власника на базу даних зі сторінки файлів у діалоговому вікні властивостей бази даних


10

Я відновив базу даних і створив нового користувача (того самого користувача, з якого я ввійшов), як db_owner. Тепер, коли я хотів побачити діаграму бази даних, з’явилася помилка

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

Тепер, коли я намагався змінити право власності на сторінку "Файли" в "Властивості бази даних", я отримую помилку як

Власник набору не вдався до бази даних "ABC". (Microsoft.SqlServer.SMO) Додаткова інформація: у SMO стався виняток Пропонований новий власник бази даних James-PC \ James відображається як користувач Джеймс у цій базі даних. Назва параметра: James-PC \ James "

Будь ласка, допоможіть мені виправити цю проблему, щоб я міг бачити діаграми бази даних на цьому комп’ютері після відновлення резервного копіювання бази даних з іншої системи.

Відповіді:


8

Власник бази даних - це логін у sys.server_principals, який є власником бази даних, як визначено її SID. Після відновлення легко може статися так, що логін, який використовувався для відновлення бази даних, не є логіном, який був попереднім власником бази даних. (Це ще частіше трапляється, коли база даних буде переміщена між серверами.)

Отже, у вас можуть бути три налаштування, з якими ви маєте проблеми

  1. Owner_sid бази даних не дорівнює sid базі даних db_owner. Ви можете порівняти це для бази даних ABC за:

    SELECT owner_sid ВІД sys.databases, де name = 'ABC';

    SELECT sid від ABC.sys.database_principals WHERE name = 'dbo';

  2. Далі ви отримуєте повідомлення про те, що запропонований власник бази даних також існує як користувач у sys.database_principals. Ми знаємо це з повідомлення про помилку щодо відображення запропонованого власника.

Отже, ваші кроки:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

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

EDIT: Ви також можете використовувати SSMS для видалення користувача James із бази даних ABC. Потім ви можете повернутися до вкладки Файл властивостей бази даних, щоб встановити власника бази даних. (Вибачте, я схильний думати сценарії.)


1
Це цікаво, що в студії менеджменту вхід, в якому було зроблено dbo, не відображається під YOUR_DB / Security / Users,
joedotnot

-3
  1. клацніть правою кнопкою миші базу даних
  2. властивості
  3. виберіть файли
  4. виправити / встановити власника (на вашpc \ you, або переглядати та вибирати, натискаючи "...")

це працювало для мене в студії управління сервером SQL сервера v17.1


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