无法安装数据库关系图支持对象... ... 没有有效的所有者

我尝试用 SQLServer2008创建一个数据库关系图,但出现了一个错误:

数据库关系图支持对象 无法安装,因为 数据库没有有效的所有者。 若要继续,请首先使用“文件”页 “数据库属性”对话框的 或 ALTERAUTHORIZATION 语句 将数据库所有者设置为有效的 登录,然后添加数据库关系图 支撑物。

然后我尝试了以下方法:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

下一个错误弹出:

味精15404,16层,州11,1号线 无法获得有关 Windows NT 组/用户 “ WIN-NDKPHUPPNFL 管理员”,错误 代码0x534。

问题是 PC 的名称已经改成了“ DevPC”,我在更新脚本中也改了这个,但仍然是15404错误。

我能做些什么来修复这个恼人的错误?

181383 次浏览

您应该考虑使用 SQL 身份验证帐户来获得数据库所有权; 这样您就不必担心帐户的进出、数据库或实例移动到不同的服务器以及下一个 PC 名称的更改。我有几个系统,我们使用:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

或者,如果您想将所有者更改为本地管理员帐户,那么应该是:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

因为将机器重命名为 DevPC消除了以前命名为 WIN-ND...\Administrator的本地帐户,这也使数据库的当前所有者无效。

如果 SELECT @@SERVERNAME;不准确(应该是 DevPC) ,那么为了确保您的服务器重命名在 SQLServer 中起作用,您可能还需要发出以下命令:

EXEC sys.sp_dropserver @server = N'old server name';
GO
EXEC sys.sp_addserver @server = N'DevPC', @local = N'local';
GO

在 SQLServerManagementStudio 中执行下列操作:

  1. 右击数据库,选择属性
  2. 转到选项页
  3. 在右边标记为“兼容级别”的下拉列表中,选择“ SQLServer2005(90)” 如果收到可比性错误,请选择“ SQLServer2008”。
  4. 转到“文件”页
  5. 在所有者文本框中输入“ sa”。 5-1或者点击省略号(...) ,选择一个合法的所有者。
  6. 按 OK 键

完成此操作后,您现在可以访问数据库关系图。

enter image description here

真正的问题是缺省所有者(dbo)根本没有映射到它的登录名。当我试图将 sa 登录名映射到数据库所有者时,我收到了另一个错误,说明“ User,group,or role‘ dbo’already been...”。然而,如果你尝试这个代码,它实际上会工作:

EXEC sp _ dbcmptlevel‘ yourDB’,’90’;

去吧

更改数据库上的授权: : yourDB 到“ yourLogin”

去吧

使用[ yourDB ]

去吧

执行为 USER = N’dbo’REVERT

去吧

在所有者文本框中输入“ SA”而不是“ SA”。

这东西帮我修好了。它设置在数据库属性窗口的“ files”部分下找到的所有者,并且是由 management Studio 编写的脚本。

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

根据 Sp _ changedbowner 文档的说法,这个现在已经被废弃了。

基于以色列的回答,亚伦的回答是这个的不可否认的变体。

我刚经历了这一切。我已经阅读了这个页面上的建议,以及 SQL 权威的建议(这是相同的东西) ,上面的建议都不起作用。

最后,我删除了帐户并重新创建(使用相同的用户名/密码)。就这样,所有的问题都消失了。

遗憾的是,这意味着我不知道出了什么问题,所以我不能分享任何其他东西。

右键单击数据库,然后选择属性。 如果您使用的是 Microsoft sql 2008,请在兼容级别中选择选项,选择 sql 2005[90]而不是2008。 然后选择文件并在所有者的文本框中写入(sa)。 可能会有用

1. 右键单击数据库, 然后选择属性。 3. 如果使用 Microsoftsql2008,请在兼容级别中选择选项,选择 sql2008[100]。

4. 然后选择文件并在所有者的文本框中写入(sa)

百分之百适合我。

解决这个问题的一个更简单的方法是右键单击数据库的名称,选择“ New Query”,键入“ exec sp _ changedbowner‘ sa’”并执行查询。然后你就可以走了。

我也有同样的问题。
我想查看我的图表,这是我在工作的同一天,在家里创建的。但是因为这条信息我不能。
我发现数据库的所有者就是我电脑的用户——正如预期的那样。但是因为计算机是在公司的领域,我没有连接到公司的网络,数据库无法解决所有者。

所以我做的是 将所有者更改为本地用户,它工作了! !
希望这对谁有帮助。

您可以通过右键单击数据库、属性、文件、所有者来更改用户

您必须以管理员身份进入 Microsoftsql 服务器管理工作室并以管理员身份运行

USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

有用。

选择数据库-右击-选择属性

在页面左侧选择 FILE

在“所有者”框中,选择包含三个点(...)的按钮

现在选择 user‘ sa 并单击 OK

只需要在查询编辑器中执行它 更改数据库上的授权: : Your DATABASE TO [ domain account ] ;