Почему я не могу сменить пароль с помощью osql?
У меня есть ноутбук, на котором уже установлен SQL Server Express. Имя сервера - SRH\SQLEXPRESS, а версия - 10.0.2531.0. Операционная система Windows 7.
Я могу подключиться к нему через Windows Authentication. Но я хотел бы подключиться к нему, хотя sa
, Так как я не знаю пароль sa
поэтому я хочу сбросить его. Я решил изменить это с помощью osql
,
Вот шаги, которые я предпринял, чтобы изменить пароль sa
:
- Я открыл командную строку (cmd) в режиме администратора.
- Я набрал в
osql -S SRH\SQLEXPRESS -E
и нажмите клавишу ввода. - Тогда я получаю приглашение 1>. Затем я набрал
sp_password null, 'HseWork11', 'sa'
и нажмите клавишу ввода. - Тогда я получаю подсказку 2>. Затем я набрал
GO
и нажмите клавишу ввода, но я получаю это сообщение об ошибке:
Сообщение 15151, уровень 16, состояние 1, сервер SRH\SQLEXPRESS, строка 1 Невозможно изменить имя входа 'sa', так как он не существует или у вас нет разрешения.
Облом.
Чтобы подтвердить, что логин sa
существует, я подключаюсь через Windows Authentication и запускаю этот оператор select * from sys.syslogins where name = 'sa'
, Я получил 1 строку назад, поэтому логин sa
существовать.
Так почему я не могу изменить sa
используя пароль osql
? что я делаю не так?
2 ответа
Вместо того, чтобы использовать sp_password
Вы пробовали использовать 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
;
Это даст вам как пользователей SQL Server, так и пользователей Windows, имеющих роль SysAdmin.
Первое редактирование:
Вы сказали, что is_disabled
помечен как 1
для SA
аккаунт после запуска этого запроса.
Вернитесь в командную строку и попробуйте следующее:
>1 ALTER LOGIN sa ENABLE
>2 GO
>3 exit
Вы можете не быть системным администратором в экземпляре SQL Server с вашим логином Windows. Если у вас есть разрешения системного администратора, вы сможете сменить пароль для входа в систему.
Пожалуйста, обратитесь Wikihow
Примечание: OSQL больше не поддерживается, используйте SQLCMD.