Python pyodbc подключиться к Sql Server с использованием аутентификации SQL Server
Сведения о пользователе окна отличаются от пользователя Sql Server, в который я захожу. Поэтому я попытался использовать pyodbc для подключения к базе данных, используя имя пользователя (Admin_JJack) и пароль. Но показ соединения не удается для пользователя окна (Джек), и я не знаю, где идет не так.
моя строка подключения:
connection = pyodbc.connect(
"Driver={"SQL Driver"};"
"Server= "ServerName";"
"Database="DatabaseName";"
"UID="UserName";"
"PWD="Password";"
"Trusted_Connection=yes"
)
pyodbc.InterfaceError: ('28000', "[28000] [Microsoft] [Собственный клиент SQL Server 11.0][SQL Server] Ошибка входа в систему для пользователя" Джек ". (18456) (SQLDriverConnect);
Как подключиться к базе данных с использованием аутентификации сервера sql?
3 ответа
При использовании "Trusted_Connection=yes" ключи UID и PWD игнорируются, а учетная запись Windows используется для проверки подлинности.
Если вы хотите использовать значения UID и PWD для аутентификации вместо учетной записи Windows NTLM, вы должны использовать "Trusted_Connection=No" или удалить эту опцию из строки подключения.
Trusted_Connection
Указывает, подключается ли пользователь через учетную запись пользователя, используя Kerberos [RFC4120] или другую аутентификацию, специфичную для платформы, как указано в поле fIntSecurity (подробности см. В разделе [MS-TDS], раздел 2.2.6.4).
Допустимые значения: "Да", "1" или пустая строка, которые эквивалентны, или "Нет". Если значение "Нет" не указано, используется значение "Да".
Если установлено значение "Нет", для установления соединения с источником данных необходимо использовать клавиши UID и PWD.
Если ключ DSN и ключ UID не включены в строку подключения или если значение ключа UID является пустой строкой, значение ключа Trusted_Connection должно быть равно "Да". Если ключ Trusted_Connection не указан в строке подключения, значение должно быть получено из содержимого настроек в ключе DSN. Если ключ Trusted_Connection не указан в DSN или указанный DSN не существует, значением по умолчанию является "Нет".
Если значение ключа Trusted_Connection равно "Да", ключи UID и PWD игнорируются. В противном случае ключ UID должен быть указан.
В реализациях Microsoft эта учетная запись пользователя является учетной записью пользователя Windows, а проверка подлинности NTLM [MSDN-NTLM] используется, когда значение ключа Trusted_Connection равно "Да".
источник: https://msdn.microsoft.com/en-us/library/ee224059(v=sql.105).aspx
slightly different syntax:
conn = pyodbc.connect('Driver={SQL Server};'
'Server=dbServer1;'
'Database=db1;'
'UID=user1;'
'PWD=uSer1Pass!;'
'Trusted_Connection=no;')
Для аутентификации Windows вам нужно поставить Trusted_Connection=yes; вместо uid и pwd , если это не сработает, попробуйте метод DSN (https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/connect-to-an-odbc-data-source-sql-server-import-and-export-wizard?view=sql-server-ver15) Я рекомендую сделать вариант 1 , но это ваш выбор