我已设法(在“实验”中)从我的 SQL Express 实例中删除我的两个 Windows 用户。我现在以 Windows 管理员身份登录,并重新创建了相应的 SQL 登录,但我无法分配 sysadmin 权限。我收到错误:
用户无权执行此操作。(Microsoft SQL Server,错误:15247)
如果管理员做不到这一点,我是否应该开始寻找一只小动物来献祭?
答案1
您的 Windows 管理员帐户可能没有管理员权限 - 这取决于您的设置。您需要使用具有权限的帐户登录,或者以 sa 用户身份登录。
如果您没有启用 SQL 身份验证,则可以通过注册表调整来激活它。我认为这是正确的密钥:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<<instance name>>\MSSQLServer\Loginmode
它应该设置为混合模式(2),但当然您仍然需要知道安装实例时的 sa 密码是什么。
答案2
CodePlex 上有一个脚本,可以自动从丢失本地 SQL Server 实例的系统管理员权限中恢复,前提是您有权访问 Windows 管理员帐户:
答案3
如果您更喜欢使用 SSMS 而不是 sqlcmd/osql,请更新 SQL Server 实例的服务的启动权限以包含“-m”或 -m“Microsoft SQL Server Management Studio - Query”。
然后使用此命令通过命令行进行连接:
sqlcmd -E -S HOSTNAME\INSTANCENAME
或者通过 SSMS 连接:
\\.\pipe\hostname\instancename\sql\query
并使用它来添加您的登录名和角色:
CREATE LOGIN [domain\username] FROM WINDOWS;
GO
EXEC sp_addsrvrolemember 'domain\username', 'sysadmin';
GO
之后,您可以删除服务上的“-m”选项并正常启动它。