最近刚升级到SQL Server 2008 R2 Express。当我使用Windows身份验证使用我的id myuser登录后尝试创建数据库时,我收到此错误:
执行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测试数据库服务器上创建或修改数据库和/或用户,我可以毫无问题地执行此操作。
答案 0 :(得分:38)
派对迟到了,但是如果你没有密码,我发现这个fantastic step-by-step guide可以控制你的SQLExpress实例。我使用此过程不仅重置了我的sa密码,而且还将我的域帐户添加到所有可用的服务器角色。我现在可以使用正常登录创建数据库,更改登录,执行批量操作,备份/恢复等。
总而言之,您使用SQL Server配置管理器将您的实例置于单用户模式。当你连接时,这会将你提升到系统管理员,让你能够设置一切。
编辑:我已经复制了以下步骤 - 感谢上述链接的原始作者。
答案 1 :(得分:14)
您可能是工作站的管理员,但这对SQL Server没有任何意义。您的登录名必须是sysadmin角色的成员才能执行相关操作。默认情况下,不再将本地管理员组添加到SQL 2008 R2中的sysadmin角色。您需要使用其他东西(例如sa)登录才能授予您自己的权限。
答案 2 :(得分:2)
在SSMS 2012中,您必须使用:
要启用单用户模式,在SQL实例属性中,请勿转到" Advance"标签,已经有一个"启动参数"标签。
答案 3 :(得分:1)
我按照了killthrush的回答中的步骤,令我惊讶的是它没有用。以sa身份登录我可以看到我的Windows域用户并使他们成为系统管理员,但是当我尝试使用Windows身份验证登录时,我无法在登录状态下看到我的登录信息,无法创建数据库等等。它击中了我。 该登录可能与另一个具有相同名称的域帐户相关联(某种内部/隐藏ID并非正确)。我离开了该组织一段时间后又回来了几个月后。他们创建了一个具有相同域\用户名和新内部ID的新帐户,而不是重新激活我的旧帐户(他们可能已删除)。使用sa我删除了我的旧登录名,重新添加了相同名称并添加了sysadmin。我使用Windows Auth重新登录,一切看起来都应该如此。我现在可以看到我的登录(和其他人),并且可以使用我的Windows身份验证登录作为系统管理员做我需要做的任何事情。
答案 4 :(得分:0)
我的Windows机器上有2个帐户,我遇到了其中一个问题。我不想使用List<string> newCodes = new List<string>()
foreach (string sub1 in codes.Select(item => item.Substring(0,2)).Distinct)
{
StringBuilder code = new StringBuilder();
code.Append("sub1(");
foreach (string sub2 in codes.Where(item => item.Substring(0,2) == sub1).Select(item => item.Substring(2))
code.Append(sub2 + ",");
code.Append(")");
newCodes.Add(code.ToString());
}
帐户,我想使用Windows登录。对我来说,我不需要立即登录我用来安装SQL Server的其他帐户,并从那里添加新帐户的权限
sa
获取您需要添加的完整域名的简便方法每个人都可以打开cmd echo。
(SSMS > Security > Logins > Add a login there)
为该用户添加一个登录名,并为主db和所需的其他数据库提供所有权限。当我说“所有权限”时,请确保不检查任何“拒绝”权限,因为这样做会相反。