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 , но это ваш выбор

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