#sql-server #azure #azure-sql-database
Вопрос:
Итак, у меня есть экземпляр базы данных SQL Azure, в котором мне нужно выполнить ночной импорт данных, и я собирался запланировать хранимую процедуру для выполнения базового запроса GET для конечной точки API, но, похоже, объект OLE отсутствует в версии SQL Server Azure. Есть ли какой-либо другой способ сделать вызов API доступным в базе данных SQL Azure, или для этого мне нужно создать что-то за пределами базы данных?
Комментарии:
1. Вероятно, вам все равно следует избегать процедур OLE, они являются устаревшими и имеют много проблем. Возможно, работа Powershell-лучшая идея, см. docs.microsoft.com/en-us/azure/azure-sql/database/…
2. Спасибо! Я просматриваю ссылку, которую вы предоставили, и мне кажется, что эластичные задания на самом деле не предоставляют средства для выполнения HTTP-вызова, для чего я намеревался использовать объект OLE; они, похоже, больше ориентированы на автоматизацию / планирование базовых вещей T-SQL, что является одним из элементов здесь, но возможность HTTP-запроса-это то, что меня больше всего беспокоит. Что касается контекста, это для клиента, который очень заинтересован в настройке служб для проекта, над которым мы работаем, поэтому я бы предпочел, чтобы я мог позвонить на SQL, а не просить их настроить для этого другую службу Azure.
3. Тем не менее, если единственным вариантом здесь является добавление другой службы Azure в набор, что было бы лучшим решением для следующего сценария: 1. Еженощное попадание в 3 конечные точки для массового импорта записей 2. По требованию обновление отдельных записей на одной из этих 3 конечных точек по мере необходимости. Запись-это объект JSON длиной 100-200 символов, а в общей сложности их несколько тысяч. Было бы лучше всего сделать это с помощью чего-то вроде функции Azure или есть лучший способ сделать это, если я не могу выполнить это в экземпляре базы данных SQL Azure, который они уже создали?
4. Эластичные задания поддерживают только шаги задания TSQL.
5. А, ладно. Спасибо. Я хотел убедиться, что ничего там не упустил.
Ответ №1:
Есть несколько вариантов. Я не знаю, может ли задание powershell, как указано в первом комментарии к вашему вопросу, выполнять http-запросы, но я знаю по крайней мере пару вариантов:
Фабрика данных Azure позволяет создавать запланированные конвейеры для копирования/преобразования данных из различных источников (например, конечных точек http) в различные пункты назначения (например, базы данных sql azure). Это включает в себя отсутствие или небольшое количество сценариев.
Приложения логики Azure позволяют вам делать то же самое:
С помощью приложений Azure Logic вы можете интегрировать (облачные) данные в (локальное) хранилище данных. Например, приложение логики может хранить данные HTTP-запроса в базе данных SQL Server.
Приложения логики также могут запускаться по расписанию и не включают в себя никаких или небольших сценариев
Вы также можете написать функцию Azure, которая выполняется по расписанию и вызывает конечную точку http, и записать результат в базу данных. Для написания функций поддерживается несколько языков, например, c# и powershell.
Все эти опции включают возможность принудительного выполнения вне графика.
На мой взгляд, фабрика данных Azure (без кодирования) или функция Azure (только код) являются лучшими вариантами, учитывая необходимость анализа большого количества данных json. Но имейте в виду, что функции Azure в плане потребления имеют максимальное разрешенное время выполнения 10 минут на вызов.
Комментарии:
1. docs.microsoft.com/en-us/powershell/module/…
2. Спасибо вам за вашу помощь! Я в основном работаю со службой приложений Azure, поэтому у меня немного кружилась голова, пытаясь понять, что различные сервисы могут предложить для решения этой проблемы.
3. @JamesCamp, не за что. Я обновил свой ответ, чтобы рассказать о возможности их выполнения вне графика.