Lỗi khi thay đổi quyền sở hữu cơ sở dữ liệu từ Trang tệp trong hộp thoại thuộc tính cơ sở dữ liệu


10

Tôi đã khôi phục cơ sở dữ liệu và tạo một người dùng mới (cùng một người dùng mà tôi đã đăng nhập) dưới dạng db_owner. Bây giờ khi tôi muốn xem sơ đồ cơ sở dữ liệu đã có lỗi

Các đối tượng hỗ trợ Sơ đồ cơ sở dữ liệu không thể được cài đặt vì cơ sở dữ liệu này không có chủ sở hữu hợp lệ. Để tiếp tục, trước tiên hãy sử dụng trang tệp của hộp thoại Thuộc tính cơ sở dữ liệu hoặc câu lệnh ủy quyền thay đổi để đặt chủ sở hữu cơ sở dữ liệu thành thông tin đăng nhập hợp lệ, sau đó thêm các đối tượng hỗ trợ cơ sở dữ liệu

Bây giờ khi tôi cố gắng thay đổi quyền sở hữu từ trang Tệp của Thuộc tính Cơ sở dữ liệu, tôi gặp lỗi như

Đặt chủ sở hữu không thành công cho cơ sở dữ liệu 'ABC'. (Microsoft.SqlServer.SMO) Thông tin bổ sung: đã xảy ra ngoại lệ trong SMO Chủ sở hữu cơ sở dữ liệu mới được đề xuất James-PC \ James được ánh xạ là người dùng James trong cơ sở dữ liệu này. Tên tham số: James-PC \ James "

Vui lòng giúp tôi khắc phục sự cố để tôi có thể xem sơ đồ cơ sở dữ liệu trên máy tính này sau khi khôi phục bản sao lưu cơ sở dữ liệu từ hệ thống khác.

Câu trả lời:


8

Chủ sở hữu cơ sở dữ liệu là thông tin đăng nhập trong sys.server_principals sở hữu cơ sở dữ liệu, như được định nghĩa bởi SID của nó. Sau khi khôi phục, có thể dễ dàng xảy ra trường hợp đăng nhập được sử dụng để khôi phục cơ sở dữ liệu không phải là thông tin đăng nhập mà là chủ sở hữu trước đó của cơ sở dữ liệu. (Điều này thậm chí có nhiều khả năng xảy ra khi cơ sở dữ liệu nếu được di chuyển giữa các máy chủ.)

Vì vậy, có thể có ba cài đặt mà bạn đang gặp sự cố

  1. Chủ sở hữu cơ sở dữ liệu không bằng sid db_owner của cơ sở dữ liệu. Bạn có thể so sánh điều này cho cơ sở dữ liệu ABC bằng cách:

    CHỌN own_sid TỪ sys.database trong đó name = 'ABC';

    CHỌN sid từ ABC.sys.database_principals WHERE name = 'dbo';

  2. Tiếp theo, bạn nhận được một thông báo nói rằng chủ sở hữu cơ sở dữ liệu được đề xuất của bạn cũng tồn tại như một người dùng trong sys.database_principals. Chúng tôi biết điều này từ thông báo lỗi về ánh xạ chủ sở hữu đề xuất.

Vì vậy, các bước của bạn là:

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

Bạn đã bỏ người dùng không cần thiết, vì bạn đang biến nó thành dbo. Một khi đó là ngoài lề, sau đó đăng nhập của bạn có thể được làm chủ sở hữu của cơ sở dữ liệu.

EDIT: Bạn cũng có thể sử dụng SSMS để xóa người dùng James khỏi cơ sở dữ liệu ABC. Sau đó, bạn có thể quay lại tab Tệp thuộc tính cơ sở dữ liệu để đặt chủ sở hữu cơ sở dữ liệu. (Xin lỗi, tôi có xu hướng nghĩ kịch bản.)


1
Đó là thú vị, trong Management Studio đăng nhập mà đã được thực hiện một dbo không xuất hiện dưới YOUR_DB / Security / Users,
joedotnot

-3
  1. nhấp chuột phải vào cơ sở dữ liệu
  2. tính chất
  3. Chọn tệp tin
  4. sửa / đặt chủ sở hữu (vào yourpc \ you hoặc duyệt và chọn bằng cách nhấp vào "...")

điều này làm việc cho tôi trong studio quản lý máy chủ SQL v17.1


2
Tôi nghĩ chính xác điều này đã không làm việc cho họ.
dezso
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.