다음을 통해 공유


SQL Server on Linux에 대한 대량 가져오기 작업 구성(미리 보기)

적용 대상: Linux의 SQL Server 2025(17.x)

중요합니다

이 기능은 현재 미리 보기로 제공됩니다.

SQL Server 2025(17.x) CU(누적 업데이트) 3부터 bulkadmin 서버 역할 또는 ADMINISTER BULK OPERATIONS 권한을 사용하여 Linux에서 실행되는 SQL Server에서 대량 데이터 가져오기 작업을 수행할 수 있습니다. 이전에는 sysadmin 서버 역할의 멤버만 Linux에서 BULK INSERT 또는 OPENROWSET(BULK...) 을 실행할 수 있습니다.

SQL Server on Linux는 Windows에 필요한 것 이상으로 대량 작업에 대한 추가 파일 시스템 및 경로 유효성 검사를 적용합니다. 관리자는 다음을 수행해야 합니다.

  • 사용자에게 적절한 SQL Server 권한 부여
  • 데이터 파일에 대한 Linux 파일 시스템 권한 부여
  • mssql-conf을 사용하여 디렉터리 경로를 명시적으로 승인하세요.

사전 요구 사항

  • Linux의 SQL Server 2025(17.x) CU 3 이상 버전
  • Linux 호스트에 대한 관리 액세스
  • SQL Server 인스턴스에 대한 관리 액세스

Linux 파일 시스템 구성

대량 가져오기 작업을 mssql 실행하려면 서비스 계정에 Linux 파일 시스템의 데이터 파일에 대한 읽기 권한이 있어야 합니다.

  1. 대량 데이터 파일에 대한 디렉터리를 만듭니다.

    mkdir -p /tmp/bulkload/sales/
    
  2. 샘플 데이터 파일을 만듭니다.

    cat > /tmp/bulkload/sales/loadsalesdata.csv << EOF
    Id,CustomerName,OrderDate,Amount
    1,John Doe,2026-02-01,500.75
    2,Jane Smith,2026-02-05,1500.20
    3,Mark Lee,2026-02-10,320.50
    4,Alice Johnson,2026-02-15,785.00
    5,Bob Brown,2026-02-20,930.40
    EOF
    
  3. 데이터 파일에 대한 SQL Server 프로세스 계정(mssql)에 읽기 권한을 부여합니다.

    setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
    

mssql-conf를 사용하여 허용된 경로 구성

관리자는 다음 설정을 사용하여 대량 작업을 읽을 수 있는 디렉터리를 bulkadmin.allowedpathslistmssql-conf승인해야 합니다. 이 변경 내용은 즉시 적용되며 SQL Server 서비스를 다시 시작할 필요가 없습니다.

sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"

여러 디렉터리를 지정하려면 각 경로를 콜론(:)으로 구분합니다.

sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"

또는 모든 하위 디렉터리를 허용하도록 부모 디렉터리를 지정할 수 있습니다.

경로 제한

대량 작업에 대해 구성된 경로에는 다음과 같은 제한 사항이 적용됩니다.

  • 경로는 절대 경로여야 합니다. . 또는 ..를 포함하는 상대 경로는 허용되지 않습니다.
  • 루트 경로(/)는 허용되지 않습니다.
  • 경로는 4,096자를 초과하지 않아야 합니다.
  • 경로에 잘못된 문자(null, 줄 바꿈, 캐리지 리턴 또는 탭)가 포함되어서는 안 됩니다.
  • 기호화된 링크는 허용되지 않습니다.
  • 경로는 디렉터리를 참조해야 합니다.

금지된 경로

시스템은 의도적으로 몇 가지 중요한 경로를 차단합니다. 이러한 위치를 허용된 경로 목록에 추가하더라도 대량 작업의 원본 데이터 파일 경로로 사용할 수 없습니다.

  • /var/opt/mssql (또는 SQL Server 설치 디렉터리)
  • /var/opt/azcmagent/certs
  • /var/opt/azcmagent/tokens

이러한 경로에서 원본 데이터를 읽는 대량 작업은 보안상의 이유로 실패합니다. 이 제한은 기본적으로 SQL Server 데이터 디렉터리를 사용하는 출력 경로에 적용되지 ERRORFILE 않습니다.

SQL Server 권한 설정

Linux 파일 시스템과 허용된 경로를 구성한 후 대량 가져오기를 수행하는 사용자에 대한 SQL Server 권한을 설정합니다.

  1. SQL Server 인스턴스에 연결하고 샘플 데이터베이스 및 테이블을 만듭니다.

    CREATE DATABASE demodbforbulkinsert;
    GO
    
    USE demodbforbulkinsert;
    GO
    
    CREATE TABLE dbo.Sales (
        Id INT NOT NULL PRIMARY KEY,
        CustomerName NVARCHAR(200) NOT NULL,
        OrderDate DATE NOT NULL,
        Amount DECIMAL(18, 2) NOT NULL
    );
    GO
    
  2. 대량 가져오기 사용자에 대한 로그인을 만듭니다.

    USE master;
    GO
    
    CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>';
    GO
    
  3. ADMINISTER BULK OPERATIONS 권한을 부여하거나 bulkadmin 서버 역할에 로그인을 추가합니다. 다음 옵션 중 하나를 사용합니다.

    -- Option 1: Add to the bulkadmin server role
    ALTER SERVER ROLE bulkadmin ADD MEMBER BulkLoadUser;
    GO
    
    -- Option 2: Grant the permission directly
    GRANT ADMINISTER BULK OPERATIONS TO BulkLoadUser;
    GO
    
  4. 데이터베이스 사용자를 만들고 필요한 테이블 권한을 부여합니다.

    USE demodbforbulkinsert;
    GO
    
    CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser;
    GO
    
    GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser;
    GO
    

대량 가져오기 실행

로그인에 해당되는 BulkLoadUser로 데이터베이스에 접속하여 대량 가져오기를 실행합니다.

USE demodbforbulkinsert;
GO

BULK INSERT dbo.Sales
FROM '/tmp/bulkload/sales/loadsalesdata.csv'
WITH (
    FIRSTROW = 2,
    FIELDTERMINATOR = ',',
    ERRORFILE = '/var/opt/mssql/data/bulk_errors'
);
GO

-- Verify the imported data
SELECT * FROM dbo.Sales;
GO

동일한 권한, Linux 파일 시스템 구성 및 경로 승인 단계가 INSERT ... SELECT * FROM OPENROWSET(BULK...) 명령문에 적용됩니다. 자세한 내용은 BULK INSERT 또는 OPENROWSET(BULK...)을 사용하여 대량 데이터 가져오기를 참조하세요.

업그레이드 및 다운그레이드 동작

SQL Server 2025(17.x) CU 3부터 Sql Server on Linux는 bulkadmin 역할 또는 ADMINISTER BULK OPERATIONS 권한을 사용하여 대량 작업을 지원합니다.

CU 3을 제거하거나 이전 누적 업데이트로 다운그레이드하는 경우:

  • 이전에 부여된 권한은 할당된 상태로 유지되지만 작동하지 않습니다.
  • 대량 작업에는 CU 3 이전 버전과 마찬가지로 sysadmin 권한이 필요합니다.