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

Я попытался создать диаграмму базы данных с SQL Server 2008, но произошла ошибка:

объекты поддержки диаграмм базы данных не удается установить, потому что это база данных не имеет действительного владельца. Чтобы продолжить, сначала используйте страницу файлы диалогового окна Свойства базы данных или инструкция Alter AUTHORIZATION чтобы задать владельцу базы данных значение valid войдите в систему, затем добавьте диаграмму базы данных объекты поддержки.

затем я попробовал следующий:

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

следующий erorr всплывает:

Msg 15404, Уровень 16, Состояние 11, Строка 1 Не удалось получить информацию о Группа/пользователь Windows NT "WIN-NDKPHUPPNFLAdministrator", ошибка код кодом 0x534.

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

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

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 sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

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

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

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

enter image description here


1.Выберите свою базу данных >> Right Click >> Select Properties
2.Выберите FILE в левой части страницы
3.В или NT AUTHORITY\SYSTEM и нажмите кнопку OK


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


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

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

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


это фиксированная это для меня. Он устанавливает владельца, найденного в разделе "Файлы" окна свойств базы данных, и соответствует сценарию management studio.

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

по словам документация процедуры sp_changedbowner теперь это устарело.

на основе ответа Израиля. Ответ Аарона-это не осуждаемый вариант этого.


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

это работает.


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

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

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


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

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

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


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


вы должны ввести как администратор щелкните правой кнопкой мыши на microsofft SQL server management studio и запустите как admin


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

Выберите "файл" в левой части страницы

в поле Владелец выберите кнопку, которая имеет три точки (...) в нем

Теперь выберите user ' sa и нажмите OK


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

exec в разделе sp_dbcmptlevel'', '90';

go

изменить авторизацию в базе данных:: yourDB на "yourLogin"

go

использование [yourDB]

go

выполнить как USER = N'dbo' REVERT

go


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