更改SQL Server 2005中的数据库关系图的所有者

时间:2009-05-14 19:14:26

标签: sql-server sql-server-2005

我需要在SQL Server 2005中更改数据库关系图的所有者。目前它归我所有(domain \ username.diagramName),我想将其更改为dbo(dbo.diagramName)所有。我以为我可以使用sp_changeobjectowner,但我相信这只适用于表格,存储过程等......我认为这很简单,我只是无法通过谷歌搜索找到任何东西。

5 个答案:

答案 0 :(得分:18)

最后,我必须删除该用户架构,然后运行以下更新...

-- 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

我最终在校园里得到了DBA所需的帮助。

答案 1 :(得分:14)

UPDATE dbo.sysdiagrams 
SET principal_id = 1

如果需要,设置WHERE子句。上面的文本建议您需要从数据库中删除用户,但我没有必要这样做。我正在使用SQL2008 R2。

答案 2 :(得分:5)

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

如果上述语句不起作用,您可以在此表上进行编辑,右键单击dbo.sysdiagrams并选择编辑前200行,然后您可以为所有手动设置为1的记录设置principal_id列

答案 3 :(得分:2)

本文指出,您必须将自己删除为db的用户。用您选择的用户打开它。

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

答案 4 :(得分:0)

虽然在这种情况下它没有帮助(因为它只是重新创建了整个sysdiagrams行),但这些脚本

ScriptDiagram2005ScriptDiagram2008

允许您创建图表'content'的 INSERT脚本,以便针对源数据库(或备份或脚本副本或其他任何内容)重新运行。你可以很容易地(知道你现在对principal_id的了解)重新创建一个新的所有者。

只需在脚本

中查找并编辑此语句的其余部分即可
INSERT INTO sysdiagrams ([name], [principal_id], [version], [definition])

真正的好处是能够源代码控制/备份文本文件...