2013-08-23 3 views
1

У меня есть следующий код:pyodbc - какое имя пользователя/пароль передается здесь?

import pyodbc 

cnxn = pyodbc.connect("DRIVER={SQL Server};" 
         +"SERVER=somesqlserver2008.example.com;" 
         +"DATABASE=exampledatabase;") 
cursor = cnxn.cursor() 
#do stuff... 

Приведенный выше код работает просто отлично. У меня есть причина полагать, что этот код фактически передает некоторые формы учетных данных «за моей спиной» (так сказать). Например, этот код:

cnxn = pyodbc.connect("DRIVER={SQL Server};" 
         +"SERVER=someOTHERsqlserver2008.example.com;" 
         +"DATABASE=exampledatabase;") 
cursor = cnxn.cursor() 

возвращается:

Traceback (most recent call last): 
    File "C:\Users\<my username>\Documents\sql_connect_test1.py", line 27, in <module> 
    +"SERVER=someOTHERsqlserver2008.example.com;") 
Error: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user '<user name appears here>'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user '<user name appears here>'. (18456)") 

Даже если я не указано имя пользователя/пароль, то во второй строке подключения, представляется, что имя пользователя и пароль были использованы pyodbc , Как узнать, какое имя пользователя и пароль были использованы?

ответ

1

Для вас, если вы не указали, должны быть переданы ваши WINDOWS. На сервере, где он терпит неудачу, ваша учетная запись Windows не имеет доступа (или другая машина находится в другом, ненадежном домене). Вероятно, ваша программа не должна полагаться на авторизацию Windows, если это общий сценарий - другой домен или разные пользователи с разными правами будут пытаться запустить его. Вы должны использовать аутентификацию SQL и вставить строку подключения в файл конфигурации (не внутри кода).

+0

Хм ... Я на самом деле попробовал добавить '' UID = ; PWD = ")' к первой строке соединения, но это не сработало. Когда я выхожу из строки подключения, он работает нормально. Не уверен, что происходит. – SheerSt

+0

Вы пробовали UID = имя пользователя Windows или UID = SQL auth login? Во всяком случае, это всего лишь общая догадка и предложение, у меня нет опыта работы с pyodbc. О чем говорят их документы? –

+0

Да, я попробовал 'UID = <имя пользователя Windows>. Я не уверен, что вы подразумеваете под «SQL auth login». – SheerSt

Смежные вопросы