0

我有一台已经安装了 SQL Server Express 的笔记本电脑。服务器名称为SRH\SQLEXPRESS,版本为10.0.2531.0。操作系统为 Windows 7。

我可以通过 Windows 身份验证连接到它。但我想连接到它sa。由于我不知道密码sa所以我想重置它。我决定使用osql.

这些是我更改密码的步骤sa

  1. 我在管理员模式下打开了命令提示符 (cmd)。
  2. 我输入osql -S SRH\SQLEXPRESS -E并按 Enter 键。
  3. 然后我得到1>提示。然后我输入sp_password null, 'HseWork11', 'sa'并按 Enter 键。
  4. 然后我得到2>提示。然后我输入GO并按 Enter 键,但我收到此错误消息:

消息 15151,级别 16,状态 1,服务器 SRH\SQLEXPRESS,第 1 行无法更改登录 'sa',因为它不存在或您没有权限。

真可惜。

为了确认登录sa存在,我通过 Windows 身份验证连接并运行此语句select * from sys.syslogins where name = 'sa'。我得到了 1 行,所以登录sa存在。

那么为什么我不能sa使用更改密码osql?我做错了什么?

4

2 回答 2

1

代替 using sp_password,您是否尝试过 using ALTER LOGIN,也许与UNLOCK选项一起使用?我使用sqlcmd而不是osql- 我实际上不知道这是否会有所作为。

在命令提示符中:

sqlcmd -S .\SQLEXPRESS
>1 ALTER LOGIN sa WITH PASSWORD = ‘whateveryouwant’ UNLOCK
>2 GO
>3 exit

这些显然是不同的命令,我知道有时ALTER LOGIN它对我有用,sp_password而没有。我不相信它是万灵药,但它可能值得一看。

边注:

如果这不起作用,但您仍然可以连接到 SQL Server(您说可以,只是不是作为 SA),那么运行此查询以查看谁可以以管理员身份访问 SQL Server 可能是值得的。也许您有一个被赋予该角色的内置帐户...

USE Master
GO

SELECT
      P.Name
     ,P.Type_desc
     ,P.is_disabled
FROM sys.server_principals P
INNER JOIN sys.syslogins L
    ON L.SID = P.SID
WHERE P.Name NOT LIKE '#%'
AND L.SysAdmin = 1 
;

这将为您提供具有 SysAdmin 角色的 SQL Server 和 Windows 用户。

第一次编辑:

您说运行此查询后将is_disabled其标记为1帐户SA

返回命令提示符并尝试以下操作:

>1 ALTER LOGIN sa ENABLE
>2 GO
>3 exit
于 2017-03-02T18:42:39.373 回答
1

您可能不是使用 Windows 登录的 SQL Server 实例中的系统管理员。如果您有系统管理员权限,您应该可以更改 sa 登录的密码。

请参考 Wikihow

注意:OSQL是一个已停用的功能,请使用 SQLCMD。

于 2017-03-02T18:44:03.997 回答