2009-05-14 41 views
12

Tôi cần thay đổi chủ sở hữu sơ đồ cơ sở dữ liệu trong SQL Server 2005. Hiện tại nó thuộc sở hữu của tôi (domain \ username.diagramName) và tôi muốn thay đổi nó thành sở hữu bởi dbo (dbo.diagramName). Tôi nghĩ rằng tôi có thể sử dụng sp_changeobjectowner, nhưng tôi tin rằng đó là chỉ cho các bảng, thủ tục lưu trữ, vv ... Tôi nghĩ rằng điều này là khá dễ dàng, tôi chỉ không thể tìm thấy bất cứ điều gì thông qua một tìm kiếm google.Thay đổi chủ sở hữu sơ đồ cơ sở dữ liệu trong SQL Server 2005

Trả lời

17

Cuối cùng, tôi đã phải gỡ bỏ mà người dùng giản đồ sau đó chạy bản cập nhật sau ...

-- to identify the diagram id, name, & owner 

select * 
from dbo.sysdiagrams 


-- to manually change the owner of a diagram 
-- note: i derived that the principal_id =1 for dbo from above query 

update 
dbo.sysdiagrams set principal_id =1 where diagram_id = 1 

tôi đã kết thúc nhận được sự giúp đỡ tôi cần từ một DBA đây trong khuôn viên trường.

+0

Như có thể thấy bằng cách chạy 'SELECT * FROM sys.database_principals',' principal_id' số 1 là tên chính 'dbo'. Tôi tưởng tượng người ta cũng có thể xem xét 'principal_id' 0, công khai. – jpmc26

2

Bài viết này cho biết bạn sẽ phải tự xóa mình với tư cách là người dùng của db. Mở nó lên với người sử dụng của sự lựa chọn của bạn.

http://msdn.microsoft.com/en-us/library/ms171972(VS.80).aspx

+0

Khi tôi cố gắng xóa người dùng, tôi nhận được ... TITLE: Microsoft SQL Server Management Studio Không thành công cho miền 'Tên người dùng'. (Microsoft.SqlServer.Smo) Để được trợ giúp, hãy nhấp vào: http://bit.ly/gHA9 THÔNG TIN BỔ SUNG: Đã xảy ra trường hợp ngoại lệ trong khi thực hiện lệnh hoặc lô Transact-SQL. (Microsoft.SqlServer.ConnectionInfo) Cơ sở dữ liệu chính sở hữu một lược đồ trong cơ sở dữ liệu và không thể bị loại bỏ. (Microsoft SQL Server, Lỗi: 15138) Để được trợ giúp, hãy nhấp vào: http://bit.ly/2lzKpz – Jason

+0

Tôi tưởng tượng có một lược đồ được gọi là 'jason' bạn sẽ cần phải thay đổi đối tượng từ lược đồ đó sang nó. http://msdn.microsoft.com/en-us/library/ms173423.aspx –

+0

Tôi đã xóa giản đồ và có thể xóa người dùng. Khi tôi quay trở lại biểu đồ, chủ sở hữu sau đó đã được thay đổi thành công khai. Vẫn không phải những gì tôi muốn. Bạn có thêm đề xuất nào không? – Jason

0

Mặc dù nó sẽ không giúp trong trường hợp này (vì nó chỉ cần tái tạo lại toàn bộ sysdiagrams hàng), các kịch bản

ScriptDiagram2005 hoặc ScriptDiagram2008

cho phép bạn tạo một kịch bản INSERT của nội dung của sơ đồ ', được chạy lại dựa vào cơ sở dữ liệu nguồn (hoặc bản sao lưu, hoặc bản sao theo kịch bản hoặc bất kỳ thứ gì). Bạn có thể dễ dàng (biết những gì bạn bây giờ biết về principal_id) tái tạo sơ đồ với một chủ sở hữu mới là tốt.

Chỉ cần tìm và chỉnh sửa các phần còn lại của tuyên bố này trong kịch bản

INSERT INTO sysdiagrams ([name], [principal_id], [version], [definition]) 

lợi ích thực sự là khả năng nguồn kiểm soát/sao lưu các tập tin văn bản ...

14
UPDATE dbo.sysdiagrams 
SET principal_id = 1 

Set một Mệnh đề WHERE nếu cần. Các văn bản trên cho thấy bạn cần phải loại bỏ người dùng từ cơ sở dữ liệu, nhưng tôi không phải làm điều đó. Tôi đang sử dụng SQL2008 R2.

5
USE [db_name] 
UPDATE dbo.sysdiagrams 
SET principal_id = 1 

nếu tuyên bố trên không làm việc, bạn có thể mất một chỉnh sửa trên bảng này với nhấp chuột phải vào dbo.sysdiagrams và chọn Edit top 200 hàng, sau đó bạn có thể thiết lập cột principal_id cho tất cả hồ sơ tự đặt tới 1

+0

Phương pháp không sql làm việc cho tôi. Tôi đã không hoàn toàn hiểu lúc đầu những gì bạn có nghĩa là @ xấu hổ aj nhưng có, để được rõ ràng hơn, theo System Tables, rt click vào dbo.sysdiagrams và chọn để chỉnh sửa hàng đầu 200. Trong bảng được hiển thị, bạn chỉ cần tìm hàng xác định sơ đồ quan tâm của bạn và thay đổi giá trị trong hàm principal_id thành 1. Hãy làm mới danh sách sơ đồ và bạn sẽ thấy nó cập nhật thành dbo làm chủ sở hữu. –

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