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

Я попытался создать диаграмму базы данных с помощью 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

Следующее всплывающее окно erorr:

Сообщение 15404, уровень 16, состояние 11, строка 1 Не удалось получить информацию о группе / пользователе Windows NT «WIN-NDKPHUPPNFL \ Administrator», код ошибки 0x534.

Проблема в том, что имя ПК изменилось на «DevPC». Я также изменил это в скрипте обновления, но все равно ошибка 15404.

Что я могу сделать, чтобы исправить эту досадную ошибку?


person Rookian    schedule 11.01.2010    source источник
comment
Эта проблема также возникает при восстановлении резервной копии с другой машины.   -  person Tim Abell    schedule 16.10.2014
comment
Когда вы восстанавливаете базу данных с другого компьютера, вы можете исправить эту ошибку, выполнив две команды: 1) alter authorization on database::[db_name] to [sa], а затем 2) снова запустите ту же команду и замените [sa] пользователем, который владел базой данных сразу после восстановления.   -  person James L.    schedule 02.03.2019


Ответы (14)


Вы должны рассмотреть учетную запись аутентификации 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 sys.sp_dropserver @server = N'old server name';
GO
EXEC sys.sp_addserver @server = N'DevPC', @local = N'local';
GO
person Aaron Bertrand    schedule 11.01.2010
comment
он показывает: WIN-NDKPHUPPNFL Я использовал ваш оператор sql, и он работает ... но правильная ли эта настройка или мне нужно сделать что-то еще? - person Rookian; 11.01.2010
comment
Ну, это действительно зависит от обстоятельств. Если вам нужно, чтобы ваша база данных принадлежала пользователю домена / рабочей группы Windows, то, вероятно, есть над чем поработать. Лично я считаю это проблематичным. Может быть, сначала прочтите это: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/ - person Aaron Bertrand; 11.01.2010
comment
Есть ли проблемы с установкой sa, если у вас отключена аутентификация sql? - person Tim Abell; 16.10.2014
comment
@AaronBertrand Привет, у меня есть вопрос. По умолчанию, если мы создаем базу данных, владельцем базы данных является текущий пользователь Windows, и если текущий пользователь Windows также является администратором. Почему нам нужно изменить его на Sql Authantication Login. На самом деле я не могу понять эту ошибку. Если мы изменим его на sa login, он заработает. Но администратор Windows Login также является системным администратором. Не могли бы вы помочь? - person UfukSURMEN; 02.01.2017
comment
Я восстановил кучу баз данных, и все они отображали ошибку в вопросе OP, хотя свойства каждой базы данных отображали действительного пользователя. Я использовал 1-ю команду, чтобы изменить его на [sa], а затем вернул его пользователю, который сказал, что это было раньше, и альт, больше никаких ошибок. Не уверен, почему при восстановлении базы данных не был правильно установлен владелец базы данных ... - person James L.; 02.03.2019

В SQL Server Management Studio выполните следующие действия:

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

после этого вы получите доступ к диаграммам базы данных.

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

person Israel Margulies    schedule 20.04.2012
comment
Есть ли причина, по которой база данных НЕ должна иметь владельца? Я захожу в чужую базу данных продуктов, а владельца нет. Это было намеренно? (У клиента нет никого, кто бы знал). - person Jason Kleban; 29.06.2012
comment
У базы данных должен быть владелец. Выбор sa вместо законного владельца - это простой способ исправить указанную выше ошибку. Но выбор законного владельца тоже устранил проблему. - person Lesly Revenge; 10.10.2014
comment
Может ли кто-нибудь объяснить цель изменения уровня совместимости на этих этапах? Для меня было достаточно просто установить для владельца в файлах значение «sa» (хотя, как ни странно, у меня не включен sql auth). - person Tim Abell; 16.10.2014
comment
Это сработало для меня. Однако мне нужно было удалить моего пользователя из Databasename ›Security. - person Gezim; 24.04.2015
comment
Это сработало для меня на SQL Server 2017 с использованием Management Studio 17.9 без необходимости шага 1 - person Giorgio Barchiesi; 25.11.2018
comment
Мне нужно было только настроить владельца, чтобы он заработал, не нужно было возиться с уровнями совместимости - person Rhdr; 25.10.2019
comment
@JasonKleban Просто потому, что база данных была добавлена ​​в MSMS вручную - person Dominota; 24.11.2019
comment
@LeslyRevenge Это сработало для меня. Я использую SQL Server 2019. Спасибо. - person M.Siri; 28.10.2020

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

Оно работает.

person RafiO    schedule 31.01.2017

Введите «SA» вместо «sa» в текстовое поле владельца. Это сработало для меня.

person Adarsh V C    schedule 23.10.2013

У меня была та же проблема.
Я хотел просмотреть дома свою диаграмму, которую я создал в тот же день на работе. Но я не смог из-за этого сообщения.
Я обнаружил, что владельцем базы данных был пользователь моего компьютера - как и ожидалось. но поскольку компьютер находится в домене компании, и я не подключен к сети компании, база данных не смогла определить владельца.

Итак, я сменил владельца на локального пользователя, и это сработало !!
Надеюсь, это кому-то поможет.

Вы меняете пользователя, щелкнув правой кнопкой мыши по базе данных, свойствам, файлам, владельцу

person PhpLou    schedule 04.07.2016

Выберите свою базу данных - щелкните правой кнопкой мыши - выберите свойства

Выберите ФАЙЛ в левой части страницы.

В поле ВЛАДЕЛЕЦ выберите кнопку с тремя точками (…) внутри

Теперь выберите пользователя «sa» и нажмите «ОК».

person Anil Rana    schedule 09.07.2018

Это исправило это для меня. Он устанавливает владельца, находящегося в разделе «файлы» окна свойств базы данных, и выполняется в соответствии со сценарием студии управления.

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

Согласно документации sp_changedbowner это устарело. в настоящее время.

На основании ответа Израиля. Ответ Аарона - это не устаревший вариант этого.

person Tim Abell    schedule 16.10.2014

Я только что испытал это. Я прочитал предложения на этой странице, а также предложения SQL Authority (что одно и то же), и ничего из вышеперечисленного не сработало.

В конце концов, я удалил учетную запись и создал заново (с тем же именем пользователя и паролем). Просто так все проблемы ушли.

К сожалению, это означает, что я не знаю, что пошло не так, поэтому больше ничего не могу поделить.

person Dave    schedule 07.03.2015

1. Щелкните правой кнопкой мыши базу данных, 2. Затем выберите свойства. 3. Выберите опцию в уровнях совместимости, выберите sql 2008 [100], если вы работаете с Microsoft sql 2008.

4. Затем выберите файл и напишите (sa) в текстовом поле владельца.

У меня 100% работает.

person Jefferson X Masonic    schedule 05.05.2015

Более простой способ решить эту проблему - щелкнуть правой кнопкой мыши имя вашей базы данных, выбрать «Новый запрос», ввести «exec sp_changedbowner 'sa'» и выполнить запрос. Тогда тебе будет хорошо.

person Lebone Mcdonald    schedule 02.06.2015

вы должны войти как администратор, щелкнуть правой кнопкой мыши в студии управления сервером microsofft sql и запустить как администратор

person abdelnaser rafat    schedule 23.01.2017

Необходимо только выполнить его в редакторе запросов. ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [домен \ аккаунт];

person Nui San    schedule 30.05.2019

Настоящая проблема заключается в том, что владельцу по умолчанию (dbo) вообще не назначен логин. Когда я попытался сопоставить логин sa с владельцем базы данных, я получил еще одну ошибку: «Пользователь, группа или роль 'dbo' уже существует ... ". Однако, если вы попробуете этот код, он действительно сработает:

EXEC sp_dbcmptlevel 'yourDB', '90';

go

ИЗМЕНИТЬ АВТОРИЗАЦИЮ В БАЗЕ ДАННЫХ :: yourDB НА "yourLogin"

go

используйте [yourDB]

go

ВЫПОЛНИТЬ КАК ПОЛЬЗОВАТЕЛЬ = N'dbo 'REVERT

go

person Vandana    schedule 17.04.2013

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

person Ezzo gasmallah    schedule 26.04.2015