Подключение к базе данных SQL Azure с помощью Функций Azure
В этой статье показано, как с помощью Функций Azure создать запланированное задание, которое подключается к экземпляру Базы данных SQL Azure или Управляемому экземпляру SQL Azure. Код функции очищает строки в таблице базы данных. Новая функция C# создается на основе стандартного шаблона триггера по таймеру в Visual Studio 2019. Для выполнения этого сценария необходимо также задать строку подключения к базе данных как параметр приложений в приложении-функции. В случае Управляемого экземпляра SQL Azure необходимо включить общедоступную конечную точку, чтобы иметь возможность подключения из Функций Azure. В этом сценарии к базе данных применяется массовая операция.
Если вы впервые работаете с Функциями C#, обратитесь к статье Справочник разработчика C# по функциям Azure.
Предварительные требования
Выполните действия, описанные в статье "Краткое руководство. Создание первой функции C# в Azure с помощью Visual Studio", чтобы создать локальное приложение-функцию, ориентированное на версию 2.x или более позднюю версию среды выполнению. Кроме того, опубликуйте свой проект в приложении-функции в Azure.
В этой статье демонстрируется команда Transact-SQL, которая выполняет операцию массовой очистки в таблице SalesOrderHeader образца базы данных AdventureWorksLT. Чтобы создать образец базы данных AdventureWorksLT, выполните инструкции, приведенные в статье "Краткое руководство. Создание отдельной базы данных в Базе данных SQL Azure".
Добавьте правило брандмауэра уровня сервера для общедоступного IP-адреса компьютера, на котором выполняются действия из этого краткого руководства. Это правило требуется для получения доступа к экземпляру базы данных SQL с вашего локального компьютера.
Получение сведений о подключении
Необходимо получить строку подключения к базе данных, созданной при выполнении инструкций в статье "Краткое руководство. Создание отдельной базы данных в Базе данных SQL Azure".
Войдите на портал Azure.
В меню слева выберите пункт Базы данных SQL и на странице Базы данных SQL выберите имя своей базы данных.
Щелкните Строки подключения в разделе Параметры и полностью скопируйте строку подключения ADO.NET. В случае Управляемого экземпляра SQL Azure скопируйте строку подключения для общедоступной конечной точки.
Задание строки подключения
Выполнение функций в Azure происходит в рамках приложений-функций. В целях безопасности рекомендуется хранить строки подключения и другие секретные данные в параметрах приложения-функции. Использование параметров приложения позволяет предотвратить случайное раскрытие строки подключения в коде. Доступ к параметрам приложения-функции можно получить прямо из Visual Studio.
Вы должны были ранее опубликовать свое приложение в Azure. Если вы еще этого не сделали, выполните инструкции, приведенные в разделе Публикация в Azure.
В Обозревателе решений щелкните правой кнопкой проект и выберите пункт Опубликовать.
На странице Опубликовать выберите многоточие (
...
) в области Размещения и выберите Управление параметрами службы приложений Azure.В Параметрах приложения выберите Добавить параметр, а затем в окне Имя нового параметра приложения введите
sqldb_connection
и щелкните OK.В новом параметре sqldb_connection вставьте строку подключения, скопированную в предыдущем разделе, в поле Локальный и замените заполнители
{your_username}
и{your_password}
настоящими значениями. Щелкните Вставка локального значения, чтобы скопировать обновленное значение в поле Удаленный, а затем нажмите кнопку ОК.Строки подключения хранятся в зашифрованном виде в Azure (Удаленный). Чтобы предотвратить утечку секретов, файл проекта local.settings.json (Локальный) должен быть исключен из системы управления версиями, например, с помощью файла GITIGNORE.
Добавление пакета SqlClient в проект
Вам необходимо добавить пакет NuGet, содержащий библиотеку SqlClient. Эта библиотека доступа к данным требуется для подключения к Базе данных SQL.
Откройте проект локального приложения-функции в Visual Studio 2022.
В обозревателе решений щелкните правой кнопкой мыши проект приложения-функции и выберите Управление пакетами NuGet.
Перейдите на вкладку Обзор, выполните поиск по запросу
Microsoft.Data.SqlClient
и выберите его по завершении поиска.На странице Microsoft.Data.SqlClient выберите версию
5.1.0
и нажмите кнопку Установить.После завершения установки просмотрите изменения, а затем нажмите кнопку ОК, чтобы закрыть окно предварительного просмотра.
Если откроется окно Прием условий лицензионного соглашения, щелкните Я принимаю.
Теперь можно добавить код функции C#, который подключается к базе данных SQL.
Добавление функции, активируемой с помощью таймера
В обозревателе решений щелкните правой кнопкой мыши проект приложения-функции и выберите Добавить>Новая функция Azure.
Выбрав шаблон Функции Azure, назовите новый элемент, например
DatabaseCleanup.cs
, и выберите Добавить.В диалоговом окне Новая функция Azure выберите Триггер таймера, а затем нажмите кнопку Добавить. В этом диалоговом окне создается файл кода для функции, активируемой по таймеру.
Откройте новый файл кода и добавьте в начало файла следующие операторы using:
using Microsoft.Data.SqlClient; using System.Threading.Tasks;
Замените имеющуюся функцию
Run
следующим кодом:[FunctionName("DatabaseCleanup")] public static async Task Run([TimerTrigger("*/15 * * * * *")]TimerInfo myTimer, ILogger log) { // Get the connection string from app settings and use it to create a connection. var str = Environment.GetEnvironmentVariable("sqldb_connection"); using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); var text = "UPDATE SalesLT.SalesOrderHeader " + "SET [Status] = 5 WHERE ShipDate < GetDate();"; using (SqlCommand cmd = new SqlCommand(text, conn)) { // Execute the command and log the # rows affected. var rows = await cmd.ExecuteNonQueryAsync(); log.LogInformation($"{rows} rows were updated"); } } }
Эта функция выполняется каждые 15 секунд, чтобы обновить столбец
Status
на основе даты отправки. Дополнительные сведения о триггере таймера см. в статье Триггеры таймера для службы "Функции Azure".Нажмите клавишу F5 для запуска приложения-функции. Позади Visual Studio откроется окно выполнения Azure Functions Core Tools.
Через 15 секунд после запуска функция начнет выполняться. Просмотрите выходные данные и запишите число строк, обновленных в таблице SalesOrderHeader.
При первом выполнении необходимо обновить 32 строки данных. Следующие запуски не будут обновлять строки данных, если вы не внесете изменения в данные таблицы SalesOrderHeader, чтобы оператор
UPDATE
выбрал больше строк.
Если вы планируете опубликовать эту функцию, не забудьте указать для атрибута TimerTrigger
другое расписание в формате выражения Cron (выполнение каждые 15 секунд). Кроме того, необходимо убедиться, что приложение-функция может получить доступ к базе данных Azure SQL или Управляемый экземпляр SQL Azure. Дополнительные сведения см. по одной из следующих ссылок в зависимости от типа Azure SQL:
Дальнейшие действия
Узнайте, как использовать Функции с Logic Apps для интеграции с другими службами.
Дополнительные сведения о Функциях см. в следующих статьях:
-
Справочник разработчика по функциям Azure
Справочник программиста по созданию функций, а также определению триггеров и привязок. -
Тестирование функций Azure
(Тестирование функций Azure) Описание различных средств и методов тестирования функций.