我需要在SQL Server 2005中更改数据库关系图的所有者。目前它归我所有(domain \ username.diagramName),我想将其更改为dbo(dbo.diagramName)所有。我以为我可以使用sp_changeobjectowner,但我相信这只适用于表格,存储过程等......我认为这很简单,我只是无法通过谷歌搜索找到任何东西。
答案 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
行),但这些脚本
ScriptDiagram2005或ScriptDiagram2008
允许您创建图表'content'的 INSERT脚本,以便针对源数据库(或备份或脚本副本或其他任何内容)重新运行。你可以很容易地(知道你现在对principal_id
的了解)重新创建一个新的所有者。
只需在脚本
中查找并编辑此语句的其余部分即可INSERT INTO sysdiagrams ([name], [principal_id], [version], [definition])
真正的好处是能够源代码控制/备份文本文件...