我有一台已经安装了SQL Server Express的笔记本电脑。服务器名称为 SRH \ SQLEXPRESS ,版本为 10.0.2531.0 。操作系统是Windows 7。
我可以通过Windows身份验证连接到它。但我想通过sa
连接到它。由于我不知道sa
的密码所以我想重置它。我决定使用osql
更改它。
以下是我更改sa
:
osql -S SRH\SQLEXPRESS -E
并按Enter键。 sp_password null,
'HseWork11', 'sa'
并按Enter键。 GO
并按Enter键
键,但我收到此错误消息:消息15151,级别16,状态1,服务器SRH \ SQLEXPRESS,第1行不能 更改登录'sa',因为它不存在或您没有 权限。
无赖。
要确认登录sa
存在,我通过Windows身份验证连接并运行此语句select * from sys.syslogins where name = 'sa'
。我有1行,所以登录sa
存在。
为什么我无法使用sa
更改osql
密码?我做错了什么?
答案 0 :(得分:1)
您是否尝试使用sp_password
,而不是使用ALTER LOGIN
?我使用UNLOCK
代替sqlcmd
- 我实际上并不知道这是否有所作为。
在命令提示符中:
osql
这些显然是不同的命令,我知道有时候sqlcmd -S .\SQLEXPRESS
>1 ALTER LOGIN sa WITH PASSWORD = ‘whateveryouwant’ UNLOCK
>2 GO
>3 exit
对我来说有用ALTER LOGIN
没有。我不相信这是万灵药,但值得一看。
旁注:
如果这不起作用,但你仍然可以连接到SQL Server(你说你可以,而不是SA),那么运行这个查询以查看谁可以以管理员身份访问SQL Server。也许你有一个内置的帐户给了那个角色......
sp_password
这将为您提供具有SysAdmin角色的SQL Server和Windows用户。
首先编辑:
您说在运行此查询后,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
;
帐户的is_disabled
被标记为1
。
返回到命令提示符并尝试以下操作:
SA
答案 1 :(得分:1)