pyodbc.connect() завершается с ошибкой при первой попытке подключиться к Azure SQL из функции Azure

#azure-functions #azure-sql-database #pyodbc

#azure-функции #azure-sql-database #pyodbc

Вопрос:

Я пытаюсь подключиться к Azure SQL из функции Azure, используя pyodbc.connect() с проверкой подлинности токена. В базе данных SQL Azure настроена автоматическая пауза. Если я вызываю свою функцию Azure после того, как база данных SQL «приостановлена», первая попытка всегда завершается неудачей.

Я попытался добавить параметр timeout в pyodbc.connect() с timeout= 60, но я все еще сталкиваюсь с ошибками, например:

  ('HY000', "[HY000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Database '<DB_NAME>' on server
 '<SERVER_NAME>.database.windows.net' is not currently available. Please retry the connection later. If
 the problem persists, contact customer support, and provide them the session tracing ID of 
'{<TRACKING_ID>}'. (40613) (SQLDriverConnect)")
  

Как я могу гарантировать, что мой первый вызов Azure SQL не завершится с ошибкой?

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

1. Как вы сказали, если ваша база данных приостановлена, мы не можем получить к ней доступ!

2. мы не можем гарантировать, что ваш первый вызов Azure SQL не завершится сбоем, если база данных была приостановлена.

3. Я думаю, это имеет смысл. Итак, есть ли решение сначала отправить запрос на подключение для пробуждения базы данных SQL (возможно, за пределами функции Azure), позволяя оставшемуся коду функции Azure выполняться без проблем с подключением?

4. да, вы должны возобновить работу базы данных перед запуском функции Azure.

Ответ №1:

Как вы сказали, если ваша база данных приостановлена, мы не можем получить к ней доступ.

Мы не можем гарантировать, что ваш первый вызов Azure SQL не завершится неудачно, не зная состояния базы данных. Правильная идея или решение, вам нужно сначала отправить запрос на подключение, чтобы разбудить SQL DB перед запуском функции Azure, тогда функция сможет подключиться к Azure SQL DB без ошибок.

HTH.