Я получил доступ к серверу Windows SQL с аутентификацией по домену/имени пользователя, прикрепленному к моему личному Active Directory Windows. > а также Active Directory служебной учетной записи нашей команды. Когда я тестирую свою рабочую станцию Windows, я могу подтвердить, что могу программно получать данные с сервера SQL. Я протестировал это на своем компьютере под управлением Windows с помощью двух сценариев Python. Один использовал pyodbc, а другой — pymssql.
пример pyodbc (локальный)
Код: Выделить всё
import pyodbc
conn = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=\,
;"
"DATABASE=;"
"Trusted_Connection=yes;"
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM database.table")
for row in cursor.fetchall():
print (row)
cursor.close()
print("Completed!")
Код: Выделить всё
import pymssql
conn = pymssql.connect(host='', server='', port='
', database='')
cursor = conn.cursor()
cursor.execute("SELECT * FROM database.table")
for row in cursor.fetchall():
print (row)
cursor.close()
Код: Выделить всё
Trusted_Connection=yes'. Поскольку я выполнял этот сценарий на своем личном ноутбуке, который получил разрешение на внешний SQL-сервер Windows, этот сценарий автоматически аутентифицирует мой запрос на целевой SQL-сервер и позволяет мне запрашивать данные с него. Аналогичным образом, при использовании pymssql
Однако моя конечная цель – получить данные при выполнении сценария в Linux. Среда Кубернетс. Поэтому я расширяю два приведенных выше сценария, включая свои Active Directory \ и
. Однако в обоих сценариях код не выполняется в соответствии с моими ожиданиями.т.е. использование комбинации Active Directory \ и в среде Linux вызывает у меня ошибки. Расширенные сценарии pyodbc и pymssql представлены ниже. Также указываются полученные сообщения об ошибках.
Пример pyodbc
Код: Выделить всё
import pyodbc
conn = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=\,
;"
"DATABASE=;"
"Trusted_Connection=yes;"
"UID=\;"
"PWD=;"
"Integrated_Security=SSPI"
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM database.table")
for row in cursor.fetchall():
print (row)
cursor.close()
print("Completed!")
Код: Выделить всё
conn = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};"
pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
Код: Выделить всё
import pymssql
conn = pymssql.connect(host='', server='', port='
', database='', user='', password='', tds_version='7.0')
cursor = conn.cursor()
cursor.execute("SELECT * FROM database.table")
for row in cursor.fetchall():
print (row)
cursor.close()
Код: Выделить всё
conn = pymssql.connect(host='', server='', port='
', database='', user='\\', password='', tds_version='7.0')
File "src/pymssql/_pymssql.pyx", line 659, in pymssql._pymssql.connect
pymssql.exceptions.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist ()\nNet-Lib error during Connection timed out (110)\n')
Какие шаги я пропустил? Вы видите проблему в моем коде или у вас есть альтернативные предложения?
Подробнее здесь: https://stackoverflow.com/questions/786 ... om-linux-u