Почему я не могу сменить пароль с помощью osql?

У меня есть ноутбук, на котором уже установлен SQL Server Express. Имя сервера - SRH\SQLEXPRESS, а версия - 10.0.2531.0. Операционная система Windows 7.

Я могу подключиться к нему через Windows Authentication. Но я хотел бы подключиться к нему, хотя sa, Так как я не знаю пароль sa поэтому я хочу сбросить его. Я решил изменить это с помощью osql,

Вот шаги, которые я предпринял, чтобы изменить пароль sa:

  1. Я открыл командную строку (cmd) в режиме администратора.
  2. Я набрал в osql -S SRH\SQLEXPRESS -E и нажмите клавишу ввода.
  3. Тогда я получаю приглашение 1>. Затем я набрал sp_password null, 'HseWork11', 'sa' и нажмите клавишу ввода.
  4. Тогда я получаю подсказку 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.

Другие вопросы по тегам