Несоответствие пароля при входе на сервер sql - PullRequest
12 голосов
/ 19 октября 2011

Хорошо, У меня есть классическое приложение asp, и у меня есть строка подключения, чтобы попытаться подключиться к БД.

МОЯ строка подключения выглядит следующим образом:

 Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial
 Catalog=mydb;database=mydb;User Id=me;Password=123

Теперь, когда я обращаюсь к db через front-en, я получаю эту ошибку:

Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user 'me'. 

Я посмотрел в профиле sql, и я получил это:

 Login failed for user 'me'.  Reason: Password did not match that
 for the login provided. [CLIENT: <named pipe>]
 Error: 18456, State:8. 

Что я пробовал:

  1. 100 раз проверил, что мой пароль действительно правильный.
  2. Попробовал это: alter login me with check_policy off (даже не знаю, зачем я это сделал)
  3. Включить ВСЕ возможные разрешения для этой учетной записи в SSMS.

Обновление: 4. Я пробовал эту строку подключения: Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial Catalog=mydb;database=mydb; Integrated Security = SSPI

И я получил эту ошибку:

Поставщик Microsoft OLE DB для SQL Server, ошибка «80004005» Невозможно открыть базу данных mydb, запрошенную при входе в систему. Ошибка входа.

Ответы [ 9 ]

3 голосов
/ 08 января 2015

В моем случае у меня была строка подключения, работающая с SQL Server 2008 R2, но после обновления до SQL Server 2014 я получил указанную ошибку.Вот как выглядит моя исходная строка подключения:

server=.\SQLEXPRESS;database=mydb;User Id=me;Password=123

Вот строка обновления, которая работает с 2014:

Integrated Security=SSPI;Data Source=.\SQLEXPRESS;Database=mydb;User Id=me;Password=123
1 голос
/ 27 октября 2011

Измените строку подключения на:

Provider=SQLNCLI10;SERVER=MYPC\MSSQLSERVER;DataTypeCompatibility=80;Database=mydb;User Id=me;Password=123

Это сработало для меня. Попробуйте использовать IP, если сервер удаленный или (локальный), если он находится на той же машине.

Надеюсь, это поможет.

0 голосов
/ 29 октября 2011

Уверен, что имя вашего компьютера прописное?Некоторое время назад я обнаружил, что имя в camelCase или с пробелами внутри может вызвать такое поведение.

Если это не так, измените его, добавив хотя бы одну букву, иначе изменение не будет успешным.

0 голосов
/ 28 октября 2011

Во-первых, понимаете ли вы разницу между проверкой подлинности SQL Server и проверкой подлинности Windows? Основываясь на некоторых комментариях, я не уверен.

Вы заявляете, что проверяли свой пароль 100 раз; Вы входили в систему SSMS с использованием аутентификации SQL Server и проверяли ее там? Моя теория состоит в том, что у вас есть учетная запись SQL Server с тем же именем, что и ваша учетная запись Windows, и что вы подключаетесь к SSMS с использованием учетной записи Windows, а НЕ учетной записи SQL.

0 голосов
/ 28 октября 2011

Путь должен быть таким, например ...
Provider=SQLNCLI;Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=yes;

(Trusted_connection на всякий случай, я считаю, что это необязательно)

0 голосов
/ 28 октября 2011

Можете ли вы войти в систему, используя Management Studio с этим пользователем, и увидеть базу данных, в которую вы пытаетесь войти?

Возможно, существует проблема с кодировкой символов в файле, который содержит строку подключения. Сохраняется ли строка подключения в виде текста в собственном файле? Если это так, попробуйте открыть этот файл в Notepad ++ и проверить, что выбрано в меню «Кодировка» вверху. Попробуйте изменить его на UTF-8 или ANSI.

UPDATE

Я только что прочитал несколько комментариев, и похоже, что вы не можете войти в систему, используя Management Studio. Похоже, что режим аутентификации Windows vs режим аутентификации SQL Server является хорошим кандидатом на первопричину.

Попробуйте это:

  • Войдите в Management Studio и подключитесь к вашей базе данных, используя sa
  • Щелкните правой кнопкой мыши сервер базы данных в обозревателе объектов слева
  • Перейти на вкладку Безопасность
  • Убедитесь, что вы используете «Режим аутентификации SQL Server и Windows», а не просто «Режим аутентификации Windows»
  • Если вы используете «Режим аутентификации Windows», измените его
  • Найдите пользователя вашего приложения в Security> Logins
  • Щелкните правой кнопкой мыши> Свойства
  • Убедитесь, что выбрано «Аутентификация SQL Server»
  • Если это не так, вы можете попытаться изменить его или создать нового пользователя и выбрать «Аутентификация SQL Server»
0 голосов
/ 28 октября 2011

Попробуйте переключить свой идентификатор пользователя на

MYPC\me

Возможно, добавление в домен идентификатора пользователя поможет серверу Sql разрешить разрешения

0 голосов
/ 28 октября 2011

Ниже приведены ссылки на различные способы подключения к SQL Server 2005 с примерами строк подключения:

http://www.connectionstrings.com/sql-server-2005

Или для подключения к SQL Server 2008:

http://www.connectionstrings.com/sql-server-2008

Помните, что на компьютере, на котором выполняется приложение ASP, должен быть установлен соответствующий клиентский компонент, то есть собственный клиент SQL Server.

Незнать, какой метод вы используете, но есть два способа, которыми приложения OLE DB могут инициализировать объекты источника данных:

IDBInitialize::Initialize 

IDataInitialize::GetDataSource (seems like you are using this one)

Оба метода инициализируют одни и те же свойства соединения OLE DB, но используются разные наборы ключевых слов.

Если вы используете IDBInitialize :: Initialize

the keyword for userid is UID
the keyword for password is PWD
NO Provider keyword may be used
Trusted_Connection keyword may be used and should be No

Если вы используете IDataInitialize :: GetDataSource

the keyword for userid is User ID
the keyword for password is Password
the Provider keyword is for SQL Server Native Client and it should be SQLNCLI10
the keyword for aunthentication Integrated Security you can remove it, or use SSPI only if you wish Windows authentication

Я сделал несколько изменений в вашей исходной строке подключения ниже, попробуйтеout:

Provider=SQLNCLI10;Data Source=MYPC\MSSQLSERVER;DataTypeCompatibility=80;Initial  Catalog=mydb;User ID=me;Password=123 

В этом документе описываются ключевые слова строки подключения для каждого метода подключения для приложений OLE DB, использующих собственный клиент SQL Server.При подключении к SQL Server 2008 R2.

http://msdn.microsoft.com/en-us/library/ms130822.aspx

0 голосов
/ 19 октября 2011

Попробуйте в этом формате, как показано ниже.

strConnection ="Driver={SQL Server};Server=serverName;Database=DatabaseName;Uid=userID;Pwd=Password;"

Thanks
Jinesh Jain
...