다음을 통해 공유


sqlmlutils로 R 패키지 설치

적용 대상: SQL Server 2019 (15.x) Azure SQL Managed Instance

이 문서에서는 sqlmlutils 패키지의 함수를 사용하여 SQL Server Machine Learning Services빅 데이터 클러스터 인스턴스에 R 패키지를 설치하는 방법을 설명합니다. 설치하는 패키지는 sp_execute_external_script T-SQL 문을 사용하여 데이터베이스에서 실행되는 R 스크립트에서 사용할 수 있습니다.

참고 항목

이 문서에 설명된 sqlmlutils 패키지는 SQL Server 2019 이상에 R 패키지를 추가하는 데 사용됩니다. SQL Server 2017 이하의 경우 R 도구를 사용하여 패키지 설치를 참조하세요.

이 문서에서는 sqlmlutils 패키지의 함수를 사용하여 Azure SQL 관리 인스턴스 Machine Learning Services에 R 패키지를 설치하는 방법을 설명합니다. 설치하는 패키지는 sp_execute_external_script T-SQL 문을 사용하여 데이터베이스에서 실행되는 R 스크립트에서 사용할 수 있습니다.

참고 항목

SQL Managed Instance Machine Learning Services의 인스턴스에 미리 설치된 패키지는 업데이트하거나 제거할 수 없습니다. 현재 설치된 패키지의 목록을 보려면 설치된 모든 R 패키지 나열을 참조하세요.

필수 조건

  • SQL 서버에 연결하는 데 사용하는 클라이언트 시스템에 RRStudio Desktop을 설치합니다. 스크립트 실행에 아무 R IDE를 사용해도 되지만, 이 문서에서는 RStudio를 사용하는 것으로 가정합니다.

    클라이언트 컴퓨터의 R 버전은 서버의 R 버전과 일치해야 하며 설치하는 패키지가 보유한 R 버전 규격이어야 합니다. 각 SQL Server 버전에 포함된 R 버전에 대한 자세한 내용은 Python 및 R 버전을 참조하세요.

    특정 SQL Server에서 R 버전을 확인하려면 다음 T-SQL 명령을 사용합니다.

    EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(R.version)'
    
  • SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터에 Azure Data Studio를 설치합니다. 다른 데이터베이스 관리 또는 쿼리 도구를 사용할 수 있지만 이 문서에서는 Azure Data Studio를 가정합니다.

기타 고려 사항

  • 패키지 설치는 sqlmlutils에 제공하는 연결 정보에 지정한 SQL 인스턴스, 데이터베이스 및 사용자와 관련이 있습니다. 여러 SQL 인스턴스 또는 데이터베이스 또는 다른 사용자에 패키지를 사용하려면 각각에 대한 패키지를 설치해야 합니다. 예외는 패키지가 dbo의 멤버에 의해 설치되는 경우 패키지가 공용이며 모든 사용자와 공유된다는 것입니다. 사용자가 새 버전의 공용 패키지를 설치하는 경우 공용 패키지는 영향을 받지 않지만 해당 사용자는 새 버전에 액세스할 수 있습니다.

  • SQL Server에서 실행되는 R 스크립트는 기본 인스턴스 라이브러리에 설치된 패키지만 사용할 수 있습니다. SQL Server는 해당 라이브러리가 동일한 컴퓨터에 있더라도 외부 라이브러리에서 패키지를 로드할 수 없습니다. 여기에는 다른 Microsoft 제품과 함께 설치된 R 라이브러리가 포함됩니다.

  • 강화된 SQL Server 환경에서는 다음을 방지해야 할 수 있습니다.

    • 네트워크 액세스가 필요한 패키지
    • 높은 파일 시스템 액세스 권한이 필요한 패키지
    • SQL Server 내에서 실행하는 데 이점이 없는 웹 개발 또는 기타 작업에 사용되는 패키지

클라이언트 컴퓨터에 sqlmlutils 설치

sqlmlutils를 사용하려면 먼저 SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터에 설치해야 합니다.

sqlmlutils 패키지는 odbc 패키지에 따라 달라지고 odbc는 여러 다른 패키지 수에 따라 달라집니다. 다음 절차에서는 이러한 모든 패키지를 올바른 순서로 설치합니다.

sqlmlutils 온라인 설치

클라이언트 컴퓨터에 인터넷에 액세스할 수 있는 경우 sqlmlutils 및 해당 종속 패키지를 온라인으로 다운로드하여 설치할 수 있습니다.

  1. 클라이언트트 컴퓨터에 https://github.com/microsoft/sqlmlutils/releases에서 최신 sqlmlutils 파일(Windows의 경우 .zip, Linux의 경우 .tar.gz)을 다운로드합니다. 파일을 확장하지 않습니다.

  2. 명령 프롬프트를 열고 다음 명령을 실행하여 패키지 odbcsqlmlutils를 설치합니다. 다운로드한 sqlmlutils 파일의 경로를 대체합니다. odbc 패키지가 온라인으로 검색되어 설치됩니다.

    R.exe -e "install.packages('odbc', type='binary')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.zip
    
    R.exe -e "install.packages('odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
    

sqlmlutils 오프라인 설치

클라이언트 컴퓨터가 인터넷에 연결되어 있지 않은 경우에는 인터넷에 액세스할 수 있는 컴퓨터를 사용하여 odbcsqlmlutils 패키지를 미리 다운로드해야 합니다. 그런 다음 파일을 클라이언트 컴퓨터의 폴더에 복사하고 패키지를 오프라인으로 설치할 수 있습니다.

odbc 패키지에는 여러 종속 패키지가 포함되어 있으므로 패키지의 모든 종속 요소를 식별하기가 어렵습니다. miniCRAN을 사용하여 모든 종속 패키지를 포함하는 패키지에 대한 로컬 리포지토리 폴더를 만드는 것이 좋습니다. 자세한 내용은 miniCRAN을 사용하여 로컬 R 패키지 리포지토리 만들기를 참조하세요.

sqlmlutils 패키지는 클라이언트 컴퓨터에 복사하여 설치할 수 있는 단일 파일로 구성되어 있습니다.

인터넷에 액세스할 수 있는 컴퓨터

  1. miniCRAN을 설치합니다. 자세한 내용은 miniCRAN 설치를 참조하세요.

  2. RStudio에서 다음 R 스크립트를 실행하여 패키지 odbc의 로컬 리포지토리를 만듭니다. 이 예제에서는 리포지토리가 폴더 odbc에 만들어질 것이라고 가정합니다.

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

    Rversion 값의 경우 SQL Server에 설치된 R 버전을 사용합니다. 설치된 버전을 확인하려면 다음 T-SQL 명령을 사용합니다.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  3. https://github.com/microsoft/sqlmlutils/releases에서 최신 sqlmlutils 파일(Windows의 경우 .zip, Linux의 경우 .tar.gz)을 다운로드합니다. 파일을 확장하지 않습니다.

  4. 전체 odbc 리포지토리 폴더 및 sqlmlutils 파일을 클라이언트 컴퓨터에 복사합니다.

SQL 서버에 연결하는 데 사용하는 클라이언트 시스템

  1. 명령 프롬프트가 엽니다.

  2. 다음 명령을 실행하여 odbcsqlmlutils를 차례로 설치합니다. 이 컴퓨터에 복사한 odbc 리포지토리 폴더와 sqlmlutils 파일의 전체 경로를 대체합니다.

    R.exe -e "install.packages('odbc', repos='odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.zip
    
    R.exe -e "install.packages('odbc', repos='odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
    

SQL Server에서 R 패키지 추가

다음 예제에서는 SQL Server에 glue 패키지를 추가합니다.

온라인으로 패키지 추가

SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터에 인터넷 액세스 권한이 있는 경우 sqlmlutils를 사용하여 인터넷을 통해 glue 패키지 및 종속성을 찾은 다음 패키지를 SQL Server 인스턴스에 원격으로 설치할 수 있습니다.

  1. 클라이언트 컴퓨터에서 RStudio를 열고 새 R 스크립트 파일을 만듭니다.

  2. 다음 R 스크립트를 사용하여 sqlmlutils를 통해 glue 패키지를 설치합니다. 사용자 고유의 SQL Server 데이터베이스 연결 정보를 대체합니다.

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

    범위공용 또는 전용일 수 있습니다. 공용 범위는 데이터베이스 관리자가 모든 사용자가 사용할 수 있는 패키지를 설치하는 데 유용합니다. 프라이빗 범위는 패키지를 설치하는 사용자만 패키지를 사용할 수 있습니다. 범위를 지정하지 않으면 기본 범위는 PRIVATE입니다.

오프라인으로 패키지 추가

클라이언트 컴퓨터에 인터넷이 연결되어 있지 않은 경우 miniCRAN을 사용하여 인터넷에 액세스할 수 있는 컴퓨터를 사용하여 glue 패키지를 다운로드할 수 있습니다. 그런 다음, 패키지를 오프라인으로 설치할 수 있는 클라이언트 컴퓨터에 해당 패키지를 복사합니다. miniCRAN 설치에 대한 자세한 내용은 miniCRAN 설치를 참조하세요.

인터넷에 액세스할 수 있는 컴퓨터

  1. 다음 R 스크립트를 실행하여 glue용 로컬 리포지토리를 만듭니다. 다음 예제는 c:\downloads\glue에 리포지토리 폴더를 만듭니다.

    library("miniCRAN")
    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");
    
    library("miniCRAN")
    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 값의 경우 SQL Server에 설치된 R 버전을 사용합니다. 설치된 버전을 확인하려면 다음 T-SQL 명령을 사용합니다.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  2. 전체 glue 리포지토리 폴더(c:\downloads\glue)를 클라이언트 컴퓨터에 복사합니다. 예를 들어, 폴더 c:\temp\packages\glue에 복사합니다.

클라이언트 컴퓨터에서 다음을 수행합니다.

  1. RStudio를 열고 새 R 스크립트 파일을 만듭니다.

  2. 다음 R 스크립트를 사용하여 sqlmlutils를 통해 glue 패키지를 설치합니다. 사용자 고유의 SQL Server 데이터베이스 연결 정보를 대체합니다(Windows 인증을 사용하지 않는 경우 추가 uidpwd 매개 변수).

    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))
    

    범위공용 또는 전용일 수 있습니다. 공용 범위는 데이터베이스 관리자가 모든 사용자가 사용할 수 있는 패키지를 설치하는 데 유용합니다. 프라이빗 범위는 패키지를 설치하는 사용자만 패키지를 사용할 수 있습니다. 범위를 지정하지 않으면 기본 범위는 PRIVATE입니다.

패키지 사용

glue 패키지가 설치되면 T-SQL sp_execute_external_script 명령을 사용하여 SQL Server의 R 스크립트에서 글루 패키지를 사용할 수 있습니다.

  1. Azure Data Studio를 열고 SQL Server 데이터베이스에 연결합니다.

  2. 다음 명령을 실행합니다.

    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)
          ';
    

    결과

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

패키지 제거

glue 패키지를 제거하려면 다음 R 스크립트를 실행합니다. 앞에서 정의한 것과 동일한 연결 변수를 사용합니다.

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

추가 sqlmlutils 함수

sqlmlutils 패키지에는 R 패키지를 관리하고 SQL Server에서 저장 프로시저와 쿼리를 생성, 관리, 실행할 수 있는 많은 함수가 있습니다. 자세한 내용은 sqlmlutils R 추가 정보 파일을 참조하세요.

sqlmlutils 함수에 관한 정보를 확인하려면 R help 함수나 ? 연산자를 사용합니다. 예시:

library(sqlmlutils)
help("sql_install.packages")

다음 단계