Выбранный ответ и некоторые другие все хорошо. Я просто хочу дать более чистое объяснение SQL. Это приходит к тому же решению, что нет (действительного) владельца базы данных.
Учетная запись владельца базы данных, dbo
которая упоминается по ошибке, всегда создается вместе с базой данных. Поэтому кажется странным, что он не существует, но вы можете проверить с помощью двух выборок (или одного, но давайте будем проще).
SELECT [name],[sid]
FROM [DB_NAME].[sys].[database_principals]
WHERE [name] = 'dbo'
который показывает SID dbo
пользователя в базе данных DB_NAME и
SELECT [name],[sid]
FROM [sys].[syslogins]
показать все имена входа (и их SID) для этого экземпляра сервера SQL. Обратите внимание, что он не записывал префикс db_name, потому что каждая база данных имеет одинаковую информацию в этом представлении.
Таким образом, в случае ошибки выше не будет входа с SID, который назначен пользователю базы данных dbo.
Как объяснено выше, это обычно происходит при восстановлении базы данных с другого компьютера (где база данных и пользователь dbo были созданы с использованием другого имени входа). И вы можете это исправить, изменив владельца на существующий логин.