Установка новых пакетов R с помощью sqlmlutilsInstall new R packages with sqlmlutils

Применимо к:Applies to: даSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed InstanceПрименимо к:Applies to: даSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance

В этой статье описывается использование функций из пакета sqlmlutils для установки новых пакетов R в экземпляре Служб машинного обучения SQL Server и в кластерах больших данных.This article describes how to use functions in the sqlmlutils package to install new R packages to an instance of Machine Learning Services on SQL Server and on Big Data Clusters. Устанавливаемые пакеты можно использовать в сценариях R, выполняющихся в базе данных, с помощью инструкции 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.

Примечание

Описанный в этой статье пакет sqlmlutils используется для добавления пакетов R в SQL Server 2019 и более поздних версий.The sqlmlutils package described in this article is used for adding R packages to SQL Server 2019 or later. Для SQL Server 2017 и более ранних версий обратитесь к разделу Установка пакетов с инструментами R.For SQL Server 2017 and earlier, see Install packages with R tools.

В этой статье описывается использование функций из пакета sqlmlutils для установки новых пакетов R в экземпляре Служб машинного обучения в Управляемом экземпляре SQL Azure.This article describes how to use functions in the sqlmlutils package to install new R packages to an instance of Azure SQL Managed Instance Machine Learning Services. Устанавливаемые пакеты можно использовать в сценариях R, выполняющихся в базе данных, с помощью инструкции 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.

Предварительные требованияPrerequisites

  • Установите R и RStudio Desktop на клиентском компьютере, который используется для подключения к SQL Server.Install R and RStudio Desktop on the client computer you use to connect to SQL Server. Для выполнения сценариев можно использовать любую интегрированную среду разработки R, но в этой статье применяется RStudio.You can use any R IDE for running scripts, but this article assumes RStudio.

  • Установите Azure Data Studio на клиентском компьютере, который используется для подключения к SQL Server.Install Azure Data Studio on the client computer you use to connect to SQL Server. Вы можете использовать другие средства запросов и управления базами данных, но в этой статье рассматривается Azure Data Studio.You can use other database management or query tools, but this article assumes Azure Data Studio.

Другие замечанияOther considerations

  • Установка пакета зависит от экземпляра SQL, базы данных и пользователя, указанных в сведениях о подключении, которые вы укажете для sqlmlutils.Package installation is specific to the SQL instance, database, and user you specify in the connection information you provide to sqlmlutils. Чтобы использовать пакет в нескольких экземплярах или базах данных SQL или для разных пользователей, необходимо установить пакет для каждого из них.To use the package in multiple SQL instances or databases, or for different users, you'll need to install the package for each one. Исключением является только если пакет устанавливается членом dbo, когда пакет общедоступный и является общим для всех пользователей.The exception is that if the package is installed by a member of dbo, the package is public and is shared with all users. Если пользователь устанавливает более новую версию общедоступного пакета, это не повлияет на общедоступный пакет, но такой пользователь будет иметь доступ к более новой версии.If a user installs a newer version of a public package, the public package is not affected but that user will have access to the newer version.

  • Сценарий R, выполняющийся в SQL Server, может использовать только пакеты, установленные в библиотеке экземпляра по умолчанию.R script running in SQL Server can use only packages installed in the default instance library. SQL Server не может загружать пакеты из внешних библиотек, даже если эти библиотеки находятся на том же компьютере.SQL Server cannot load packages from external libraries, even if that library is on the same computer. В их число входят библиотеки R, установленные с другими продуктами Майкрософт.This includes R libraries installed with other Microsoft products.

  • В защищенной среде SQL Server может потребоваться отказаться от следующих пакетов:On a hardened SQL Server environment, you might want to avoid the following:

    • пакеты, которым требуется доступ к сети;Packages that require network access
    • пакеты, которым требуется доступ к файловой системе с повышенными правами;Packages that require elevated file system access
    • пакеты, используемые для веб-разработки или других задач, малоэффективных в SQL Server.Packages used for web development or other tasks that don't benefit by running inside SQL Server

Установка пакета sqlmlutils на клиентском компьютереInstall sqlmlutils on the client computer

Сначала пакет sqlmlutils необходимо установить на клиентском компьютере, который используется для подключения к SQL Server.To use sqlmlutils, you first need to install it on the client computer you use to connect to SQL Server.

Пакет sqlmlutils зависит от пакета RODBCext, а RODBCext — от ряда других пакетов.The sqlmlutils package depends on the RODBCext package, and RODBCext depends on a number of other packages. Следующие процедуры позволяют установить все эти пакеты в правильном порядке.The following procedures install all of these packages in the correct order.

Установка пакета sqlmlutils в сетевом режимеInstall sqlmlutils online

Если у клиентского компьютера есть доступ к Интернету, вы можете скачать и установить пакет sqlmlutils и его зависимые пакеты по сети.If the client computer has Internet access, you can download and install sqlmlutils and its dependent packages online.

  1. Скачайте на клиентский компьютер последнюю версию файла sqlmlutils (.zip для Windows, .tar.gz для Linux) с сайта https://github.com/Microsoft/sqlmlutils/tree/master/R/dist.Download the latest sqlmlutils file (.zip for Windows, .tar.gz for Linux) from https://github.com/Microsoft/sqlmlutils/tree/master/R/dist to the client computer. Не разворачивайте файл.Don't expand the file.

  2. Откройте командную строку и выполните следующие команды для установки пакетов RODBCext и sqlmlutils.Open a Command Prompt and run the following commands to install the packages RODBCext and sqlmlutils. Измените путь к скачанному файлу sqlmlutils.Substitute the path to the sqlmlutils file you downloaded. Пакет RODBCext находится в сети и установлен.The RODBCext package is found online and installed.

    R -e "install.packages('RODBCext', repos='https://mran.microsoft.com/snapshot/2019-02-01/')"
    R CMD INSTALL sqlmlutils_0.7.1.zip
    
    R -e "install.packages('RODBCext', repos='https://mran.microsoft.com/snapshot/2019-02-01/')"
    R CMD INSTALL sqlmlutils_0.7.1.tar.gz
    

Установка пакета sqlmlutils в автономном режимеInstall sqlmlutils offline

Если у клиентского компьютера нет подключения к Интернету, вам нужно заранее скачать пакеты RODBCext и sqlmlutils на компьютере с доступом к Интернету.If the client computer doesn't have an Internet connection, you need to download the packages RODBCext and sqlmlutils in advance using a computer that does have Internet access. Затем файлы можно скопировать в папку на клиентском компьютере и установить пакеты в автономном режиме.You then can copy the files to a folder on the client computer and install the packages offline.

У пакета RODBCext есть несколько зависимых пакетов, но при определении всех зависимостей для пакета возникают сложности.The RODBCext package has a number of dependent packages, and identifying all dependencies for a package gets complicated. Рекомендуется воспользоваться miniCRAN и создать папку локального репозитория для пакета, включающего все зависимые пакеты.We recommend that you use miniCRAN to create a local repository folder for the package that includes all the dependent packages. Дополнительные сведения см. в статье Create a local R package repository using miniCRAN (Создание локального репозитория пакетов R с помощью miniCRAN).For more information, see Create a local R package repository using miniCRAN.

Пакет sqlmlutils состоит из одного файла, который можно скопировать на клиентский компьютер и установить.The sqlmlutils package consists of a single file that you can copy to the client computer and install.

На компьютере с доступом к ИнтернетуOn a computer with Internet access:

  1. Установите miniCRAN.Install miniCRAN. Дополнительные сведения см. в разделе об установке miniCRAN.See Install miniCRAN for details.

  2. В RStudio выполните следующий сценарий R, чтобы создать локальный репозиторий пакета RODBCext.In RStudio, run the following R script to create a local repository of the package RODBCext. В этом примере предполагается, что репозиторий будет создан в папке rodbcext.This example assumes the repository will be created in the folder rodbcext.

    CRAN_mirror <- c(CRAN = "https://mran.microsoft.com/snapshot/2019-02-01/")
    local_repo <- "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://mran.microsoft.com/snapshot/2019-02-01/")
    local_repo <- "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");
    

    В качестве значения Rversion укажите версию R, установленную в SQL Server.For the Rversion value, use the version of R installed on SQL Server. Чтобы проверить установленную версию, используйте следующую команду T-SQL.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. Скачайте последнюю версию файла sqlmlutils (.zip для Windows, .tar.gz для Linux) с сайта https://github.com/Microsoft/sqlmlutils/tree/master/R/dist.Download the latest sqlmlutils file (.zip for Windows, .tar.gz for Linux) from https://github.com/Microsoft/sqlmlutils/tree/master/R/dist. Не разворачивайте файл.Don't expand the file.

  4. Скопируйте всю папку репозитория RODBCext и файл sqlmlutils на клиентский компьютер.Copy the entire RODBCext repository folder and the sqlmlutils file to the client computer.

На клиентском компьютере, используемом для подключения к SQL Server:On the client computer you use to connect to SQL Server:

  1. Откройте командную строку.Open a command prompt.

  2. Выполните следующие команды, чтобы установить RODBCext и sqlmlutils.Run the following commands to install RODBCext and then sqlmlutils. Измените полные пути к папке репозитория RODBCext и файлу sqlmlutils, скопированным на этот компьютер.Substitute the full paths to the RODBCext repository folder and the sqlmlutils file you copied to this computer.

    R -e "install.packages('RODBCext', repos='rodbcext')"
    R CMD INSTALL sqlmlutils_0.7.1.zip
    
    R -e "install.packages('RODBCext', repos='rodbcext')"
    R CMD INSTALL sqlmlutils_0.7.1.tar.gz
    

Добавление пакета R в SQL ServerAdd an R package on SQL Server

В следующем примере вы добавите пакет glue в SQL Server.In the following example, you'll add the glue package to SQL Server.

Добавление пакета в сетевом режимеAdd the package online

Если клиентский компьютер, используемый для подключения к SQL Server, имеет доступ к Интернету, с помощью пакета sqlmlutils можно найти пакет glue и все зависимости через Интернет, а затем удаленно установить пакет в экземпляре SQL Server.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. На клиентском компьютере откройте RStudio и создайте файл сценария R.On the client computer, open RStudio and create a new R Script file.

  2. Выполните следующий сценарий R для установки пакета glue с помощью пакета sqlmlutils.Use the following R script to install the glue package using sqlmlutils. Подставьте собственные значения для подключения к базе данных SQL Server.Substitute your own SQL Server database connection information.

    library(sqlmlutils)
    connection <- connectionInfo(
      server   = "server",
      database = "database",
      uid      = "username",
      pwd      = "password")
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC")
    

    Совет

    Параметр scope может иметь значение PUBLIC или PRIVATE.The scope can be either PUBLIC or PRIVATE. Общая область полезна администратору базы данных для установки пакетов, которые могут использовать все пользователи.Public scope is useful for the database administrator to install packages that all users can use. В личной области пакет доступен только устанавливающему его пользователю.Private scope makes the package available only to the user who installs it. Если область не указана, по умолчанию используется область PRIVATE.If you don't specify the scope, the default scope is PRIVATE.

Добавление пакета в автономном режимеAdd the package offline

Если у клиентского компьютера нет подключения к Интернету, воспользуйтесь miniCRAN, чтобы скачать пакет glue на компьютере, имеющем доступ к Интернету.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. Затем пакет копируется на клиентский компьютер для установки в автономном режиме.You then copy the package to the client computer where you can install the package offline. Сведения об установке miniCRAN см. в разделе Установка miniCRAN.See Install miniCRAN for information on installing miniCRAN.

На компьютере с доступом к ИнтернетуOn a computer with Internet access:

  1. Выполните следующий сценарий R для создания локального репозитория для пакета glue.Run the following R script to create a local repository for glue. В этом примере папка репозитория создается в папке 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");
    

    В качестве значения Rversion укажите версию R, установленную в SQL Server.For the Rversion value, use the version of R installed on SQL Server. Чтобы проверить установленную версию, используйте следующую команду T-SQL.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. Скопируйте всю папку репозитория glue (c:\downloads\glue) на клиентский компьютер.Copy the entire glue repository folder (c:\downloads\glue) to the client computer. Например, скопируйте ее в папку c:\temp\packages\glue.For example, copy it to the folder c:\temp\packages\glue.

На клиентском компьютереOn the client computer:

  1. Откройте RStudio и создайте файл сценария R.Open RStudio and create a new R Script file.

  2. Выполните следующий сценарий R для установки пакета glue с помощью пакета sqlmlutils.Use the following R script to install the glue package using sqlmlutils. Замените сведения о подключении к базе данных SQL Server (если не используется проверка подлинности Windows, добавьте параметры uid и 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))
    

    Совет

    Параметр scope может иметь значение PUBLIC или PRIVATE.The scope can be either PUBLIC or PRIVATE. Общая область полезна администратору базы данных для установки пакетов, которые могут использовать все пользователи.Public scope is useful for the database administrator to install packages that all users can use. В личной области пакет доступен только устанавливающему его пользователю.Private scope makes the package available only to the user who installs it. Если область не указана, по умолчанию используется область PRIVATE.If you don't specify the scope, the default scope is PRIVATE.

Использование пакетаUse the package

После установки пакет glue можно использовать в сценарии R в SQL Server с командой 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. Откройте Azure Data Studio и подключитесь к своей базе данных SQL Server.Open Azure Data Studio and connect to your SQL Server database.

  2. Выполните следующую команду: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)
          ';
    

    РезультатыResults

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

Удаление пакетаRemove the package

Чтобы удалить пакет glue, выполните следующий сценарий R.If you would like to remove the glue package, run the following R script. Используйте ту же переменную connection, которая была определена ранее.Use the same connection variable you defined earlier.

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

Дальнейшие действияNext steps