Câu trả lời được chọn và một số người khác đều tốt. Tôi chỉ muốn đưa ra một lời giải thích thuần túy hơn SQL. Nó đi đến cùng một giải pháp rằng không có chủ sở hữu cơ sở dữ liệu (hợp lệ).
Tài khoản chủ sở hữu cơ sở dữ liệu dbo
được đề cập trong lỗi luôn được tạo bằng cơ sở dữ liệu. Vì vậy, có vẻ lạ là nó không tồn tại nhưng bạn có thể kiểm tra với hai lựa chọn (hoặc một nhưng hãy giữ cho nó đơn giản).
SELECT [name],[sid]
FROM [DB_NAME].[sys].[database_principals]
WHERE [name] = 'dbo'
trong đó hiển thị SID của dbo
người dùng trong cơ sở dữ liệu DB_NAME và
SELECT [name],[sid]
FROM [sys].[syslogins]
để hiển thị tất cả thông tin đăng nhập (và SID của chúng) cho phiên bản máy chủ SQL này. Lưu ý rằng nó không viết bất kỳ tiền tố db_name nào, bởi vì mọi cơ sở dữ liệu đều có cùng thông tin trong chế độ xem đó.
Vì vậy, trong trường hợp lỗi ở trên sẽ không có thông tin đăng nhập với SID được gán cho người dùng cơ sở dữ liệu dbo.
Như đã giải thích ở trên, điều này thường xảy ra khi khôi phục cơ sở dữ liệu từ một máy tính khác (nơi cơ sở dữ liệu và người dùng dbo được tạo bằng cách đăng nhập khác nhau). Và bạn có thể sửa nó bằng cách thay đổi quyền sở hữu để đăng nhập hiện có.