136

我尝试使用 SQL Server 2008 创建数据库图表,但出现错误:

无法安装数据库图表支持对象,因为该数据库没有有效的所有者。要继续,首先使用数据库属性对话框的文件页面或 ALTER AUTHORIZATION 语句将数据库所有者设置为有效登录,然后添加数据库图表支持对象。

然后我尝试了以下方法:

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\Administrator”的信息,错误代码 0x534。

问题是 PC 的名称已更改为“DevPC”我也在更新脚本中更改了此名称,但仍然是相同的错误 15404。

我能做些什么来解决这个恼人的错误?

4

14 回答 14

218

在 SQL Server Management Studio 中执行以下操作:

  1. 右键单击您的数据库,选择属性
  2. 转到选项页面
  3. 在右侧标有“兼容性级别”的下拉菜单中选择“SQL Server 2005(90)”3-1。如果收到可比性错误,请选择“SQL Server 2008”。
  4. 转到文件页面
  5. 在所有者文本框中输入“sa”。5-1 或单击省略号 (...) 并选择合法所有者。
  6. 点击确定

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

在此处输入图像描述

于 2012-04-20T14:26:22.897 回答
189

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

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

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

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

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

如果SELECT @@SERVERNAME;不准确(应该说DevPC),那么为了确保您的服务器重命名已在 SQL Server 中生效,您可能还需要发出以下命令:

EXEC sys.sp_dropserver @server = N'old server name';
GO
EXEC sys.sp_addserver @server = N'DevPC', @local = N'local';
GO
于 2010-01-11T17:50:07.657 回答
8
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

有用。

于 2017-01-31T06:53:38.727 回答
5

在所有者文本框中输入“SA”而不是“sa”。这对我有用。

于 2013-10-23T13:19:48.957 回答
5

我有同样的问题。
我想在家里查看我当天在工作中创建的图表。但我不能因为这个消息。
我发现数据库的所有者是我计算机的用户 - 正如预期的那样。但是由于电脑在公司的域中,而且我没有连接到公司的网络,所以数据库无法解析所有者。

所以我所做的就是将所有者更改为本地用户并且它有效!
希望这可以帮助某人。

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

于 2016-07-04T22:46:38.397 回答
5

选择你的数据库——右键——选择属性

选择页面左侧的文件

在 OWNER 框中,选择其中包含三个点 (...) 的按钮

现在选择用户 'sa 并单击 OK

于 2018-07-09T18:21:51.070 回答
3

这为我修好了。它设置在数据库属性窗口的“文件”部分下找到的所有者,并且由管理工作室编写脚本。

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

根据sp_changedbowner 文档,现在已弃用。

根据以色列的回答。亚伦的回答是这个的不被弃用的变体。

于 2014-10-16T10:33:25.890 回答
0

我刚刚经历了这一点。我已经阅读了这个页面上的建议,以及 SQL 权威的建议(这是同一件事),但以上都没有奏效。

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

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

于 2015-03-07T16:12:38.870 回答
0

1.右键单击您的数据库, 2.然后选择属性。3.选择兼容性级别中的选项,如果您使用的是 Microsoft sql 2008,请选择 sql 2008[100]。

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

100% 为我工作。

于 2015-05-05T14:56:35.373 回答
0

解决此问题的更简单方法是右键单击数据库名称,选择“新建查询”,键入“exec sp_changedbowner 'sa'”并执行查询。然后你就可以走了。

于 2015-06-02T07:38:35.777 回答
0

您必须以管理员身份输入右键单击以进入 microsofft sql server management studio 并以管理员身份运行

于 2017-01-23T18:25:23.980 回答
0

只需要在查询编辑器中执行它 ALTER AUTHORIZATION ON DATABASE::YourDatabase TO [domain\account];

于 2019-05-30T15:27:20.877 回答
-3

真正的问题是默认所有者(dbo)根本没有映射到它的登录名。当我尝试将 sa 登录名映射到数据库所有者时,我收到另一个错误,指出“用户、组或角色 'dbo'已经存在...”。但是,如果您尝试使用此代码,它实际上会起作用:

执行 sp_dbcmptlevel 'yourDB', '90';

将 DATABASE::yourDB 上的授权更改为“yourLogin”

使用 [你的数据库]

以用户身份执行 = N'dbo' REVERT

于 2013-04-17T09:18:31.373 回答
-3

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

于 2015-04-26T08:38:21.003 回答