Hiệu trưởng cơ sở dữ liệu sở hữu một lược đồ trong cơ sở dữ liệu và không thể bỏ thông báo


28

Tôi đang cố xóa một hiệu trưởng khỏi cơ sở dữ liệu nhưng không thể vì nó sở hữu một lược đồ. Tuy nhiên, khi tôi đi chỉnh sửa người dùng, hộp để bỏ chọn lược đồ có màu xanh và không thể điều chỉnh được. Làm thế nào tôi có thể loại bỏ hiệu trưởng khỏi các lược đồ này?

Câu trả lời:


31

Hãy thử T-SQL để làm điều này:

alter authorization
on schema::YourSchemaName
to dbo
go

drop user TheUserYouWantToDelete
go

Bạn không thể bỏ hiệu trưởng là chủ sở hữu lược đồ, do đó, ALTER AUTHORZATIONthay đổi lược đồ sở hữu (tôi đã sử dụng YourSchemaName, nhưng rõ ràng thay thế lược đồ sở hữu trong cơ sở dữ liệu của bạn) thành dbo(tương tự, bạn có thể thay đổi quyền sở hữu thành bất kỳ hiệu trưởng nào bạn cần trong môi trường). Điều đó sẽ cho phép bạn loại bỏ người dùng sở hữu lược đồ trước đây (ví dụ như các mục đích tôi đã sử dụng TheUserYouWantToDelete, nhưng đó sẽ là người không phải là chủ sở hữu mà bạn muốn loại bỏ).


Được rồi, vì vậy điều này làm việc. Tôi hơi bối rối là tại sao, tuy nhiên. Tại sao tôi cần ủy quyền lược đồ cho lược đồ khác? Có lẽ tôi cần xem lại các lược đồ ...
thật đáng ngạc nhiên là

1
@rsteckly Đơn giản hóa, ủy quyền = quyền sở hữu. Nếu bạn có thể xóa người dùng sở hữu lược đồ, lược đồ sẽ không hợp lệ, vì chủ sở hữu không còn tồn tại. Hãy tưởng tượng bạn có thể xóa một khách hàng đã đặt hàng. CustomerID trong bảng Đơn hàng có nghĩa là gì nếu không còn Khách hàng mà nó trỏ đến? Tôi nên đặt hàng ở đâu?
Aaron Bertrand

Xin lỗi, ví dụ của tôi không được giải thích tốt. Chúng tôi không thay đổi ủy quyền cho dbolược đồ, chúng tôi đang thay đổi ủy quyền cho dbohiệu trưởng. Đó có thể là bất kỳ cơ sở dữ liệu chính.
Thomas Stringer

30

Cách T-SQL hoạt động. Nhờ http://zarez.net/?p=179 tôi đã tìm thấy cách SSMS để làm điều này (UI).

Để thay đổi chủ sở hữu lược đồ từ Sql Server Management Studio:

Expand your database -> Security -> Schemas

Trong Chi tiết thám hiểm đối tượng, bạn có thể thấy danh sách các lược đồ và chủ sở hữu:

nhập mô tả hình ảnh ở đây

Nếu bạn không biết (các) lược đồ nào mà Người dùng sở hữu, hãy kiểm tra các thuộc tính của Người dùng.

nhập mô tả hình ảnh ở đây

Mở các thuộc tính của lược đồ mà Người dùng sở hữu và nhấp vào "Tìm kiếm" để tìm chủ sở hữu mới. Nếu bạn không biết chủ sở hữu mới, bạn có thể "Duyệt" cho một chủ sở hữu.

Properites -> Search -> Browse

và bạn có thể thay đổi chủ sở hữu lược đồ thành dbo (hoặc bất cứ ai phù hợp nhất).

nhập mô tả hình ảnh ở đây


1
Cách T-SQL tốt hơn và linh hoạt hơn nhiều. Làm điều đó thông qua GUI luôn luôn là một nỗi đau!
Kin Shah

Tôi là tất cả cho cách T-SQL, cũng bởi vì nó có thể được sử dụng trong các tập lệnh.
woodvi

2
Lưu ý: F7 là phím tắt để hiển thị chi tiết nếu nó không xuất hiện
Simon_Weaver
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.