Проблема с доступом к серверу Azure, несмотря на исправление настроек брандмауэра - PullRequest
0 голосов
/ 03 июля 2019

Я получаю сообщение об ошибке при попытке подключиться к серверу SQL Azure с помощью pyodbc.

Я нашел параметры подключения в разделе «Строки подключения» для ODBC на портале Azure.Я добавил свой IP-адрес в настройки брандмауэра (и ждал> 1 час), но это не решило проблему.

import pyodbc

DRIVER = '{SQL Server}'
SERVER = 'tcp:[server name].database.windows.net'
PORT = '1433'
DATABASE = [database name]
USERNAME = [username]
PASSWORD = [password]
CONNECTION_STRING = f'DRIVER={DRIVER};PORT={PORT};SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}'

cursor = pyodbc.connect(CONNECTION_STRING).cursor()

Я получаю следующую ошибку:

ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
Cannot open server [server name] requested by the login. Client with IP address [my IP]
is not allowed to access the server.  To enable access, use the Windows Azure 
Management Portal or run sp_set_firewall_rule on the master database to create a 
firewall rule for this IP address or address range.  It may take up to five minutes
for this change to take effect. (40615) (SQLDriverConnect); [42000] [Microsoft]
[ODBC SQL Server Driver]Invalid connection string attribute (0); [42000] [Microsoft]
[ODBC SQL Server Driver][SQL Server]Cannot open server [server name] requested by the 
login. Client with IP address [my IP] is not allowed to access the server.  To enable 
access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the
master database to create a firewall rule for this IP address or address range.  It may
take up to five minutes for this change to take effect. (40615); [42000] [Microsoft]
[ODBC SQL Server Driver]Invalid connection string attribute (0)")

Обновление: Я попытался подключиться с помощью Visual Studio, и он предлагает мне создать новое правило брандмауэра.Я выбираю «Добавить свой клиентский IP» и нажимаю «ОК».Затем подсказка немедленно появляется снова.Я несколько раз пытался щелкнуть по нему, и новые правила появляются на портале Azure, но я все еще не могу подключиться через Visual Studio или python.

Решение: Я использовалАутентификация SQL вместо аутентификации Active Directory.Решил проблему, добавив AUTHENTICATION = ActiveDirectoryPassword в строку подключения.

1 Ответ

0 голосов
/ 04 июля 2019
  1. Убедитесь, что вы добавили IP-адрес клиента в брандмауэр.

В обзоре базы данных SQL Azure выберите Брандмауэр сервера. enter image description here

Добавить IP-адрес клиента:

enter image description here

  1. Пожалуйста, измените ваш код следующим образом и попробуйте снова:
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver= '{ODBC Driver 17 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

Этот пример кода предоставлен этим документом: Создание кода для запроса базы данных SQL .

Обновление:

Ошибка устранена ..

Наконец-то понял - проблема в том, что Jon123 использовал аутентификацию SQL вместо аутентификации Active Directory.

Надеюсь, это поможет.

...