2009-04-20 43 views
42

Khi tôi vô tình click vào tab Sơ đồ cơ sở dữ liệu, tôi nhận được một trong các lỗi sau đây:Làm cách nào để thay đổi chủ sở hữu của cơ sở dữ liệu SQL Server?

đối tượng cơ sở dữ liệu sơ đồ hỗ trợ không thể được cài đặt bởi 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 báo cáo ALTER AUTHORIZATION để đặt chủ sở hữu cơ sở dữ liệu thành thông tin đăng nhập hợp lệ, sau đó thêm biểu đồ cơ sở dữ liệu .

--- hoặc ---

Cơ sở dữ liệu không có một hoặc nhiều của các đối tượng hỗ trợ cần thiết để sử dụng cơ sở dữ liệu biểu đồ. Bạn có muốn tạo chúng không?

Cú pháp để thay đổi chủ sở hữu của cơ sở dữ liệu này thành 'sa' là gì?

+0

Tôi không hiểu lý do tại sao bạn nghĩ rằng điều này có bất cứ điều gì để làm với các chủ sở hữu? Nó chỉ muốn biết nếu nó nên tạo ra các đối tượng để làm cho sơ đồ có thể. –

+0

Nếu tôi thay đổi chủ sở hữu, sau đó tôi không được nhắc tạo đối tượng. Tôi không chắc liệu chúng có được tạo tự động sau đó hay không. –

Trả lời

68

để thay đổi chủ sở hữu đối tượng thử như sau

EXEC sp_changedbowner 'sa' 

rằng tuy nhiên không phải là vấn đề của bạn, để xem sơ đồ Da Vinci cụ đối tượng đã được tạo ra (bạn sẽ thấy bảng và procs bắt đầu bằng dt_) sau đó

+4

Theo BOL: Tính năng này sẽ bị xóa trong phiên bản tương lai của Microsoft SQL Server. Tránh sử dụng tính năng này trong công việc phát triển mới và có kế hoạch sửa đổi các ứng dụng hiện đang sử dụng tính năng này. Sử dụng ALTER AUTHORIZATION để thay thế. https://msdn.microsoft.com/en-us/library/ms178630(v=sql.110).aspx –

3

Đây là lời nhắc tạo một nhóm đối tượng, chẳng hạn như sp_help_diagram (?), Không tồn tại.

Điều này không liên quan gì đến chủ sở hữu của db.

+1

Bạn có thể giải thích tại sao tôi không còn được nhắc điều này sau khi tôi thay đổi chủ sở hữu không? Các đối tượng có được tạo tự động hay không SQL Server chỉ dừng hỏi tôi vì tài khoản của tôi không còn là chủ sở hữu nữa? –

+0

Trong trường hợp này, DB được sở hữu bởi thông tin đăng nhập đã bị loại bỏ. Tôi không chắc tại sao vì "sa" sở hữu tất cả các cơ sở dữ liệu của chúng tôi. – gbn

62

Để thay đổi chủ sở hữu cơ sở dữ liệu:

ALTER AUTHORIZATION ON DATABASE::YourDatabaseName TO sa 

Tính đến SQL server 2014 bạn vẫn có thể sử dụng sp_changedbowner là tốt, mặc dù Microsoft hứa sẽ loại bỏ nó trong phiên bản "tương lai" sau khi SQL Server 2012. Họ loại bỏ nó từ SQL Server 2014 BOL mặc dù.

+2

@ilter - không chắc tôi đã hiểu nhận xét của bạn. Câu hỏi đặt ra là 'Cú pháp để thay đổi chủ nhân của cơ sở dữ liệu này thành' sa 'là gì? Tôi tin rằng tôi đã trả lời câu hỏi này. Nếu bạn chạy câu lệnh này, chủ sở hữu DB sẽ được đổi thành sa.Hơn nữa đây là cú pháp được khuyến cáo để sử dụng như là đối diện để sử dụng sp_changedbowner cũ hơn mà có khả năng sẽ được gỡ bỏ cuối cùng. –

0

Dưới đây là một cách để thay đổi chủ sở hữu trên TẤT CẢ DBS (trừ hệ thống)

EXEC sp_msforeachdb' 
USE [?] 
IF ''?'' <> ''master'' AND ''?'' <> ''model'' AND ''?'' <> ''msdb'' AND ''?'' <> ''tempdb'' 
BEGIN 
exec sp_changedbowner ''sa'' 
END 
' 
+1

Không sử dụng sp_msforeachdb trừ khi bạn thích cơ sở dữ liệu bị thiếu đôi khi, đây là một vấn đề được ghi lại. – ConstantineK

Các vấn đề liên quan