You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/language-extensions/concepts/extensibility-framework.md
+3-28Lines changed: 3 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,45 +39,24 @@ The architecture is designed such that external code run in a separate process f
39
39
40
40
***Component architecture in Linux***
41
41
42
-
Components include a **Launchpad** service used to invoke language-specific launchers (for example, Java), language, and library-specific logic for loading interpreters and libraries. The Launcher loads a language run time, plus any proprietary modules.
42
+
Components include a **Launchpad** service used to invoke external runtimes (for example, Java), language, and library-specific logic for loading interpreters and libraries.
43
43
44
44
<aname="launchpad"></a>
45
45
46
46
## Launchpad
47
47
48
-
The [!INCLUDE[rsql_launchpad_md](../../includes/rsql-launchpad-md.md)] is a service that manages and executes external scripts, similar to the way that the full-text indexing and query service launches a separate host for processing full-text queries. The Launchpad service can start only trusted launchers that are published by Microsoft, or that have been certified by Microsoft as meeting requirements for performance and resource management.
48
+
The [!INCLUDE[rsql_launchpad_md](../../includes/rsql-launchpad-md.md)] is a service that manages the life-time, resources, and security boundaries of the external process that’s responsible for script execution. This is similar to the way that the full-text indexing and query service launches a separate host for processing full-text queries. The Launchpad service can start only trusted launchers that are published by Microsoft, or that have been certified by Microsoft as meeting requirements for performance and resource management.
49
49
50
50
| Trusted launchers | Extension | SQL Server versions |
| JavaLauncher.dll for Java | Java extension | SQL Server 2019 |
53
53
54
-
The [!INCLUDE[rsql_launchpad_md](../../includes/rsql-launchpad-md.md)] service runs under **SQLRUserGroup**. which uses [AppContainers](https://docs.microsoft.com/windows/desktop/secauthz/appcontainer-isolation) for execution isolation.
54
+
The [!INCLUDE[rsql_launchpad_md](../../includes/rsql-launchpad-md.md)] service runs under **SQLRUserGroup** which uses [AppContainers](https://docs.microsoft.com/windows/desktop/secauthz/appcontainer-isolation) for execution isolation.
55
55
56
56
A separate [!INCLUDE[rsql_launchpad_md](../../includes/rsql-launchpad-md.md)] service is created for each database engine instance to which you have added SQL Server Machine Language Extensions. There is one Launchpad service for each database engine instance, so if you have multiple instances with external script support, you will have a Launchpad service for each one. A database engine instance is bound to the Launchpad service created for it. All invocations of external script in a stored procedure or T-SQL result in the SQL Server service calling the Launchpad service created for the same instance.
57
57
58
58
To execute tasks in a specific supported language, the Launchpad gets a secured worker account from the pool, and starts a satellite process to manage the external runtime. Each satellite process inherits the user account of the Launchpad and uses that worker account for the duration of script execution. If script uses parallel processes, they are created under the same, single worker account.
59
59
60
-
## BxlServer and SQL Satellite
61
-
62
-
**BxlServer** is an executable provided by Microsoft that manages communication between SQL Server and the external language. It creates the Windows job objects that are used to contain external script sessions, provisions secure working folders for each external script job, and uses SQL Satellite to manage data transfer between the external runtime and SQL Server. If you run [Process Explorer](https://technet.microsoft.com/sysinternals/processexplorer.aspx) while a job is running, you might see one or multiple instances of BxlServer.
63
-
64
-
In effect, BxlServer is a companion to a language run time environment that works with SQL Server to transfer data and manage tasks. BXL stands for Binary Exchange language and refers to the data format used to move data efficiently between SQL Server and external processes.
65
-
66
-
**SQL Satellite** is an extensibility API, included in the database engine starting with SQL Server 2016, that supports external code or external runtimes implemented using C or C++.
67
-
68
-
BxlServer uses SQL Satellite for these tasks:
69
-
70
-
+ Reading input data
71
-
+ Writing output data
72
-
+ Getting input arguments
73
-
+ Writing output arguments
74
-
+ Error handling
75
-
+ Writing STDOUT and STDERR back to client
76
-
77
-
SQL Satellite uses a custom data format that is optimized for fast data transfer between SQL Server and external script languages. It performs type conversions and defines the schemas of the input and output datasets during communications between SQL Server and the external script runtime.
78
-
79
-
The SQL Satellite can be monitored by using windows extended events (xEvents).
80
-
81
60
## Communication channels between components
82
61
83
62
Communication protocols among components and data platforms are described in this section.
@@ -86,10 +65,6 @@ Communication protocols among components and data platforms are described in thi
86
65
87
66
By default, internal communications between SQL Server and the SQL Satellite use TCP/IP.
88
67
89
-
+**Named Pipes**
90
-
91
-
Internal data transport between the BxlServer and SQL Server through SQL Satellite uses a proprietary, compressed data format to enhance performance. Data is exchanged between language run times and BxlServer in BXL format, using Named Pipes.
92
-
93
68
+**ODBC**
94
69
95
70
Communications between external data science clients and a remote SQL Server instance use ODBC. The account that sends the script jobs to SQL Server must have both permissions to connect to the instance and to run external scripts.
0 commit comments