соединение Python с SQL-сервером

Я использовал пакет Python pyodbc и pypyodbc для подключения к серверу SQL.

Водители использовали любой из этих ['SQL Server', 'SQL Server Native Client 10.0', 'ODBC Driver 11 for SQL Server', 'ODBC Driver 13 for SQL Server'].

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

connection = pyodbc.connect('DRIVER={SQL Server};'
'Server=aaa.database.windows.net;'
'DATABASE=DB_NAME;'
'UID=User_name;'
'PWD=password')

теперь я получаю сообщение об ошибке, например

DatabaseError: (u'28000', u"[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user

Но я могу подключиться к серверу через студию управления сервером SQL.

это проверка подлинности SQL Server, а не проверка подлинности Windows.

Это проблема с пакетом python и драйвером или проблема с БД ??? как решить?


person Subbu VidyaSekar    schedule 23.05.2017    source источник
comment
Не пробовал, но согласно connectionstrings.com /sql-server-native-client-11-0-odbc-driver и stackoverflow.com/questions/11451101/ кажется, что ваша строка подключения может быть неправильной - вы уверены, что отдельные параметры должны быть разделены на отдельные строки, а не одна целая строка?   -  person Lukáš Říha    schedule 23.05.2017
comment
да... Это правильно.. иначе будет выдана недопустимая синтаксическая ошибка   -  person Subbu VidyaSekar    schedule 23.05.2017
comment
Вы когда-нибудь решали это? У меня такая же проблема.   -  person user1761806    schedule 28.12.2017


Ответы (5)


Проблема не в драйвере, вы видите сообщение об ошибке DatabaseError: Login failed for user, это означает, что эта проблема возникает, если пользователь пытается войти в систему с учетными данными, которые не могут быть проверены. Я подозреваю, что вы входите в систему с аутентификацией Windows, если это так, используйте вместо этого Trusted_Connection=yes:

connection = pyodbc.connect('DRIVER={SQL Server};Server=aaa.database.windows.net;DATABASE=DB_NAME;Trusted_Connection=yes')

Для получения дополнительной информации см. мой старый ответ о разнице SQL Server Authentication modes.

person Tiny.D    schedule 23.05.2017
comment
имя пользователя и пароль своего SQL-сервера.. с использованием аутентификации SQL - person Subbu VidyaSekar; 23.05.2017

Вы можете добавить Trusted_Connection=NO; в строку подключения после пароля

person Fen Ignacio    schedule 19.03.2019

Я вижу, что в вашем скрипте не определено port.

Общий способ подключения к серверу с помощью pyodbc ${DBName} ${DBUser} ${DBPass} ${DBHost} ${DBPort}, где DBName — имя вашей базы данных, DBUser — имя пользователя, используемое для подключения к ней, DBPass — пароль, DBHost — URL-адрес вашей базы данных, а DBPort — порт, который вы используете для подключиться к вашей БД.

Я использую MS SQL, поэтому мой порт 1433, ваш может быть другим.

У меня была эта проблема только сегодня, и это исправило ее.

person Lorenzo Battilocchi    schedule 09.07.2018

Я думаю, проблема из-за определения драйвера в вашей строке подключения. Вы можете попробовать ниже.

connection = pyodbc.connect('DRIVER={SQL Server Native Client 10.0}; Server=aaa.database.windows.net; DATABASE=DB_NAME; UID=User_name; PWD=password')
person Dinusha Dilinka    schedule 23.08.2018

Я применил вашу строку подключения и обновил ее данными о подключении к серверу, и все заработало нормально. Вы уверены, что передаете правильное имя пользователя и пароль? Ошибка входа означает, что соединение было установлено успешно, но аутентификация не прошла.

person Rola    schedule 22.04.2020