Installer de nouveaux packages R avec sqlmlutilsInstall new R packages with sqlmlutils

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cet article décrit comment utiliser des fonctions du package sqlmlutils pour installer de nouveaux packages R sur une instance de SQL Server Machine Learning Services ou SQL Server R Services.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. Les packages que vous installez peuvent être utilisés dans des scripts R exécutés dans la base de données à l’aide de l’instruction T-SQL sp_execute_external_script.The packages you install can be used in R scripts running in-database using the sp_execute_external_script T-SQL statement.

Notes

La commande install.packages R standard n’est pas recommandée pour l’ajout de packages R sur SQL Server.The standard R install.packages command is not recommended for adding R packages on SQL Server. Au lieu de cela, utilisez sqlmlutils comme décrit dans cet article.Instead, use sqlmlutils as described in this article.

Conditions préalables requisesPrerequisites

  • Installez R et RStudio Desktop sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server.Install R and RStudio Desktop on the client computer you use to connect to SQL Server. Vous pouvez utiliser n’importe quel IDE R pour exécuter les scripts, mais cet article part du principe que vous utilisez RStudio.You can use any R IDE for running scripts, but this article assumes RStudio.

  • Installez Azure Data Studio ou SQL Server Management Studio (SSMS) sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server.Install Azure Data Studio or SQL Server Management Studio (SSMS) on the client computer you use to connect to SQL Server. Vous pouvez utiliser d’autres outils de gestion de base de données ou de requête, mais cet article part du principe que vous utilisez Azure Data Studio ou SSMS.You can use other database management or query tools, but this article assumes Azure Data Studio or SSMS.

Autres considérationsOther considerations

  • Le script R s’exécutant dans SQL Server peut utiliser uniquement des packages installés dans la bibliothèque d’instances par défaut.R script running in SQL Server can use only packages installed in the default instance library. SQL Server ne peut pas charger les packages à partir de bibliothèques externes, même si cette bibliothèque est sur le même ordinateur.SQL Server cannot load packages from external libraries, even if that library is on the same computer. Cela comprend les bibliothèques R installées avec d’autres produits Microsoft.This includes R libraries installed with other Microsoft products.

  • Dans un environnement de SQL Server renforcé, vous souhaiterez peut-être éviter ce qui suit :On a hardened SQL Server environment, you might want to avoid the following:

    • Les packages qui nécessitent un accès réseauPackages that require network access
    • Les packages qui nécessitent un accès au système de fichiers élevéPackages that require elevated file system access
    • Les packages utilisés pour le développement web ou d’autres tâches qui ne bénéficient pas de l’exécution dans SQL ServerPackages used for web development or other tasks that don't benefit by running inside SQL Server

Installer sqlmlutils sur l’ordinateur clientInstall sqlmlutils on the client computer

Pour utiliser sqlmlutils, vous devez d’abord l’installer sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server.To use sqlmlutils, you first need to install it on the client computer you use to connect to SQL Server.

Le package sqlmlutils dépend du package RODBCext, et RODBCext dépend d’un certain nombre d’autres packages.The sqlmlutils package depends on the RODBCext package, and RODBCext depends on a number of other packages. Les procédures suivantes installent tous ces packages dans le bon ordre.The following procedures install all of these packages in the correct order.

Installer sqlmlutils en ligneInstall sqlmlutils online

Si l’ordinateur client a accès à Internet, vous pouvez télécharger et installer sqlmlutils et ses packages dépendants en ligne.If the client computer has Internet access, you can download and install sqlmlutils and its dependent packages online.

  1. Téléchargez le dernier fichier zip sqlmlutils à partir de https://github.com/Microsoft/sqlmlutils/tree/master/R/dist sur l’ordinateur client.Download the latest sqlmlutils zip file from https://github.com/Microsoft/sqlmlutils/tree/master/R/dist to the client computer. Ne décompressez pas le fichier.Don't unzip the file.

  2. Ouvrez une invite de commandes et exécutez les commandes suivantes pour installer les packages sqlmlutils et RODBCext.Open a Command Prompt and run the following commands to install the packages sqlmlutils and RODBCext. Remplacez le chemin d’accès complet par le fichier zip sqlmlutils que vous avez téléchargé (cet exemple suppose que le fichier se trouve dans votre dossier Documents).Substitute the full path to the sqlmlutils zip file you downloaded (this example assumes the file is in your Documents folder). Le package RODBCext est trouvé en ligne et installé.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
    

Installer sqlmlutils hors connexionInstall sqlmlutils offline

Si l’ordinateur client n’a pas de connexion Internet, vous devez télécharger les packages sqlmlutils et RODBCext à l’avance à l’aide d’un ordinateur qui a accès à Internet.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. Vous pouvez ensuite copier les fichiers dans un dossier sur l’ordinateur client et installer les packages hors connexion.You then can copy the files to a folder on the client computer and install the packages offline.

Le package RODBCext contient un certain nombre de packages dépendants, et l’identification de toutes les dépendances d’un package devient compliquée.The RODBCext package has a number of dependent packages, and identifying all dependencies for a package gets complicated. Nous vous recommandons d’utiliser miniCRAN pour créer un dossier de référentiel local pour le package qui comprend tous les packages dépendants.We recommend that you use miniCRAN to create a local repository folder for the package that includes all the dependent packages. Pour plus d’informations, consultez Créer un référentiel de packages R local à l’aide de miniCRAN.For more information, see Create a local R package repository using miniCRAN.

Le package sqlmlutils se compose d’un seul fichier zip que vous pouvez copier sur l’ordinateur client et installer.The sqlmlutils package consists of a single zip file that you can copy to the client computer and install.

Sur un ordinateur connecté à Internet :On a computer with Internet access:

  1. Installez miniCRAN.Install miniCRAN. Pour plus d’informations, consultez Installer miniCRAN.See Install miniCRAN for details.

  2. Dans RStudio, exécutez le script R suivant pour créer un référentiel local du package RODBCext.In RStudio, run the following R script to create a local repository of the package RODBCext. Cet exemple crée le référentiel dans le dossier c:\downloads\rodbcext.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");
    

    Pour la valeur Rversion, utilisez la version de R installée sur SQL Server.For the Rversion value, use the version of R installed on SQL Server. Pour vérifier la version installée, utilisez la commande T-SQL suivante.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. Téléchargez le dernier fichier zip sqlmlutils à partir de https://github.com/Microsoft/sqlmlutils/tree/master/R/dist (ne décompressez pas le fichier).Download the latest sqlmlutils zip file from https://github.com/Microsoft/sqlmlutils/tree/master/R/dist (don't unzip the file). Par exemple, téléchargez le fichier dans c:\downloads\sqlmlutils_0.7.1.zip.For example, download the file to c:\downloads\sqlmlutils_0.7.1.zip.

  4. Copiez la totalité du dossier du référentiel RODBCext (c:\downloads\rodbcext) et le fichier zip sqlmlutils (c:\downloads\sqlmlutils_0.7.1.zip) sur l’ordinateur client.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. Par exemple, copiez-les dans le dossier c:\temp\packages sur l’ordinateur client.For example, copy them to the folder c:\temp\packages on the client computer.

Sur l’ordinateur client que vous utilisez pour vous connecter à SQL Server, ouvrez une invite de commandes et exécutez les commandes suivantes pour installer RODBCext puis sqlmlutils.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

Ajouter un package R sur SQL ServerAdd an R package on SQL Server

Dans l’exemple suivant, vous allez ajouter le package glue à SQL Server.In the following example, you'll add the glue package to SQL Server.

Ajouter le package en ligneAdd the package online

Si l’ordinateur client que vous utilisez pour vous connecter à SQL Server a accès à Internet, vous pouvez utiliser sqlmlutils pour rechercher le package glue et toutes les dépendances sur Internet, puis installer le package sur une instance SQL Server à distance.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. Sur l’ordinateur client, ouvrez RStudio et créez un fichier de script R.On the client computer, open RStudio and create a new R Script file.

  2. Utilisez le script R suivant pour installer le packageglue à l’aide de sqlmlutils.Use the following R script to install the glue package using sqlmlutils. Remplacez vos propres informations de connexion de base de données SQL Server (si vous n’utilisez pas l’authentification Windows, ajoutez les paramètres uid et pwd).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")
    

    Conseil

    L’étendue peut être PUBLIQUE ou PRIVÉE.The scope can be either PUBLIC or PRIVATE. L’étendue publique est utile pour que l’administrateur de base de données puisse installer des packages que tous les utilisateurs peuvent utiliser.Public scope is useful for the database administrator to install packages that all users can use. L’étendue privée rend le package disponible uniquement pour l’utilisateur qui l’installe.Private scope makes the package available only to the user who installs it. Si vous ne spécifiez pas l’étendue, l’étendue par défaut est définie sur PRIVÉE.If you don't specify the scope, the default scope is PRIVATE.

Ajouter le package hors connexionAdd the package offline

Si l’ordinateur client n’a pas de connexion Internet, vous pouvez utiliser miniCRAN pour télécharger le packageglue à l’aide d’un ordinateur qui a accès à Internet.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. Vous copiez ensuite le package sur l’ordinateur client sur lequel vous pouvez installer le package hors connexion.You then copy the package to the client computer where you can install the package offline. Consultez Installer miniCRAN pour plus d’informations sur l’installation de miniCRAN.See Install miniCRAN for information on installing miniCRAN.

Sur un ordinateur connecté à Internet :On a computer with Internet access:

  1. Exécutez le script R suivant pour créer un référentiel local pour glue.Run the following R script to create a local repository for glue. Cet exemple crée le dossier du référentiel dans c:\downloads\glue.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");
    

    Pour la valeur Rversion, utilisez la version de R installée sur SQL Server.For the Rversion value, use the version of R installed on SQL Server. Pour vérifier la version installée, utilisez la commande T-SQL suivante.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. Copiez l’intégralité du dossier du référentiel glue (c:\downloads\glue) sur l’ordinateur client.Copy the entire glue repository folder (c:\downloads\glue) to the client computer. Par exemple, copiez-le dans le dossier c:\temp\packages\glue.For example, copy it to the folder c:\temp\packages\glue.

Sur l’ordinateur client :On the client computer:

  1. Ouvrez RStudio et créez un fichier de script R.Open RStudio and create a new R Script file.

  2. Utilisez le script R suivant pour installer le packageglue à l’aide de sqlmlutils.Use the following R script to install the glue package using sqlmlutils. Remplacez vos propres informations de connexion de base de données SQL Server (si vous n’utilisez pas l’authentification Windows, ajoutez les paramètres uid et pwd).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))
    

    Conseil

    L’étendue peut être PUBLIQUE ou PRIVÉE.The scope can be either PUBLIC or PRIVATE. L’étendue publique est utile pour que l’administrateur de base de données puisse installer des packages que tous les utilisateurs peuvent utiliser.Public scope is useful for the database administrator to install packages that all users can use. L’étendue privée rend le package disponible uniquement pour l’utilisateur qui l’installe.Private scope makes the package available only to the user who installs it. Si vous ne spécifiez pas l’étendue, l’étendue par défaut est définie sur PRIVÉE.If you don't specify the scope, the default scope is PRIVATE.

Utiliser le packageUse the package

Une fois le package glue installé, vous pouvez l’utiliser dans un script R dans SQL Server à l’aide de la commande T-SQL sp_execute_external_script.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. Ouvrez Azure Data Studio ou SSMS et connectez-vous à votre base de données SQL Server.Open Azure Data Studio or SSMS and connect to your SQL Server database.

  2. Exécutez la commande suivante :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)
          ';
    

    RésultatsResults

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

Supprimer le packageRemove the package

Si vous souhaitez supprimer le package glue, exécutez le script R suivant.If you would like to remove the glue package, run the following R script. Utilisez la même variable de connexion que celle que vous avez définie précédemment.Use the same connection variable you defined earlier.

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

Étapes suivantesNext steps