Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server 2019 (15.x) и более поздних версий
Сведения об архитектуре расширяемости, используемой для расширений языка SQL Server и позволяющей выполнять внешний код в SQL Server. Java, Python и R поддерживаются в SQL Server 2019 (15.x) и более поздних версиях. Код выполняется в языковой среде как расширение основного ядра СУБД.
Общие сведения
Целью платформы расширяемости является предоставление интерфейса между SQL Server и внешними языками. Администраторы баз данных могут поддерживать безопасность, выполняя доверенный язык в защищенной платформе, управляемой SQL Server, позволяя специалистам по обработке и анализу данных получать доступ к корпоративным данным.
Любой поддерживаемый внешний язык может быть запущен путем вызова хранимой процедуры, после чего табличные результаты возвращаются непосредственно в SQL Server. Это упрощает использование внешнего языка из любого приложения, которое может отправлять SQL-запрос и обрабатывать результаты.
Схемы архитектуры
Архитектура разработана таким образом, что внешний код выполнялся в отдельном от SQL Server процессе, но с компонентами, которые внутренне управляют цепочкой запросов на данные и операции в SQL Server.
Архитектура компонентов в Windows:
Архитектура компонентов в Linux:
Компоненты включают службу панели запуска, которая используется для вызова внешних сред выполнения (например, Java) и логики, зависящей от библиотеки, для загрузки интерпретаторов и библиотек.
Панель запуска
Панель запуска SQL Server — это служба, которая управляет временем жизни, ресурсами и границами безопасности внешнего процесса, отвечающего за выполнение скрипта. Это похоже на то, как служба полнотекстового индексирования и обработки запросов запускает отдельный узел для обработки полнотекстовых запросов. Служба панели запуска может запускать только доверенные средства запуска, опубликованные корпорацией Майкрософт, или сертифицированные корпорацией Майкрософт в качестве требований к производительности и управлению ресурсами.
Служба "Панель запуска SQL Server" работает в SQLRUserGroup, которая использует AppContainers для изоляции выполнения.
Для каждого экземпляра ядра СУБД создается отдельная служба панели запуска SQL Server, в которую добавляются расширения языка компьютера SQL Server. Существует одна служба панели запуска для каждого экземпляра ядра СУБД, поэтому если у вас есть несколько экземпляров с поддержкой внешних скриптов, у вас есть служба панели запуска для каждого из них. Экземпляр ядра СУБД привязан к созданной для нее службе панели запуска. Все вызовы внешнего скрипта в хранимой процедуре или T-SQL приводят к тому, что служба SQL Server вызывает службу панели запуска, созданную для одного экземпляра.
Для выполнения задач на определенном поддерживаемом языке панель запуска получает защищенную рабочую учетную запись из пула и запускает вспомогательный процесс для управления внешней средой выполнения. Каждый вспомогательный процесс наследует учетную запись пользователя панели запуска и использует ее во время выполнения скрипта. Если скрипт использует параллельные процессы, они создаются в одной рабочей учетной записи.
Каналы связи между компонентами
В этом разделе описаны протоколы связи между компонентами и платформами данных.
TCP/IP
По умолчанию внутренние связи между SQL Server и спутником SQL используют TCP/IP.
ODBC
Обмен данными между внешними клиентами обработки и анализом данных и удаленным экземпляром SQL Server использует ODBC. Учетная запись, отправляющая задания в рамках сценариев в SQL Server, должна иметь разрешения и для подключения к экземпляру, и для выполнения внешних скриптов.
Кроме того, в зависимости от задачи учетной записи могут потребоваться следующие разрешения:
- Чтение данных, используемых заданием
- Запись данных в таблицы. Например, при сохранении результатов в таблицу.
- Создание объектов базы данных: например, при сохранении внешнего скрипта в рамках новой хранимой процедуры
Когда SQL Server используется как контекст вычислений для выполняемого сценария, отправленного с удаленного клиента, а исполняемый сценарий должен получать данные из внешнего источника, для обратной записи используется ODBC. SQL Server сопоставляет идентификатор пользователя, вызывающего удаленную команду, с идентификатором пользователя в текущем экземпляре и выполняет команду ODBC, используя учетные данные этого пользователя. Строка подключения, необходимая для выполнения этого вызова ODBC, получается из клиентского кода.
Другие протоколы
Процессы, которые могут потребоваться для работы в блоках или передачи данных обратно удаленному клиенту, также могут использовать формат файла Xdf-File. Фактический перенос данных осуществляется через закодированные BLOB-объекты.