Ошибка при смене владельца базы данных на странице файлов в диалоговом окне свойств базы данных

10

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

Невозможно установить объекты поддержки диаграммы базы данных, поскольку у этой базы данных нет действительного владельца. Для продолжения сначала используйте страницу «Файлы» диалогового окна «Свойства базы данных» или инструкцию «Изменить авторизацию», чтобы установить для владельца базы данных действительный логин, затем добавьте объекты поддержки базы данных

Теперь, когда я пытался сменить владельца со страницы «Файлы» в свойствах базы данных, я получаю сообщение об ошибке, так как

Не удалось установить владельца для базы данных «ABC». (Microsoft.SqlServer.SMO) Дополнительная информация: в SMO произошло исключение. Предполагаемый новый владелец базы данных James-PC \ James отображается как пользователь James в этой базе данных. Название параметра: Джеймс-ПК \ Джеймс "

Пожалуйста, помогите мне решить эту проблему, чтобы я мог видеть диаграммы базы данных на этом компьютере после восстановления резервной копии базы данных из другой системы.

user2826073
источник

Ответы:

8

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

Таким образом, может быть три параметра, с которыми у вас возникли проблемы

  1. База данных owner_sid не равна sid базы данных db_owner. Вы можете сравнить это для базы данных ABC по:

    SELECT owner_sid FROM sys.databases, где name = 'ABC';

    ВЫБЕРИТЕ sid из ABC.sys.database_principals WHERE name = 'dbo';

  2. Затем вы получаете сообщение о том, что ваша предлагаемая база данных owner_sid также существует как пользователь в sys.database_principals. Мы знаем это из сообщения об ошибке при отображении предполагаемого владельца.

Итак, ваши шаги:

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

Вы удалили пользователя, который не нужен, так как вы делаете его dbo. Если это не так, то ваш логин может стать владельцем базы данных.

РЕДАКТИРОВАТЬ: Вы также можете использовать SSMS для удаления пользователя James из базы данных ABC. Затем вы можете вернуться на вкладку Файл свойств базы данных, чтобы установить владельца базы данных. (Извините, я склонен думать сценарии.)

ДКП
источник
1
Интересно, что в Management Studio логин, который был сделан как dbo, не отображается под YOUR_DB / Security / Users,
joedotnot
-3
  1. база данных правой кнопкой мыши
  2. свойства
  3. выбрать файлы
  4. исправить / установить владельца (для вашего компьютера \ вас, или найдите и выберите, нажав «...»)

это работало для меня в SQL Server Management Studio v17.1

user127505
источник
2
Я думаю, что именно это не работает для них.
Дезсо