적용 대상: SQL Server 2019 (15.x) 및 이후 버전
Azure SQL Managed Instance
이 글에서는 sqlmlutils 패키지의 함수를 사용하여 SQL Server 위의 Machine Learning Services 인스턴스에 새로운 Python 패키지를 설치하는 방법을 설명합니다. Python sp_execute_external_script T-SQL 문에서 데이터베이스 내에서 실행되는 스크립트에 설치한 패키지를 사용할 수 있습니다.
이 문서에서는 sqlmlutils 패키지의 함수를 사용하여 Azure SQL 관리 인스턴스 Machine Learning Services에 새 Python 패키지를 설치하는 방법을 설명합니다. Python sp_execute_external_script T-SQL 문에서 데이터베이스 내에서 실행되는 스크립트에 설치한 패키지를 사용할 수 있습니다.
참고
SQL Managed Instance Machine Learning 서비스 인스턴스에 미리 설치된 패키지는 업데이트하거나 제거할 수 없습니다. 현재 설치된 패키지의 목록을 보려면 설치된 모든 Python 패키지 나열을 참조하세요.
패키지 위치 및 설치 경로에 대한 자세한 정보는 Python 패키지 정보 가져오기를 참조하세요.
참고
이 글에서 설명한 sqlmlutils 패키지를 사용해 SQL Server 2019 이후 버전에 Python 패키지를 추가하세요. SQL Server 2017 이하의 경우 파이썬 도구를 사용하여 패키지 설치를 참조하세요.
필수 조건
- Python 언어 옵션과 함께 설치된 SQL Server Machine Learning Services.
SQL Server에 연결하는 클라이언트 컴퓨터에 Python을 설치하세요. 명령줄에서 스크립트를 실행할 수도 있고, Python 확장 기능을 가진 Visual Studio Code 같은 Python 개발 환경을 사용할 수도 있습니다.
클라이언트 컴퓨터의 Python 버전은 서버의 Python 버전과 일치해야 하며, 설치하는 패키지는 사용 중인 Python 버전과 호환되어야 합니다. 각 SQL Server 버전에 포함된 Python 버전에 관한 자세한 내용은 Python 및 R 버전을 참조하세요.
특정 SQL Server 인스턴스에서 파이썬 버전을 확인하려면 다음 T-SQL 명령을 사용합니다.
EXECUTE sp_execute_external_script @language = N'Python', @script = N' import sys print(sys.version) 'SQL Server에 연결하는 클라이언트 컴퓨터에 설치된 Visual Studio Code용 MSSQL 확장 프로그램입니다. 다른 데이터베이스 관리 또는 쿼리 도구를 사용할 수 있습니다.
기타 고려 사항
Python 패키지 라이브러리는 SQL Server 인스턴스의 Program Files 폴더에 있습니다. 기본적으로 이 폴더에 설치하려면 관리자 권한이 필요합니다. 자세한 내용은 패키지 라이브러리 위치를 참조하세요.
패키지 설치는 sqlmlutils에 제공하는 연결 정보에 지정한 SQL 인스턴스, 데이터베이스 및 사용자와 관련이 있습니다. 패키지를 여러 SQL 인스턴스나 데이터베이스에서 사용하거나 서로 다른 사용자에 대해 각 인스턴스별로 패키지를 설치하세요. 예외는 모든 사용자에게 공유되는 공개 범위에 설치된 패키지입니다. SQLmlUtils 는 서버 역할의 구성원
sysadmin으로 연결될 때만 기본적으로 공개 범위를 선택하고, 그렇지 않으면 비공개 범위를 선택합니다. 다른 보안 주체로 공용 범위에 설치하려면db_owner를scope=sqlmlutils.Scope.public_scope()에 전달하세요. 그러려면install데이터베이스 역할이 필요합니다. 사용자가 공개 패키지의 최신 버전을 설치하면 공개 패키지는 영향을 받지 않지만, 해당 사용자는 최신 버전에 접근할 수 있습니다.패키지를 추가하기 전에 패키지가 SQL Server 환경에 적합한지 여부를 고려합니다.
데이터베이스 내에서 Python을 머신러닝처럼 데이터베이스와 밀접하게 통합하는 작업이 필요한 작업에는 데이터베이스 내에서 사용하세요. 단순히 데이터베이스를 조회하는 작업보다는 말이죠.
서버에 너무 많은 계산 부담을 주는 패키지를 추가하면 성능이 저하됩니다.
강화된 SQL Server 환경에서는 다음과 같은 유형의 패키지를 피하세요:
- 네트워크 액세스가 필요한 패키지
- 높은 파일 시스템 액세스 권한이 필요한 패키지
- SQL Server 내에서 실행하는 데 이점이 없는 웹 개발 또는 기타 작업에 사용되는 패키지
sqlmlutils로 Python 패키지 tensorflow를 설치할 수 없습니다. 자세한 내용과 해결 방법은 SQL Server Machine Learning Services의 알려진 문제를 참조하십시오.
클라이언트 컴퓨터에 sqlmlutils 설치
sqlmlutils를 사용하려면 먼저 SQL Server에 연결하는 데 사용하는 클라이언트 컴퓨터에 설치해야 합니다.
sqlmlutils 온라인 설치
클라이언트 컴퓨터에 인터넷 접속이 가능하다면, pip를 사용하여 sqlmlutils를 설치하세요:
pip install sqlmlutils
sqlmlutils 오프라인 설치
클라이언트 컴퓨터에 인터넷 연결이 없다면, 다운로드한 파일에서 sqlmlutils 를 설치하세요:
PIP가 설치되어 있는지 확인하세요. 자세한 내용은 PIP 설치 문서를 참조하세요.
sqlmlutils 릴리스 페이지에서 클라이언트 컴퓨터로 최신 SQLmlutils 파일을 다운로드하세요. 파일 압축을 풀지 마세요.
명령 프롬프트를 열고 다음 명령을 실행하여 sqlmlutils 패키지를 설치하세요. 다운로드한 파일의 전체 경로로 대체하세요. 이 예시는 다운로드된 파일이 라고
c:\temp\sqlmlutils-1.0.0.zip가정합니다.pip install --upgrade --upgrade-strategy only-if-needed c:\temp\sqlmlutils-1.0.0.zip
SQL Server에 Python 패키지 추가
sqlmlutils를 사용하면 Python 패키지를 SQL 인스턴스에 추가한 뒤, 그 인스턴스에서 실행되는 Python 코드에서 사용할 수 있습니다. SQLmlutils 는 패키지와 각 의존성을 설치하는 데 사용됩니다 CREATE EXTERNAL LIBRARY .
다음 예시는 SQL Server에 텍스트-도구 패키지를 추가합니다.
온라인으로 패키지 추가
SQL Server에 연결하는 클라이언트 컴퓨터가 인터넷 접속이 가능하다면, sqlmlutils를 사용해 text-tools 패키지와 온라인에서 의존성을 찾아 원격으로 SQL Server 인스턴스에 패키지를 설치할 수 있습니다.
클라이언트 컴퓨터에서 Python 또는 Python 환경을 엽니다.
다음 명령을 사용하여 text-tools 패키지를 설치합니다. 자신의 SQL Server 데이터베이스 연결 정보를 대체합니다(Windows Authentication을 사용하는 경우에는
uid및pwd매개 변수가 필요 없습니다).
클라이언트 컴퓨터에서 Python 또는 Python 환경을 엽니다.
다음 명령을 사용하여 text-tools 패키지를 설치합니다. 사용자 고유의 SQL Server 데이터베이스 연결 정보를 대체합니다. 또한 클라이언트 컴퓨터에 설치된 ODBC 드라이버 이름(예:
driver="ODBC Driver 18 for SQL Server")도 전달하는데, sqlmlutils가 기본적으로 사용하는 드라이버 이름은 Windows에만 적용됩니다.
import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="server", database="database", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text-tools")
오프라인으로 패키지 추가
SQL Server에 연결하는 클라이언트 컴퓨터에 인터넷 연결이 없다면, 인터넷 연결이 있는 컴퓨터에 pip을 사용해 패키지를 로컬 폴더로 다운로드하세요. 그 후 폴더를 클라이언트 컴퓨터에 복사하고 패키지를 오프라인으로 설치하면 됩니다.
참고
이 절차는 의존성이 없는 패키지에 적용됩니다.
SQLPackageManager.install() 로컬 .whl 파일을 전달해도 PyPI의 의존성을 해결하므로, 의존성이 있는 패키지를 추가하려면 인터넷 접속이 가능한 클라이언트 컴퓨터를 사용하고 '패키지 추가'를 따라 하세요.
인터넷이 가능한 컴퓨터에서
명령 프롬프트를 열고 다음 명령을 실행하여 텍스트 도구 패키지가 포함된 로컬 폴더를 만듭니다. 이 예제에서는
c:\temp\text-tools폴더를 만듭니다.pip download text-tools -d c:\temp\text-toolstext-tools폴더를 클라이언트 컴퓨터에 복사합니다. 다음 예제에서는c:\temp\packages\text-tools에 복사한 것으로 가정합니다.
클라이언트 컴퓨터에서
sqlmlutils를 사용해 pip가 다운로드한 패키지(.whl파일)를 로컬 폴더에 설치하세요.
이 예시에서 텍스트 도구는 의존성이 없으므로 폴더가 text-tools 단일 파일을 저장합니다.
다음 Python 스크립트를 실행합니다. 패키지의 실제 파일 경로와 이름을 대체하고, 자신의 SQL Server 데이터베이스 연결 정보를 대체합니다(Windows Authentication을 사용하는 경우에는 uid 및 pwd 매개 변수가 필요 없습니다).
다음 Python 스크립트를 실행합니다. 패키지의 실제 파일 경로와 이름, 사용자 고유의 SQL Server 데이터베이스 연결 정보로 대체합니다. 또한 클라이언트 컴퓨터에 설치된 ODBC 드라이버 이름(예: driver="ODBC Driver 18 for SQL Server")도 전달하는데, sqlmlutils가 기본적으로 사용하는 드라이버 이름은 Windows에만 적용됩니다.
import sqlmlutils
connection = sqlmlutils.ConnectionInfo(server="yourserver", database="yourdatabase", uid="username", pwd="password")
sqlmlutils.SQLPackageManager(connection).install("text_tools-1.0.0-py3-none-any.whl")
패키지 사용
이제 SQL Server의 Python 스크립트에서 패키지를 사용할 수 있습니다. 예시:
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
from text_tools.finders import find_best_string
corpus = "Lorem Ipsum text"
query = "Ipsum"
first_match = find_best_string(query, corpus)
print(first_match)
'
SQL Server에서 패키지 제거
text-tools 패키지를 제거하려면, 앞서 정의한 연결 변수를 사용해 클라이언트 컴퓨터에서 다음 Python 명령을 실행하세요.
sqlmlutils.SQLPackageManager(connection).uninstall("text-tools")
추가 sqlmlutils 함수
sqlmlutils 패키지는 Python 패키지 관리와 SQL Server에서 저장 프로시저 및 쿼리를 생성, 관리, 실행하는 여러 기능을 포함하고 있습니다. 자세한 내용은 sqlmlutils Python README 파일을 참조하세요.
sqlmlutils 함수에 대한 정보는 Python 도움말 함수를 사용합니다. 예시:
import sqlmlutils
help(sqlmlutils.SQLPackageManager.install)