Невозможно установить соединение с sql-сервером, используя pyodbc в Windows 7
Я использую ActivePython 2.7.2.5 на Windows 7.
При попытке подключиться к базе данных sql-сервера с помощью модуля pyodbc, используя приведенный ниже код, я получаю последующую трассировку. Есть идеи, что я делаю не так?
КОД:
import pyodbc
driver = 'SQL Server'
server = '**server-name**'
db1 = 'CorpApps'
tcon = 'yes'
uname = 'jnichol3'
pword = '**my-password**'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes')
cursor = cnxn.cursor()
cursor.execute("select * from appaudit_q32013")
rows = cursor.fetchall()
for row in rows:
print row
ПРОСЛЕДИТЬ:
Traceback (most recent call last):
File "pyodbc_test.py", line 9, in <module>
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes')
pyodbc.Error: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [01000] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53)')
7 ответов
Вы используете строку подключения 'DRIVER={SQL Server};SERVER=server;DATABASE=db1;UID=uname;PWD=pword;Trusted_Connection=yes'
вы пытаетесь подключиться к серверу под названием server
база данных называется db1
и т. д. Он не использует переменные, которые вы установили ранее, они не используются.
Можно передать параметры строки подключения в качестве аргументов ключевых слов connect
функция, чтобы вы могли использовать:
cnxn = pyodbc.connect(driver='{SQL Server}', host=server, database=db1,
trusted_connection=tcon, user=uname, password=pword)
У меня было то же сообщение об ошибке, и в моем случае проблема заключалась в том, что драйверы [SQL Server] требовали TLS 1.0, который отключен на моем сервере. Переход на более новую версию SNAC, SQL Server Native Client 11.0
исправил проблему.
Итак, моя строка подключения выглядит так:
cnxn = pyodbc.connect(driver='{SQL Server Native Client 11.0}',
host=server, database=db1, trusted_connection=tcon,
user=uname, password=pword)
Я столкнулся с этой ошибкой по другой причине.
Это было потому, что у моего сервера был "порт" помимо адреса.
Я мог бы исправить это, назначив следующее значение параметру "Server" строки подключения.
"...;Server=<server_name>,<port#>;..."
Обратите внимание, что это "запятая", а не "двоеточие" / "точка"
Сегодня у меня была такая же проблема. Я использовал localhost в строке подключения. Избавился от проблемы, заменив localhost на имя сервера. Моя база данных и приложение работают на одном компьютере.
Если у вас нет имени сервера, перейдите в студию управления сервером Sql и выполните запрос ниже, который даст вам имя сервера.
SELECT @@SERVERNAME
Строка подключения выглядит, как показано ниже
conn = pyodbc.connect('Driver={SQL Server};'
'Server=myServerName;'
'Database=mydb;'
'Trusted_Connection=yes;')
cnxn = pyodbc.connect(driver='{SQL Server}', host=server, database=db1,
user=uname, password=pword)
print(cnxn)
Я удалил часть «Trusted_Connection», и это сработало для меня.
Различные риски безопасности существуют с любым методом. Если вы используете аутентификацию Sql Server, вы вводите свой идентификатор пользователя / пароль в коде. Но, по крайней мере, вы обрабатываете с теми же учетными данными. Если вы используете аутентификацию Windows, вы должны убедиться, что все возможные пользователи настроены с соответствующими правами на сервере Sql. С помощью аутентификации Sql вы можете настроить только одного пользователя, но несколько человек могут использовать эти разрешения для одного пользователя Sql.
Сначала нам нужно разобраться с синтаксисом:
cnxn = pyodbc.connect('DRIVER={SQL server};Server=server_name;DATABASE=database_name;Port=Port_Number;UID=username;PWD=password;')
Несколько моментов-
- Драйвер. Вы можете проверить, напечатав print(pyodbc.drivers()) и оттуда вы сможете выбрать.
- Сервер. Имя сервера можно проверить, выполнив запрос, выберите @@Servername.
- База данных. Для базы данных вы можете зарегистрировать свою базу данных, к которой хотите подключиться.
- Порт. В основном для MS SQL Server это 1433.
- UID. Учтите, что ключ должен быть UID, не меняйте его на другой ключ. По этой причине у меня возникли сбои. Вставьте имя пользователя.
- PWD- Вставьте пароль.
ПРИМЕЧАНИЕ. Не меняйте КЛЮЧ, иначе возникнет ошибка.
А Trusted_Connection=yes используется для аутентификации Windows.