R-Spracherweiterung in SQL ServerR language extension in SQL Server

Gilt für: JaSQL Server NeinAzure SQL-Datenbank NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Die R-Erweiterung ist Teil des SQL Server Machine Learning Services-Add-Ons für die relationale Datenbank-Engine.The R extension is part of the SQL Server Machine Learning Services add-on to the relational database engine. Sie fügt eine R-Ausführungsumgebung, eine Basis-R-Verteilung mit Standardbibliotheken und -tools sowie die Microsoft R-Bibliotheken hinzu: RevoScaleR für skalierte Analysen, MicrosoftML für Algorithmen für maschinelles Lernen sowie andere Bibliotheken für den Zugriff auf Daten oder R-Code in SQL Server.It adds an R execution environment, base R distribution with standard libraries and tools, and the Microsoft R libraries: RevoScaleR for analytics at scale, MicrosoftML for machine learning algorithms, and other libraries for accessing data or R code in SQL Server.

Die R-Integration ist in SQL Server R Services und in SQL Server Machine Learning Services verfügbar.R integration is available in SQL Server R Services and SQL Server Machine Learning Services.

R-KomponentenR components

SQL Server enthält sowohl Open Source- als auch proprietäre Pakete.SQL Server includes both open-source and proprietary packages. Die Basis-R-Bibliotheken werden über die Microsoft-Verteilung von Open Source-R installiert: Microsoft R Open (MRO).The base R libraries are installed through Microsoft's distribution of open-source R: Microsoft R Open (MRO). Aktuelle Benutzer von R sollten in der Lage sein, ihren R-Code zu portieren und mit wenigen oder keinen Änderungen als externen Prozess auf SQL Server auszuführen.Current users of R should be able to port their R code and execute it as an external process on SQL Server with few or no modifications. MRO wird unabhängig von SQL-Tools installiert und außerhalb der Kernprozesse der Engine im Erweiterbarkeitsframework ausgeführt.MRO is installed independently of SQL tools, and is executed outside of core engine processes, in the extensibility framework. Während der Installation müssen Sie den Bedingungen der Open-Source-Lizenz zustimmen.During installation, you must consent to the terms of the open-source license. Anschließend können Sie Standard-R-Pakete ohne weitere Änderungen ausführen, wie Sie es von jeder anderen Open-Source-Verteilung von R gewohnt sind.Thereafter, you can run standard R packages without further modification just as you would in any other open-source distribution of R.

SQL Server ändert die ausführbaren R-Basisdateien nicht, Sie müssen jedoch die Version von R verwenden, die von Setup installiert wird, da auf dieser Version die proprietären Pakete erstellt und getestet werden.SQL Server does not modify the base R executables, but you must use the version of R installed by Setup because that version is the one that the proprietary packages are built and tested on. Weitere Informationen über die Unterschiede zwischen MRO und einer Basisverteilung von R, die Sie möglicherweise von CRAN erhalten, finden Sie unter Interoperabilität mit R-Sprache und Microsoft R-Produkten und-Funktionen.For more information about how MRO differs from a base distribution of R that you might get from CRAN, see Interoperability with R language and Microsoft R products and features.

Die von Setup installierte R-Basispaketverteilung befindet sich in dem der Instanz zugeordneten Ordner.The R base package distribution installed by Setup can be found in the folder associated with the instance. Wenn Sie beispielsweise R Services auf einer SQL Server-Standardinstanz installiert haben, befinden sich die R-Bibliotheken standardmäßig in diesem Ordner: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library.For example, if you installed R Services on a SQL Server default instance, the R libraries are located in this folder by default: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. Entsprechend befinden sich die mit der Standardinstanz verknüpften R-Tools standardmäßig in folgendem Ordner: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.Similarly, the R tools associated with the default instance would be located in this folder by default: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

R-Pakete, die von Microsoft für parallele und verteilte Workloads hinzugefügt wurden, umfassen die folgenden Bibliotheken.R packages added by Microsoft for parallel and distributed workloads include the following libraries.

BibliothekLibrary BESCHREIBUNGDescription
RevoScaleRRevoScaleR Unterstützt Datenquellenobjekte sowie die Exploration, Manipulation, Transformation und Visualisierung von Daten.Supports data source objects and data exploration, manipulation, transformation, and visualization. Unterstützt die Erstellung von Remotecomputekontexten sowie verschiedene skalierbare Machine Learning-Modelle wie rxLinMod.It supports creation of remote compute contexts, as well as a various scalable machine learning models, such as rxLinMod. Die APIs wurden optimiert, um Datensätze zu analysieren, die zu groß sind, um in den Arbeitsspeicher zu passen und Berechnungen über mehrere Kerne oder Prozessoren verteilt auszuführen.The APIs have been optimized to analyze data sets that are too big to fit in memory and to perform computations distributed over several cores or processors. Das RevoScaleR-Paket unterstützt auch das XDF-Dateiformat für schnellere Verschiebungen und die Speicherung von Daten, die für die Analyse verwendet werden.The RevoScaleR package also supports the XDF file format for faster movement and storage of data used for analysis. Das XDF-Format verwendet die spaltenweise Speicherung, ist übertragbar und kann zum Laden und anschließend zum Ändern der Daten aus verschiedenen Quellen, z.B. Text, SPSS oder eine ODBC-Verbindung verwendet werden.The XDF format uses columnar storage, is portable, and can be used to load and then manipulate data from various sources, including text, SPSS, or an ODBC connection.
MicrosoftMLMicrosoftML Enthält Algorithmen für das maschinelle Lernen, die hinsichtlich Geschwindigkeit und Genauigkeit optimiert wurden, sowie Inline-Transformationen für die Arbeit mit Text und Bildern.Contains machine learning algorithms that have been optimized for speed and accuracy, as well as in-line transformations for working with text and images. Weitere Informationen finden Sie unter MicrosoftML in SQL Server.For more information, see MicrosoftML in SQL Server.

Verwenden von R in SQL ServerUsing R in SQL Server

Sie können Skripts für R mithilfe von Basisfunktionen erstellen, um jedoch von Multiprocessing zu profitieren, müssen Sie die Module RevoScaleR und MicrosoftML in Ihren R-Code importieren und anschließend deren Funktionen aufrufen, um parallel ausgeführte Modelle zu erstellen.You can script R using base functions, but to benefit from multi-processing, you must import the RevoScaleR and MicrosoftML modules into your R code, and then call its functions to create models that execute in parallel.

Unterstützte Datenquellen sind ODBC-Datenbanken, SQL Server und das XDF-Dateiformat, um Daten mit anderen Quellen oder mit R-Lösungen auszutauschen.Supported data sources include ODBC databases, SQL Server, and XDF file format to exchange data with other sources, or with R solutions. Eingabedaten müssen tabellarisch sein.Input data must be tabular. Alle R-Ergebnisse müssen in Form eines Datenrahmens zurückgegeben werden.All R results must be returned in the form of a data frame.

Unterstützte Computekontexte sind lokale oder SQL Server-Remotecomputekontexte.Supported compute contexts include local, or remote SQL Server compute context. Ein Remotecomputekontext bezieht sich auf die Codeausführung, die auf einem Computer (beispielsweise einer Arbeitsstation) beginnt, aber dann die Skriptausführung auf einen Remotecomputer schaltet.A remote compute context refers to code execution that starts on one computer such as a workstation, but then switches script execution to a remote computer. Zum Wechseln des Computekontexts müssen beide Systeme dieselbe RevoScaleR-Bibliothek aufweisen.Switching the compute context requires that both systems have the same RevoScaleR library.

Ein lokaler Computekontext umfasst naturgemäß die Ausführung von R-Code auf demselben Server wie die Instanz der Datenbank-Engine, wobei sich der Code in T-SQL befindet oder in eine gespeicherte Prozedur eingebettet ist.Local compute context, as you might expect, includes execution of R code on the same server as the database engine instance, with code inside T-SQL or embedded in a stored procedure. Sie können den Code auch aus einer lokalen R-IDE ausführen und das Skript auf dem SQL Server-Computer ausführen lassen, indem Sie einen Remotecomputekontext definieren.You can also run the code from a local R IDE and have the script execute on the SQL Server computer, by defining a remote compute context.

AusführungsarchitekturExecution architecture

Die folgenden Diagramme zeigen die Interaktion von SQL Server-Komponenten mit der R-Runtime in jedem der unterstützten Szenarios: datenbankinternes Ausführen von Skripts und Remoteausführung von einer R-Befehlszeile aus unter Verwendung eines SQL Server-Computekontexts.The following diagrams depict the interaction of SQL Server components with the R runtime in each of the supported scenarios: running script in-database, and remote execution from an R command line, using a SQL Server compute context.

R-Skripts, die von SQL Server datenbankintern ausgeführt werdenR scripts executed from SQL Server in-database

R-Code, der „innerhalb“ von SQL Server ausgeführt wird, wird durch das Aufrufen einer gespeicherten Prozedur ausgeführt.R code that is run from "inside" SQL Server is executed by calling a stored procedure. Daher kann jede Anwendung, die eine gespeicherte Prozedur aufrufen kann, die Ausführung von R-Code initiieren.Thus, any application that can make a stored procedure call can initiate execution of R code. Anschließend verwaltet SQL Server die Ausführung von R-Code, wie dies im folgenden Diagramm gezeigt wird.Thereafter SQL Server manages the execution of R code as summarized in the following diagram.

rsql_indb780-01

  1. Eine Anforderung für die R-Laufzeit wird vom Parameter @language='R' indiziert, der an die gespeicherte Prozedur sp_execute_external_script übergeben wird.A request for the R runtime is indicated by the parameter @language='R' passed to the stored procedure, sp_execute_external_script. SQL Server sendet diese Anforderung an den Launchpad-Dienst.SQL Server sends this request to the launchpad service. Unter Linux verwendet SQL einen launchpadd-Dienst, um mit einem separaten Launchpad-Prozess für jeden Benutzer zu kommunizieren.In Linux, SQL uses a launchpadd service to communicate with a separate launchpad process for each user. Ausführliche Informationen finden Sie im Diagramm zur Erweiterbarkeitsarchitektur.See the Extensibility architecture diagram for details.
  2. Der Launchpad-Dienst startet das entsprechende Startprogramm, in diesem Fall RLauncher.The launchpad service starts the appropriate launcher; in this case, RLauncher.
  3. RLauncher startet den externen Prozess von R.RLauncher starts the external R process.
  4. BxlServer koordiniert mit der R-Runtime, um den Datenaustausch mit SQL Server und die Speicherung von Arbeitsergebnissen zu verwalten.BxlServer coordinates with the R runtime to manage exchanges of data with SQL Server and storage of working results.
  5. SQL Satellite verwaltet die Kommunikation über zugehörige Aufgaben und Prozesse mit SQL Server.SQL Satellite manages communications about related tasks and processes with SQL Server.
  6. BxlServer verwendet SQL Satellite, um Status und Ergebnisse an SQL Server zu übermitteln.BxlServer uses SQL Satellite to communicate status and results to SQL Server.
  7. SQL Server ruft die Ergebnisse ab und schließt zugehörige Aufgaben und Prozesse.SQL Server gets results and closes related tasks and processes.

Von einem Remoteclient ausgeführte R-SkriptsR scripts executed from a remote client

Wenn Sie eine Verbindung von einem Remote-Data Science-Client herstellen, der Microsoft R unterstützt, können Sie R-Funktionen im Kontext von SQL Server durch Verwenden der RevoScaleR-Funktionen ausführen.When connecting from a remote data science client that supports Microsoft R, you can run R functions in the context of SQL Server by using the RevoScaleR functions. Dieser Workflow unterscheidet sich vom vorherigen und wird im folgenden Diagramm zusammengefasst.This is a different workflow from the previous one, and is summarized in the following diagram.

rsql_fromR2db-01

  1. Die R-Runtime ruft für RevoScaleR-Funktionen eine Verknüpfungsfunktion auf, die wiederum BxlServer aufruft.For RevoScaleR functions, the R runtime calls a linking function which in turn calls BxlServer.
  2. BxlServer wird in Microsoft R und in einem separaten Prozess von der R-Laufzeit bereitgestellt.BxlServer is provided with Microsoft R and runs in a separate process from the R runtime.
  3. BxlServer bestimmt das Verbindungsziel und initiiert eine Verbindung mithilfe von ODBC, wobei Anmeldeinformationen, die als Teil der Verbindungszeichenfolge im R-Datenquellenprojekt bereitgestellt werden, übergeben werden.BxlServer determines the connection target and initiates a connection using ODBC, passing credentials supplied as part of the connection string in the R data source object.
  4. BxlServer öffnet eine Verbindung mit der SQL Server-Instanz.BxlServer opens a connection to the SQL Server instance.
  5. Für einen R-Aufruf wird der Launchpad-Dienst aufgerufen, der wiederum das erforderliche Startprogramm, RLauncher, startet.For an R call, the launchpad service is invoked, which is turn starts the appropriate launcher, RLauncher. Die Verarbeitung von R-Code ähnelt dem Vorgang, R-Code von T-SQL auszuführen.Thereafter, processing of R code is similar to the process for running R code from T-SQL.
  6. RLauncher ruft die Instanz der R-Runtime ab, die auf dem SQL Server-Computer gespeichert ist.RLauncher makes a call to the instance of the R runtime that is installed on the SQL Server computer.
  7. Ergebnisse werden an BxlServer zurückgegeben.Results are returned to BxlServer.
  8. SQL Satellite verwaltet die Kommunikation mit SQL Server sowie die Bereinigung zugehöriger Auftragsobjekte.SQL Satellite manages communication with SQL Server and cleanup of related job objects.
  9. SQL Server gibt die Ergebnisse an den Client zurück.SQL Server passes results back to the client.

Weitere InformationenSee also