18

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

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
数据库“主”中的 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 测试数据库服务器上创建或修改数据库和/或用户,我可以毫无问题地做到这一点。

4

5 回答 5

40

聚会迟到了,但是如果您没有 sa 密码,我发现了有关如何控制 SQLExpress 实例的精彩分步指南。我使用此过程不仅重置了我的 sa 密码,而且还将我的域帐户添加到所有可用的服务器角色中。我现在可以使用我的正常登录名创建数据库、更改登录名、执行批量操作、备份/恢复等。

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

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

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

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

于 2012-02-07T22:47:33.513 回答
3

在 SSMS 2012 中,您必须使用:

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

  1. 添加“-m;” 入参数;
  2. 重启服务并使用windows认证登录该SQL实例;
  3. 其余步骤同上。在安全中更改您的 Windows 用户帐户权限或重置 SA 帐户密码。
  4. 最后,从“启动参数”中删除“-m”参数;
于 2015-01-27T16:35:18.790 回答
1

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

于 2016-06-07T16:44:55.413 回答
0

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

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

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

echo %userdomain%\%username%

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

于 2015-07-08T17:24:56.837 回答