Installieren von neuen R-Paketen mit sqlmlutilsInstall new R packages with sqlmlutils

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

In diesem Artikel wird beschrieben, wie Sie Funktionen im sqlmlutils-Paket verwenden, um neue R-Pakete in einer Instanz von SQL Server Machine Learning Services oder SQL Server R Services zu installieren.This article describes how to use functions in the sqlmlutils package to install new R packages to an instance of SQL Server Machine Learning Services or SQL Server R Services. Die von Ihnen installierten Pakete können verwendet werden, um R-Skripts innerhalb einer Datenbank mithilfe der T-SQL-Anweisung sp_execute_external_script auszuführen.The packages you install can be used in R scripts running in-database using the sp_execute_external_script T-SQL statement.

Hinweis

Der R-Standardbefehl install.packages wird für das Hinzufügen von R-Paketen in SQL Server nicht empfohlen.The standard R install.packages command is not recommended for adding R packages on SQL Server. Verwenden Sie stattdessen sqlmlutils, wie in diesem Artikel beschrieben.Instead, use sqlmlutils as described in this article.

VoraussetzungenPrerequisites

  • Installieren Sie R und RStudio Desktop auf dem Clientcomputer, den Sie mit SQL Server verbinden.Install R and RStudio Desktop on the client computer you use to connect to SQL Server. Zum Ausführen von Skripts können Sie jede beliebige R-IDE verwenden. In diesem Artikel wird jedoch davon ausgegangen, dass Sie RStudio nutzen.You can use any R IDE for running scripts, but this article assumes RStudio.

  • Installieren Sie Azure Data Studio oder SQL Server Management Studio (SSMS) auf dem Clientcomputer, den Sie zum Herstellen der Verbindung mit SQL Server verwenden.Install Azure Data Studio or SQL Server Management Studio (SSMS) on the client computer you use to connect to SQL Server. Sie können auch andere Datenbankverwaltungs- oder Abfragetools verwenden. In diesem Artikel wird jedoch davon ausgegangen, dass Sie Azure Data Studio oder SSMS nutzen.You can use other database management or query tools, but this article assumes Azure Data Studio or SSMS.

Weitere ÜberlegungenOther considerations

  • Ein R-Skript, das in SQL Server ausgeführt wird, kann nur Pakete verwenden, die in der Standardinstanzbibliothek installiert sind.R script running in SQL Server can use only packages installed in the default instance library. SQL Server kann auch dann keine Pakete aus externen Bibliotheken laden, wenn sich die entsprechenden Bibliotheken auf demselben Computer befinden.SQL Server cannot load packages from external libraries, even if that library is on the same computer. Das gilt auch für R-Bibliotheken, die in anderen Microsoft-Produkten installiert sind.This includes R libraries installed with other Microsoft products.

  • In einer gesicherten SQL Server-Umgebung sollten Sie Folgendes vermeiden:On a hardened SQL Server environment, you might want to avoid the following:

    • Pakete, für die Netzwerkzugriff erforderlich istPackages that require network access
    • Pakete, für die erhöhte Zugriffsrechte für das Dateisystem erforderlich sindPackages that require elevated file system access
    • Pakete, die für die Webentwicklung oder andere Aufgaben verwendet werden und nicht von der Ausführung in SQL Server profitierenPackages used for web development or other tasks that don't benefit by running inside SQL Server

Installieren von sqlmlutils auf dem ClientcomputerInstall sqlmlutils on the client computer

Zur Verwendung von sqlmlutils müssen Sie dies zunächst auf dem Clientcomputer installieren, den Sie mit SQL Server verbinden.To use sqlmlutils, you first need to install it on the client computer you use to connect to SQL Server.

Welches sqlmlutils-Paket verwendet wird, hängt vom RODBCext-Paket ab. Und welches RODBCext-Paket verwendet wird, hängt von einigen anderen Paketen ab.The sqlmlutils package depends on the RODBCext package, and RODBCext depends on a number of other packages. Mithilfe der folgenden Verfahren werden alle Pakete in der richtigen Reihenfolge installiert.The following procedures install all of these packages in the correct order.

Onlineinstallation von sqlmlutilsInstall sqlmlutils online

Wenn der Clientcomputer Internetzugriff hat, können Sie sqlmlutils und die abhängigen Pakete online herunterladen und installieren.If the client computer has Internet access, you can download and install sqlmlutils and its dependent packages online.

  1. Laden Sie die neueste sqlmlutils-ZIP-Datei von https://github.com/Microsoft/sqlmlutils/tree/master/R/dist auf den Clientcomputer herunter.Download the latest sqlmlutils zip file from https://github.com/Microsoft/sqlmlutils/tree/master/R/dist to the client computer. Entpacken Sie die Datei jedoch nicht.Don't unzip the file.

  2. Öffnen Sie eine Eingabeaufforderung, und führen Sie die folgenden Befehle aus, um die Pakete sqlmlutils und RODBCext zu installieren.Open a Command Prompt and run the following commands to install the packages sqlmlutils and RODBCext. Ersetzen Sie den vollständigen Pfad zur sqlmlutils-ZIP-Datei, die Sie heruntergeladen haben. (In diesem Beispiel wird davon ausgegangen, dass dies die Datei im Ordner „Dokumente“ ist.)Substitute the full path to the sqlmlutils zip file you downloaded (this example assumes the file is in your Documents folder). Das Paket RODBCext können Sie online finden und installieren.The RODBCext package is found online and installed.

    R -e "install.packages('RODBCext', repos='https://cran.microsoft.com')"
    R CMD INSTALL %UserProfile%\Documents\sqlmlutils_0.7.1.zip
    

Offlineinstallation von sqlmlutilsInstall sqlmlutils offline

Wenn der Clientcomputer keine Internetverbindung hat, müssen Sie die Pakete sqlmlutils und RODBCext vorab mithilfe eines Computers mit Internetzugang herunterladen.If the client computer doesn't have an Internet connection, you need to download the packages sqlmlutils and RODBCext in advance using a computer that does have Internet access. Anschließend können Sie die Dateien in einen Ordner auf dem Clientcomputer kopieren und die Pakete offline installieren.You then can copy the files to a folder on the client computer and install the packages offline.

Das RODBCext-Paket enthält zahlreiche abhängige Pakete, sodass sich die Identifizierung aller Abhängigkeiten für ein Paket schwierig gestaltet.The RODBCext package has a number of dependent packages, and identifying all dependencies for a package gets complicated. Daher sollten Sie miniCRAN verwenden, um einen lokalen Repositoryordner für das Paket zu erstellen, das alle abhängigen Pakete enthält.We recommend that you use miniCRAN to create a local repository folder for the package that includes all the dependent packages. Weitere Informationen finden Sie im Artikel zum Thema Erstellen eines lokalen R-Paketrepositorys mit miniCRAN.For more information, see Create a local R package repository using miniCRAN.

Das sqlmlutils-Paket besteht aus einer ZIP-Datei, die Sie auf den Clientcomputer kopieren und dort installieren können.The sqlmlutils package consists of a single zip file that you can copy to the client computer and install.

Auf einem Computer mit Internetzugriff:On a computer with Internet access:

  1. Installieren Sie miniCRAN.Install miniCRAN. Weitere Informationen finden Sie unter Installieren von miniCRAN.See Install miniCRAN for details.

  2. Führen Sie in RStudio das folgende R-Skript aus, um ein lokales Repository für das Paket RODBCext zu erstellen.In RStudio, run the following R script to create a local repository of the package RODBCext. In diesem Beispiel wird das Repository im Ordner c:\downloads\rodbcext erstellt.This example creates the repository in the folder c:\downloads\rodbcext.

    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/rodbcext"
    pkgs_needed <- "RODBCext"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.5");
    
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/rodbcext"
    pkgs_needed <- "RODBCext"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "source", Rversion = "3.5");
    

    Geben Sie für den Rversion-Wert die unter SQL Server installierte Version von R an.For the Rversion value, use the version of R installed on SQL Server. Um zu ermitteln, welche Version installiert ist, verwenden Sie den folgenden T-SQL-Befehl.To verify the installed version, use the following T-SQL command.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  3. Laden Sie die neueste sqlmlutils-ZIP-Datei unter https://github.com/Microsoft/sqlmlutils/tree/master/R/dist herunter. (Entpacken Sie die Datei jedoch nicht.)Download the latest sqlmlutils zip file from https://github.com/Microsoft/sqlmlutils/tree/master/R/dist (don't unzip the file). Laden Sie die Datei beispielsweise in das Verzeichnis c:\downloads\sqlmlutils_0.7.1.zip.For example, download the file to c:\downloads\sqlmlutils_0.7.1.zip.

  4. Kopieren Sie den gesamten RODBCext-Repositoryordner (c:\downloads\rodbcext) und die sqlmlutils-ZIP-Datei (c:\downloads\sqlmlutils_0.7.1.zip) auf den Clientcomputer.Copy the entire RODBCext repository folder (c:\downloads\rodbcext) and the sqlmlutils zip file (c:\downloads\sqlmlutils_0.7.1.zip) to the client computer. Kopieren Sie beispielsweise beides in den Ordner c:\temp\packages auf dem Clientcomputer.For example, copy them to the folder c:\temp\packages on the client computer.

Öffnen Sie auf dem Clientcomputer, den Sie zum Herstellen einer Verbindung mit SQL Server verwenden, eine Eingabeaufforderung, und führen Sie die folgenden Befehle aus, um zuerst RODBCext und dann sqlmlutils zu installieren.On the client computer you use to connect to SQL Server, open a command prompt and run the following commands to install RODBCext and then sqlmlutils.

R -e "install.packages('RODBCext', repos='c:\temp\packages\rodbcext')"
R CMD INSTALL c:\temp\packages\sqlmlutils_0.7.1.zip

Hinzufügen eines R-Pakets in SQL ServerAdd an R package on SQL Server

Im folgenden Beispiel fügen Sie in SQL Server das Paket glue hinzu.In the following example, you'll add the glue package to SQL Server.

Hinzufügen des Pakets über eine InternetverbindungAdd the package online

Wenn der Clientcomputer, mit dem Sie sich mit SQL Server verbinden, über einen Internetzugang verfügt, können Sie mit sqlmlutils das Paket glue und alle Abhängigkeiten über das Internet suchen. Anschließend können Sie das Paket per Remotezugriff in einer SQL Server-Instanz installieren.If the client computer you use to connect to SQL Server has Internet access, you can use sqlmlutils to find the glue package and any dependencies over the Internet, and then install the package to a SQL Server instance remotely.

  1. Öffnen Sie auf dem Clientcomputer RStudio, und erstellen Sie eine neue R-Skriptdatei.On the client computer, open RStudio and create a new R Script file.

  2. Verwenden Sie das folgende R-Skript zum Installieren des glue-Pakets mithilfe von sqlmlutils.Use the following R script to install the glue package using sqlmlutils. Ersetzen Sie die eigenen Verbindungsdaten der SQL Server-Datenbank. (Wenn Sie keine Windows-Authentifizierung verwenden, fügen Sie die Parameter uid und pwd hinzu.)Substitute your own SQL Server database connection information (if you don't use Windows Authentication, add uid and pwd parameters).

    library(sqlmlutils)
    connection <- connectionInfo(
      server= "yourserver",
      database = "yourdatabase")
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC")
    

    Tipp

    Für scope kann PUBLIC oder PRIVATE angegeben werden.The scope can be either PUBLIC or PRIVATE. Ein öffentlicher Bereich (PUBLIC) ist für den Datenbankadministrator zum Installieren von Paketen nützlich, die von allen Benutzern verwendet werden.Public scope is useful for the database administrator to install packages that all users can use. Pakete in einem privaten Bereich (PRIVATE) sind nur für den Benutzer verfügbar, der sie installiert.Private scope makes the package available only to the user who installs it. Wenn Sie keinen Bereich definieren, wird die Standardeinstellung PRIVATE verwendet.If you don't specify the scope, the default scope is PRIVATE.

Hinzufügen des Pakets ohne InternetverbindungAdd the package offline

Wenn der Clientcomputer keine Internetverbindung hat, können Sie das glue-Paket mit miniCRAN und einem Computer mit Internetzugang herunterladen.If the client computer doesn't have an Internet connection, you can use miniCRAN to download the glue package using a computer that does have Internet access. Anschließend kopieren Sie das Paket auf den Clientcomputer, auf dem Sie das Paket offline installieren können.You then copy the package to the client computer where you can install the package offline. Informationen zum Installieren von miniCRAN finden Sie unter Installieren von miniCRAN.See Install miniCRAN for information on installing miniCRAN.

Auf einem Computer mit Internetzugriff:On a computer with Internet access:

  1. Führen Sie das folgende R-Skript aus, um ein lokales Repository für glue zu erstellen.Run the following R script to create a local repository for glue. In diesem Beispiel wird der Repositoryordner im Verzeichnis c:\downloads\glue erstellt.This example creates the repository folder in c:\downloads\glue.

    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/glue"
    pkgs_needed <- "glue"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.5");
    
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/glue"
    pkgs_needed <- "glue"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "source", Rversion = "3.5");
    

    Geben Sie für den Rversion-Wert die unter SQL Server installierte Version von R an.For the Rversion value, use the version of R installed on SQL Server. Um zu ermitteln, welche Version installiert ist, verwenden Sie den folgenden T-SQL-Befehl.To verify the installed version, use the following T-SQL command.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  2. Kopieren Sie den gesamten glue-Repositoryordner (c:\downloads\glue) auf den Clientcomputer.Copy the entire glue repository folder (c:\downloads\glue) to the client computer. Kopieren Sie ihn beispielsweise in den Ordner c:\temp\packages\glue.For example, copy it to the folder c:\temp\packages\glue.

Auf dem Clientcomputer:On the client computer:

  1. Öffnen Sie RStudio, und erstellen Sie eine neue R-Skriptdatei.Open RStudio and create a new R Script file.

  2. Verwenden Sie das folgende R-Skript zum Installieren des glue-Pakets mithilfe von sqlmlutils.Use the following R script to install the glue package using sqlmlutils. Ersetzen Sie die eigenen Verbindungsdaten der SQL Server-Datenbank. (Wenn Sie keine Windows-Authentifizierung verwenden, fügen Sie die Parameter uid und pwd hinzu.)Substitute your own SQL Server database connection information (if you don't use Windows Authentication, add uid and pwd parameters).

    library(sqlmlutils)
    connection <- connectionInfo(
      server= "yourserver",
      database = "yourdatabase")
    localRepo = "c:/temp/packages/glue"
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC", repos=paste0("file:///",localRepo))
    

    Tipp

    Für scope kann PUBLIC oder PRIVATE angegeben werden.The scope can be either PUBLIC or PRIVATE. Ein öffentlicher Bereich (PUBLIC) ist für den Datenbankadministrator zum Installieren von Paketen nützlich, die von allen Benutzern verwendet werden.Public scope is useful for the database administrator to install packages that all users can use. Pakete in einem privaten Bereich (PRIVATE) sind nur für den Benutzer verfügbar, der sie installiert.Private scope makes the package available only to the user who installs it. Wenn Sie keinen Bereich definieren, wird die Standardeinstellung PRIVATE verwendet.If you don't specify the scope, the default scope is PRIVATE.

Verwenden des PaketsUse the package

Nachdem Sie das glue-Paket installiert haben, können Sie es in einem R-Skript in SQL Server mit dem T-SQL-Befehl sp_execute_external_script verwenden.Once the glue package is installed, you can use it in an R script in SQL Server with the T-SQL sp_execute_external_script command.

  1. Öffnen Sie Azure Data Studio oder SSMS, und stellen Sie eine Verbindung mit Ihrer SQL Server-Datenbank her.Open Azure Data Studio or SSMS and connect to your SQL Server database.

  2. Führen Sie den folgenden Befehl aus:Run the following command:

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    library(glue)
    
    name <- "Fred"
    birthday <- as.Date("2020-06-14")
    text <- glue(''My name is {name} '',
    ''and my birthday is {format(birthday, "%A, %B %d, %Y")}.'')
    
    print(text)
          ';
    

    ErgebnisseResults

    My name is Fred and my birthday is Sunday, June 14, 2020.
    

Entfernen des ProgrammsRemove the package

Wenn Sie das glue-Paket entfernen möchten, führen Sie das folgende R-Skript aus.If you would like to remove the glue package, run the following R script. Verwenden Sie die zuvor definierte Verbindungsvariable.Use the same connection variable you defined earlier.

sql_remove.packages(connectionString = connection, pkgs = "glue", scope = "PUBLIC")

Nächste SchritteNext steps