SQL Server 2008 R2 Express 权限——不能创建数据库或修改用户

Posted

技术标签:

【中文标题】SQL Server 2008 R2 Express 权限——不能创建数据库或修改用户【英文标题】:SQL Server 2008 R2 Express permissions -- cannot create database or modify users 【发布时间】:2012-02-29 09:43:52 【问题描述】:

最近刚刚升级到 SQL Server 2008 R2 Express。当我使用我的 id myuser 使用 Windows 身份验证登录后尝试创建数据库时,我收到此错误:

执行 Transact-SQL 语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo) 数据库“master”中的 CREATE DATABASE 权限被拒绝。 RESTORE HEADERONLY 异常终止 错误 262

如果我尝试将 sysadmin 角色添加到 myuser,这是我收到的错误:

为 ServerRole 'sysadmin' 添加成员失败。 (Microsoft.SqlServer.Smo) 执行 Transact-SQL 语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo) 用户无权执行此操作错误 15247

如果我尝试使用 T-SQL 将这个角色添加到我的用户,使用这个命令,

EXEC sp_addsrvrolemember 'ziffenergy\myuser', 'sysadmin';
GO

这是我收到的错误:

消息 15247,级别 16,状态 1,过程 sp_addsrvrolemember,第 29 行 用户无权执行此操作。

有人有什么建议吗?似乎我无法对本地机器上的数据库做任何事情。请注意,我是我正在使用的 Windows 7 工作站的管理员,如果我尝试使用 SQL Server Management Studio 在我们的网络 IT 测试数据库服务器上创建或修改数据库和/或用户,我可以毫无问题地做到这一点。

【问题讨论】:

【参考方案1】:

聚会迟到了,但如果您没有 sa 密码,我在获得 SQLExpress 实例控制权时发现了这个fantastic step-by-step guide。我使用此过程不仅重置了我的 sa 密码,而且还将我的域帐户添加到所有可用的服务器角色中。我现在可以使用我的正常登录名创建数据库、更改登录名、执行批量操作、备份/恢复等。

总而言之,您使用 SQL Server 配置管理器将您的实例置于单用户模式。这会在您连接时将您提升为系统管理员,让您能够设置所有内容。

编辑:我已经复制了以下步骤 - 感谢上面链接的原作者。

    以管理员(或任何具有管理员权限的用户)身份登录计算机 打开“SQL Server 配置管理器” 单击左侧窗格中的“SQL Server 服务” 如果“SQL Server”和“SQL Server 代理”实例正​​在运行,请在右窗格中停止它 通过右键单击“SQL Server”实例 -> 属性(在 SQL Server 配置管理器的右侧窗格中)以单用户模式运行 SQL Express。 单击高级选项卡,然后查找“启动参数”。更改“启动参数”,使新值为 -m; (没有 ) 例子: 来自:-dc:\Program Files\Microsoft SQL.............(直到字符串结束) 到:-m;-dc:\Program Files\Microsoft SQL.............(直到字符串结尾) 启动 SQL Server 打开您的 MS SQL Server Management Studio 并使用“Windows 身份验证”作为身份验证模式登录到 SQL Server。由于我们的 SQL Server 在单用户模式下运行,并且您以管理员权限登录到计算机,因此您将拥有对数据库的“系统管理员”访问权限。 在左侧窗格中展开 MS SQL Server Management Studio 上的“安全”节点 展开“登录”节点 双击“sa”登录 如果勾选了“强制执行密码策略”,请输入复杂密码来更改密码,否则,只需输入任何密码。 通过单击左侧窗格中的状态确保“sa”帐户已“启用”。将“登录”下的单选框设置为“启用” 点击“确定” 返回 MS SQL Server Management Studio 的主窗口,通过右键单击左窗格中最顶部的节点(通常为“.\SQLEXPRESS (SQL Server )”)并选择属性来验证是否使用了 SQL Server 身份验证。 单击左侧窗格中的“安全”,并确保“SQL Server 和 Windows 身份验证模式”为“服务器身份验证”下选择的一项 点击“确定” 与 MS SQL Server Management Studio 断开连接 再次打开“Sql Server 配置管理器”并停止 SQL Server 实例。 右键单击 SQL Server 实例并单击“高级”选项卡。再次查找“启动参数”并删除“-m;”您之前添加的。 单击“确定”并再次启动 SQL Server 实例 您现在应该可以使用在第 12 步中设置的新密码以“sa”身份登录。

【讨论】:

也适用于 Sql Server 2008 R2 Enterprise。谢谢! 非常感谢。它在 SQL Server 2008 R2 中为我工作。你救了我很多天....【参考方案2】:

您可能是工作站的管理员,但这对 SQL Server 没有任何意义。您的登录名必须是 sysadmin 角色的成员才能执行相关操作。默认情况下,本地管理员组不再添加到 SQL 2008 R2 中的 sysadmin 角色。您需要使用其他内容(例如 sa)登录才能授予自己权限。

【讨论】:

感谢您的反馈。是的,我尝试使用 sa 登录;但是,当我尝试为 sa 设置密码时,我收到以下错误消息:“登录 'sa' 更改密码失败。(Microsoft.SqlServer.Smo) 执行 Transact-SQL 语句或批处理时发生异常。(Microsoft .SqlServer.ConnectionInfo) 无法更改登录 'sa',因为它不存在或您没有权限。(Microsoft SQL Server,错误:15151)“有什么想法吗? 同样的问题。您将无法设置密码,因为您的帐户在 SQL 实例中没有必要的权限。如果您不知道具有系统管理员权限(或在您的情况下不太可能出现的某些其他更专业的权限)的帐户的登录详细信息,那么您需要从拥有系统管理员权限的人那里获取。 但是我是在我的工作站上安装 SQL Server 2008 R2 软件的人,所以我不应该拥有所需的权限吗? 如果您在 SQL Server 设置期间专门配置了您的帐户(它要求您将帐户添加到 sysadmin 组),那么可以。它不会自动将您添加到 sysadmin 组,也不会自动添加除 sa 之外的任何内容。它应该在安装过程中要求您设置 sa 密码。你还记得这样做吗? 为了进一步澄清,我实际上并没有选择混合模式身份验证(在这种情况下我会指定一个 sa 密码)。相反,我选择了“Windows 身份验证”,但在执行上述评论中提到的 sp_addsrvrolemember 操作之前,我仍然没有创建数据库的权限。【参考方案3】:

在 SSMS 2012 中,您必须使用:

要启用单用户模式,在 SQL 实例属性中,不要转到“Advance”标签,已经有一个“Startup Parameters”标签。

    添加“-m;”进入参数; 重启服务并使用windows认证登录此SQL实例; 其余步骤同上。在安全中更改您的 windows 用户帐户权限或重置 SA 帐户密码。 最后,从“启动参数”中删除“-m”参数;

【讨论】:

【参考方案4】:

我按照 killthrush 回答中的步骤进行操作,令我惊讶的是它没有用。以 sa 身份登录我可以看到我的 Windows 域用户并将他们设为系统管理员,但是当我尝试使用 Windows auth 登录时,我在登录名下看不到我的登录名,无法创建数据库等。然后它击中了我。 该登录名可能与另一个同名域帐户相关联(使用某种不正确的内部/隐藏 ID)。我前一段时间离开了这个组织,几个月后又回来了.他们没有重新激活我的旧帐户(他们可能已删除),而是创建了一个具有相同域\用户名和新内部 ID 的新帐户。使用 sa 我删除了我的旧登录名,使用相同的名称重新添加它并添加了 sysadmin。我使用 Windows Auth 重新登录,一切看起来都正常。我现在可以看到我的登录信息(和其他登录信息),并且可以使用我的 Windows 身份验证登录信息作为系统管理员执行我需要执行的任何操作。

【讨论】:

关于域帐户的好点 - 可能是引擎盖下的不同 SID。要验证这种事情,可以使用 powershell 而不会太痛苦:windowsitpro.com/windows-server/…【参考方案5】:

我的 Windows 机器上有 2 个帐户,其中一个帐户遇到了这个问题。我不想使用sa 帐户,我想使用Windows 登录。对我来说,我需要简单地登录到我用来安装 SQL Server 的另一个帐户,并从那里添加新帐户的权限,这对我来说并不是很明显

(SSMS > Security > Logins > Add a login there)

获取需要添加的完整域名的简单方法打开 cmd echo 每个。

echo %userdomain%\%username%

为该用户添加一个登录名,并为其提供主数据库和您想要的其他数据库的所有权限。当我说“所有权限”时,请确保不要检查任何“拒绝”权限,因为那样会适得其反。

【讨论】:

以上是关于SQL Server 2008 R2 Express 权限——不能创建数据库或修改用户的主要内容,如果未能解决你的问题,请参考以下文章

跪求SQL Server 2008 R2 Standard (64

SQL Server2008和SQL Server2008R2的区别,高手速进

SQL Server 2008 R2 Express三个版本有啥区别?

sql server2008升级到2008 R2出现问题

数据库SQL server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?

windows server2012 r2能安装sqlserver2008 R2吗