SQL Server on Linux: 알려진 문제

다음 섹션에서는 LINux의 SQL Server와 관련된 알려진 문제에 대해 설명합니다.

일반

다음 표에서는 SQL Server on Linux와 관련된 가장 일반적인 문제를 나열합니다.

문제 해결 방법
SQL Server가 설치된 호스트 이름의 길이는 15자 이하여야 합니다. 이름을 /etc/hostname 15자 이하의 값으로 변경합니다.
수동으로 시스템 시간을 역방향으로 설정하면 SQL Server가 데이터베이스 엔진 내에서 내부 시스템 시간 업데이트를 중지합니다. SQL Server를 다시 시작하십시오.
단일 인스턴스 설치만 지원됩니다. 지정된 호스트에 둘 이상의 인스턴스를 사용하려면 가상 머신 또는 Linux 컨테이너를 사용하는 것이 좋습니다.
SQL Server Configuration Manager는 SQL Server on Linux에 연결할 수 없습니다. 없음.
sa 로그인의 기본 언어는 영어입니다. 문을 사용하여 sa 로그인의 언어를 변경합니다ALTER LOGIN.
OLE DB 공급자는 다음 경고를 기록합니다.

Failed to verify the Authenticode signature of 'C:\binn\msoledbsql.dll'. Signature verification of SQL Server DLLs will be skipped. Genuine copies of SQL Server are signed. Failure to verify the Authenticode signature might indicate that this isn't an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support.
사용자가 조치할 필요는 없습니다. OLE DB 공급자는 SHA256을 사용하여 서명됩니다. SQL Server 데이터베이스 엔진 서명된 .dll의 유효성을 올바르게 검사하지 않습니다.
mssql-conf를 사용하여 암호 재설정 명령은 다음 오류를 throw합니다.

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
오류 메시지는 가음성입니다. 암호 재설정에 성공했으며 새 암호를 계속 사용할 수 있습니다.

적용 대상: SQL Server 2022(16.x) 컨테이너 이미지만 해당합니다.

데이터베이스

  • master 데이터베이스는 mssql-conf 유틸리티를 사용하여 이동할 수 없습니다. 다른 시스템 데이터베이스는 mssql-conf를 통해 이동할 수 있습니다.

  • Windows의 SQL Server에 백업된 데이터베이스를 복원하는 경우 Transact-SQL 문의 절을 사용해야 WITH MOVE 합니다. 자세한 내용은 백업 및 복원을 사용하여 WINDOWS에서 Linux로 SQL Server 데이터베이스 마이그레이션을 참조하세요.

  • TLS(전송 계층 보안)에 대한 특정 알고리즘(암호 도구 모음)은 Linux의 SQL Server에서 제대로 작동하지 않습니다. 이로 인해 SQL Server에 연결을 시도할 때 연결 오류가 발생하며 고가용성 그룹의 복제본 간에 연결을 설정하는 데 문제가 발생합니다.

    이 문제를 해결하려면 다음 단계에 따라 문제가 있는 암호 그룹을 사용하지 않도록 SQL Server on Linux의 구성 스크립트를 수정 mssql.conf 합니다.

    1. 에 다음 섹션을 추가합니다 /var/opt/mssql/mssql.conf. 느낌표 기호(!)는 식을 부정합니다. 그러면 OpenSSL에서 다음에 오는 암호 그룹을 사용하지 않도록 지시합니다.

      [network]
      tlsciphers=AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!ECDHE-RSA-AES128-GCM-SHA256:!ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES128-GCM-SHA256:!ECDHE-ECDSA-AES256-SHA384:!ECDHE-ECDSA-AES128-SHA256:!ECDHE-ECDSA-AES256-SHA:!ECDHE-ECDSA-AES128-SHA:!ECDHE-RSA-AES256-SHA384:!ECDHE-RSA-AES128-SHA256:!ECDHE-RSA-AES256-SHA:!ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-DSS-AES256-SHA256:!DHE-DSS-AES128-SHA256:!DHE-DSS-AES256-SHA:!DHE-DSS-AES128-SHA:!DHE-DSS-DES-CBC3-SHA:!NULL-SHA256:!NULL-SHA
      
    2. 다음 명령을 사용하여 SQL Server를 다시 시작합니다.

      sudo systemctl restart mssql-server
      
  • 메모리 내 OLTP를 사용하는 Windows의 SQL Server 2014(12.x) 데이터베이스는 Linux의 SQL Server로 복원할 수 없습니다. SQL Server 2014(12.x) 데이터베이스에서 메모리 내 OLTP를 사용하는 경우 먼저 데이터베이스를 Windows의 최신 버전의 SQL Server로 업그레이드합니다. 그런 다음 백업/복원을 사용하거나 분리/연결을 사용하여 Linux의 SQL Server로 이동할 수 있습니다.

  • 현재 Linux에서는 사용자 권한이 ADMINISTER BULK OPERATIONS 지원되지 않습니다.

  • SQL Server 2019(15.x) CU 16 이상을 사용하여 만든 TDE 압축 백업은 이전 CU 버전의 SQL Server 2019(15.x)로 복원할 수 없습니다. 자세한 내용은 FIX: RESTORE LOG 또는 RESTORE DATABASE를 실행하는 동안 오류 3241이 발생합니다를 참조하세요.

    이전 CU 버전의 SQL Server 2019(15.x)를 사용하여 만든 TDE(투명한 데이터 암호화) 압축 백업은 SQL Server 2019(15.x) CU 16 이상 버전을 사용하여 복원할 수 있습니다.

  • Ubuntu 22.04에 SQL Server 2022(16.x)를 설치하면 다음과 같은 오류 메시지가 Failed to start Microsoft SQL Server Database Engine표시될 수 있습니다. 오류 로그를 검토하면 시스템 데이터베이스에 대한 잘못된 경로가 표시됩니다.

    이 문제를 해결하려면 단일 사용자 모드에서 인스턴스를 시작하고 시스템 데이터베이스의 구성된 위치를 기본 위치/var/opt/mssql/data로 이동하는 데 사용합니다ALTER DATABASE ... MODIFY FILE. 이 변경 후 서비스를 다시 시작합니다.

네트워크

다음 조건이 둘 다 충족되는 경우 연결된 서버, PolyBase 또는 가용성 그룹과 같은 sqlservr 프로세스의 아웃바운드 TCP 연결에 관련된 기능이 작동하지 않을 수 있습니다.

  • 대상 서버는 IP 주소가 아닌 호스트 이름으로 지정됩니다.

  • 원본 인스턴스의 IPv6는 커널에서 사용하지 않도록 설정되어 있습니다. 커널에서 시스템의 IPv6이 사용하도록 설정되어 있는지 확인하려면 다음 테스트를 모두 통과해야 합니다.

    • cat /proc/cmdline 는 현재 커널의 부팅 cmdline을 인쇄합니다. 출력에는 ipv6.disable=1이 포함되지 않아야 합니다.
    • /proc/sys/net/ipv6/ 디렉터리가 있어야 합니다.
    • socket(AF_INET6, SOCK_STREAM, IPPROTO_IP)을 호출하는 C 프로그램이 성공해야 합니다. syscall은 fd != -1을 반환해야 하며 EAFNOSUPPORT로 실패하지 않아야 합니다.

정확한 오류는 기능에 따라 달라집니다. 연결된 서버의 경우 로그인 시간 제한 오류가 표시됩니다. 가용성 그룹의 ALTER AVAILABILITY GROUP JOIN 경우 오류가 발생한 후 5분 후에 보조 데이터베이스의 DDL이 download configuration timeout 실패합니다.

이 문제를 해결하려면 다음 옵션 중 하나를 수행합니다.

  • 호스트 이름 대신 IP를 사용하여 TCP 연결의 대상을 지정합니다.

  • 부팅 명령줄에서 ipv6.disable=1을 제거하여 커널에서 IPv6을 사용하도록 설정합니다. 이 메서드는 Linux 배포 및 grub과 같은 부팅 로더에 따라 달라집니다. IPv6을 사용하지 않도록 설정하려면 sysctl 구성(예: /etc/sysctl.conf)에서 net.ipv6.conf.all.disable_ipv6 = 1을 설정하여 사용하지 않도록 설정할 수도 있습니다. 이 설정을 사용하면 시스템의 네트워크 어댑터에서 IPv6 주소를 가져오지 못하지만 기능을 사용할 수 있습니다 sqlservr .

TLS 1.3은 지원되지 않음

적용 대상: SQL Server 2022(16.x)만 해당합니다.

TLS 1.3은 Windows용 SQL Server 2022(16.x)에서 지원되지만 Linux에서는 TLS 1.2를 사용해야 합니다.

NFS(네트워크 파일 시스템)

프로덕션에서 NFS(네트워크 파일 시스템) 원격 공유를 사용하는 경우 다음과 같은 지원 요구 사항을 확인합니다.

  • NFS 버전 4.2 이상 버전을 사용합니다. 이전 버전의 NFS는 최신 파일 시스템에서 일반적으로 필요한 기능(예: fallocate 및 스파스 파일 만들기)을 지원하지 않습니다.

  • NFS 탑재에 /var/opt/mssql 디렉터리만 배치합니다. SQL Server 시스템 이진 파일 등의 다른 파일은 지원되지 않습니다.

  • NFS 클라이언트가 원격 공유를 탑재할 때 nolock 옵션을 사용하는지 확인합니다.

지역화

  • 설치하는 동안 로캘이 영어(en_us)가 아닌 경우 bash 세션/터미널에서 UTF-8 인코딩을 사용해야 합니다. ASCII 인코딩을 사용하는 경우 다음 출력과 유사한 오류가 표시될 수 있습니다.

    UnicodeEncodeError: 'ascii' 코덱은 위치 8에서 문자 u'\xf1'을 인코딩할 수 없습니다. 범위가 아닌 서수(128)

    UTF-8 인코딩을 사용할 수 없는 경우 MSSQL_LCID 환경 변수를 사용하여 설치 프로그램을 실행하고 원하는 언어를 지정합니다.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • SQL Server를 실행하고 mssql-conf setup영어 이외의 설치를 수행하면 지역화된 텍스트인 "SQL Server 구성..."에 잘못된 확장 문자가 표시될 수 있습니다. 또는 라틴어 이외 설치의 경우 문장이 완전히 누락될 수 있습니다. 누락된 문장에는 다음 지역화된 문자열이 표시되어야 합니다.

    라이선싱 PID가 성공적으로 처리되었습니다. 새 버전은 [<Name> Edition]입니다.

    이 문자열은 정보용으로만 출력되며 SQL Server 설치 성공에 영향을 주지 않습니다.

이 릴리스에서는 Microsoft Office 문서용 필터를 비롯한 일부 필터를 사용할 수 없습니다. 지원되는 필터 목록은 Linux에서 SQL Server 전체 텍스트 검색 설치를 참조하세요.

SSIS(SQL Server Integration Services)

이 패키지는 mssql-server-is SLES(SUSE Linux Enterprise Server)에서 지원되지 않습니다. 패키지는 Ubuntu 및 RHEL(Red Hat Enterprise Linux)에서 지원됩니다.

Integration Services 패키지는 Linux에서 ODBC 연결을 사용할 수 있습니다. 이 기능은 SQL Server 및 MySQL ODBC 드라이버로 테스트되었지만 ODBC 사양을 준수하는 유니코드 ODBC 드라이버에서도 작동해야 합니다. 디자인 타임에 ODBC 데이터에 연결하기 위한 DSN 또는 연결 문자열을 제공할 수 있습니다. Windows 인증을 사용할 수도 있습니다. 자세한 내용은 Linux의 ODBC 지원을 알리는 블로그 게시물을 참조하세요.

Linux에서 SSIS 패키지를 실행할 경우 이번 릴리스에서는 다음 기능이 지원되지 않습니다.

  • Integration Services 카탈로그 데이터베이스
  • SQL Server 에이전트 예약된 패키지 실행
  • Windows 인증
  • 타사 구성 요소
  • CDC(변경 데이터 캡처)
  • Integration Services Scale Out
  • SSIS용 Azure 기능 팩
  • Hadoop 및 HDFS 지원
  • Microsoft Connector for SAP BW

현재 지원되지 않거나 제한적으로 지원되는 기본 제공 SSIS 구성 요소 목록은 Linux의 SSIS에 대한 제한 사항 및 알려진 문제를 참조하세요.

Linux SSIS에 대한 자세한 내용은 다음 문서를 참조하세요.

SSMS(SQL Server Management Studio)

다음 제한 사항은 SQL Server on Linux에 연결된 Windows의 SQL Server Management Studio에 적용됩니다.

  • 유지 관리 계획은 지원되지 않습니다.

  • MDW(관리 데이터 웨어하우스) 및 SQL Server Management Studio의 데이터 수집기는 지원되지 않습니다.

  • Windows 인증 또는 Windows 이벤트 로그 옵션을 포함하는 SQL Server Management Studio UI 구성 요소는 Linux에서 작동하지 않습니다. SQL Server 로그인과 같은 다른 옵션과 함께 이러한 기능을 계속 사용할 수 있습니다.

  • 보존할 로그 파일 수는 수정할 수 없습니다.

고가용성 및 재해 복구

적용 대상: SQL Server 2022(16.x)만 해당합니다.

RHEL 9 및 Ubuntu 22.04용 SQL Server 2022(16.x) 패키지의 경우 Pacemaker에서 HA/DR 스택을 사용하도록 설정하면 자동 및 수동 장애 조치(failover) 문제가 발생할 수 있습니다. 이러한 문제는 현재 Pacemaker HA 스택으로 제한됩니다. HPE Serviceguard 및 DH2i DxEnterprise를 포함한 다른 HA 스택에는 이러한 문제가 없습니다.

가용성 그룹은 주 역할을 지속적으로 전환합니다.

RHEL 8, Ubuntu 20.04 이상 버전의 SQL Server 2022(16.x)에서 AG(가용성 그룹)를 사용하는 경우 AG의 기본 역할이 한 노드에서 다른 노드로 계속 전환되는 상황이 발생할 수 있습니다. 현재 다음 단계를 사용하여 문제를 해결할 수 있습니다.

  1. 리소스 속성을 다음으로 ag_cluster 업데이트합니다0s.failure-timeout

    pcs resource update ag_cluster meta failure-timeout=0s
    

    자세한 내용은 SQL Server 가용성 그룹에 대한 Pacemaker 클러스터 구성을 참조 하세요.

  2. Pacemaker 클러스터의 실패 횟수를 다시 설정합니다.

    crm_failcount -r ag_resource_name -delete
    

Machine Learning Services

적용 대상: SQL Server 2022(16.x)만 해당합니다.

RHEL 9 및 Ubuntu 22.04용 SQL Server 2022(16.x) 패키지의 경우 Machine Learning Services를 설치하기 전에 고려해야 cgroup-v1할 몇 가지 필수 구성 요소가 있습니다.

  1. 필수 구성 요소로, cgroup-v1 cgroupfs를 사용하여 Red Hat에서 cgroups Red Hat Enterprise Linux 9를 수동으로 관리하는 경우와 같이 사용하도록 설정해야 합니다.

  2. 그런 다음 지침에 따라 설명된 대로 SQL Machine Learning Services를 설치합니다 .

  3. 네트워크 네임스페이스 격리를 사용하지 않도록 설정합니다.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. 이러한 변경 내용을 적용하려면 서비스를 다시 시작 mssql-launchpadd 합니다.

    sudo systemctl restart mssql-launchpadd