Проблема с подключением к Microsoft SQL Server с проверкой подлинности Windows

#sql-server #flask #flask-sqlalchemy

#sql-сервер #flask #flask-sqlalchemy

Вопрос:

Я создаю проект flask для внутреннего использования в моей компании. Я начинаю с использования flask и postgre и использую sqlalchemy и настраиваю это соединение, используя форматы модели, как показано ниже:

 app = Flask(__name__)

app.config.from_object('config')

db = SQLAlchemy(app)
  

и это сработало хорошо. Теперь по соображениям безопасности мы переключаемся на использование Microsoft SQL Server с проверкой подлинности windows на сервере IIS, но у меня возникают большие проблемы с подключением.
Я изменил URI базы данных на

 SQLALCHEMY_DATABASE_URI = "mssql pyodbc://server/database"
  

Я проверил конфигурацию SQL Sever и я почти уверен, что это правильно. Однако я получаю сообщение об ошибке

 psycopg2.OperationalError: server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
  

Я исследовал эту проблему и использовал решение pool_pre_ping, но получаю ту же ошибку (показано ниже)

 SQLALCHEMY_ENGINE_OPTIONS = {"pool_pre_ping": True} 
  

Я видел много ответов на этот вопрос, в которых используется материал sqlalchemy.engine, но, если возможно, я надеялся использовать все db.models, которые я уже написал, но если это невозможно, я могу переписать некоторые материалы. Приветствуется любая помощь.

Ответ №1:

Проверка подлинности Windows станет проблемой при развертывании в рабочей среде. Я рекомендую создать пользователя SQL для подключения к вашей базе данных.

Попробуйте эту строку подключения:

 mssql pyodbc://<UID>:<PWD>@<SERVER>/<DATABASE>?driver=ODBC Driver 17 for SQL Server;Trusted_Connection=no
  

Также убедитесь, что вы установили pyodbc документы msft

 pip install pyodbc 
  

Комментарии:

1. Спасибо за ответ. я попробовал указанную выше строку подключения и теперь получаю сообщение «не удалось подключиться к серверу: соединение отклонено (0x0000274D / 10061)», есть какие-либо мысли? Кроме того, не могли бы вы объяснить, что вы имеете в виду при создании пользователя sql для подключения к БД.

2. Пользователи авторизации WIndows пользователь в вашем домене, например, ‘Domain User’, пользователь SQL создается на сервере SQL см. .

3. Если вы хотите использовать аутентификацию Windows, удалите UID и PWD из строки подключения и измените trusted_connection=no на Trusted_connection=yes .

4. К сожалению, я получаю ту же ошибку при попытке использовать Windows auth

5. Пока игнорируйте Flask и SQLAlchemy. Можете ли вы подключиться к своей базе данных с помощью pyodbc ?. Следуйте примеру от Microsoft . Как только вы определили правильную строку подключения, используйте ее в своем приложении.