为什么我没有权限更改此SQL Server Express 2005密码?

时间:2010-01-15 15:39:18

标签: sql-server sql-server-express

我可以访问SQL 2005 Express的安装。我可能是不久前自己安装的。但是暂时没有使用它。

我尝试通过我通常用于本地安装的“sa”密码来访问此实例。

但是这个密码不起作用。

我仔细检查了混合模式身份验证是否已设置且sa用户是否存在。

我可以通过Windows身份验证访问实例并查询数据库(甚至是主数据库)。没问题。

然后我尝试使用这个sql重置sa密码:

ALTER LOGIN sa WITH PASSWORD = 'MyNewPassword';

此错误立即失败:

Cannot alter the login 'sa', because it does not exist or you do not have permission.

那么为什么我的本地Windows用户没有权限这样做呢?

2 个答案:

答案 0 :(得分:1)

您是否关注these steps?

您是否以首先安装服务的本地管理员用户身份登录,还是本地管理员?能够阅读是一个级别的许可。能够更改数据,尤其是服务器级对象是另一组权限。仅仅因为你可以阅读并不意味着你将能够写作。

如果使用不同的管理登录失败,您可以随时使用recovery tool

破解您的密码

答案 1 :(得分:1)

我知道这是一篇较旧的帖子,但我仍然在寻找自己问题的答案时找到了它。

这里有2个选项:

  1. 单用户模式
  2. PSExec使用NT Authority \ System
  3. Option 1: (from blog post)

    • 在托管数据库的计算机上打开SQL Server配置管理器
    • 单击SQL Server服务
    • 单击所需的SQL Server实例,然后右键单击转到属性
    • 在高级表上,在启动参数框中的现有参数之前输入参数'-m;'。
    • 现在使用SQLCmd将新用户添加到具有Sysadmin权限的数据库中
      • This technet blog post对于获取所需的SQLCmd命令和语法非常有用
      • 打开命令提示符并将目录更改为“BINN”文件夹
      • 通常位于C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn
      • 此位置根据您的配置而变化
      • 使用以下命令调用SQLCmd:
      • SQLCMD –S <Server_Name\Instance_Name>
      • 就我而言,这是SQLCMD -S SPExternal\Sharepoint - 我的机器名\数据库实例名称
      • 现在使用以下命令序列创建新的sys admin登录:
      • 每行后按Enter键
      

    1> CREATE LOGIN ‘<Login_Name>’ with PASSWORD=’<Password>’

         

    2> go

         

    1> SP_ADDSRVROLEMEMBER'','SYSADMIN'。

         

    2>go

    最后,通过颠倒上面概述的最初4个步骤,使服务器退出单用户模式。使用新登录进行连接。

    Option 2: Use PSExec to login as NT Authority\System

    • Download PSExec.exe并放入Windows \ System 32
    • 以管理员身份打开命令提示符
    • 使用以下命令在托管SQL数据库的计算机上从命令提示符执行SSMS
      • PsExec -s -i "C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe"
      • 请注意,SSMS的路径可能会有所不同,具体取决于系统的配置
    • 上面链接的原始文章中列出了一些其他警告
      • 可能需要禁用UAC(对我来说仍然可以正常工作)
      • 您的帐户必须是此作品的本地管理员
      • 可能或可能无法远程工作

    选项2是originally referenced in this DBA SE answer - 感谢发现它的人。