SQL Server와 Azure SQL Managed Instance 간의 T-SQL 차이점
적용 대상: Azure SQL Managed Instance
이 문서에서는 Azure SQL Managed Instance와 SQL Server 간의 구문과 동작의 차이점을 요약하고 설명합니다.
SQL Managed Instance는 SQL Server 데이터베이스 엔진과의 높은 호환성을 제공하며 대부분의 기능은 SQL Managed Instance에서 지원됩니다.
SQL Managed Instance에 도입된 일부 PaaS 제한 사항이 있으며 SQL Server에 비해 일부 동작이 변경되었습니다. 차이점은 다음 범주로 구분됩니다.
- 가용성에는 Always On 가용성 그룹 및 백업의 차이점이 포함됩니다.
- 감사, 인증서, 자격 증명, 암호화 공급자, 로그인 및 사용자, 서비스 키 및 서비스 마스터 키의 차이점을 비롯한 보안.
- 버퍼 풀 확장, 데이터 정렬, 호환성 수준, 데이터베이스 미러링, 데이터베이스 옵션, SQL Server 에이전트, 테이블 옵션의 차이점을 비롯한 구성.
- BULK INSERT/OPENROWSET, CLR, DBCC, 분산 트랜잭션, 확장 이벤트, 외부 라이브러리, FILESTREAM 및 FileTable, 전체 텍스트 의미 체계 검색, 연결된 서버, PolyBase, 복제, RESTORE, Service Broker, 저장 프로시저, 함수 및 트리거를 비롯한 기능.
- VNet 및 서브넷 구성과 같은 환경 설정.
이러한 기능 중 대부분은 아키텍처 제약 조건이며 서비스 기능을 나타냅니다.
SQL Managed Instance에서 검색되고 나중에 해결될 수 있는 알려진 일시적 문제는 새로운 기능에 설명되어 있습니다.
참고 항목
Microsoft Entra ID는 이전의 Azure AD(Azure Active Directory)입니다.
가용성
Always On 가용성 그룹
고가용성은 SQL Managed Instance에 기본적으로 제공되며 사용자가 제어할 수 없습니다. 다음 문은 지원되지 않습니다.
- CREATE ENDPOINT … FOR DATABASE_MIRRORING
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- DROP AVAILABILITY GROUP
- ALTER DATABASE 문의 SET HADR 절
Backup
Azure SQL Managed Instance에는 자동 백업이 있으므로 사용자는 전체 데이터베이스 COPY_ONLY
백업을 만들 수 있습니다. 차등, 로그 및 파일 스냅샷 백업은 지원되지 않습니다.
- SQL Managed Instance를 사용하는 경우 Azure Blob Storage 계정에만 인스턴스 데이터베이스를 백업할 수 있습니다.
BACKUP TO URL
만 지원됩니다.FILE
,TAPE
및 백업 디바이스는 지원되지 않습니다.
- 대부분의 일반
WITH
옵션이 지원됩니다.COPY_ONLY
는 필수입니다.FILE_SNAPSHOT
및CREDENTIAL
는 지원되지 않습니다.- 테이프 옵션:
REWIND
,NOREWIND
,UNLOAD
및NOUNLOAD
는 지원되지 않습니다. - 로그 관련 옵션:
NORECOVERY
,STANDBY
및NO_TRUNCATE
는 지원되지 않습니다.
제한 사항:
SQL Managed Instance를 사용하는 경우 최대 32개의 스트라이프가 있는 백업에 인스턴스 데이터베이스를 백업할 수 있습니다. 이 개수는 백업 압축을 사용할 경우 최대 4TB의 데이터베이스에 충분합니다.
서비스 관리 TDE(투명한 데이터 암호화)로 암호화된 데이터베이스에서는
BACKUP DATABASE ... WITH COPY_ONLY
를 실행할 수 없습니다. 서비스 관리 TDE는 내부 TDE 키를 사용하여 백업을 암호화합니다. 키를 내보낼 수 없어 백업을 복원할 수 없습니다. 자동 백업 및 특정 시점 복원을 사용하거나 고객 관리(BYOK) TDE를 대신 사용합니다. 데이터베이스에서 암호화를 사용하지 않도록 설정할 수 있습니다.SQL Managed Instance에서 가져온 기본 백업은 SQL Server 2022 인스턴스로만 복원 가능합니다. 이는 SQL Managed Instance가 SQL Server의 다른 버전과 비교하여 내부 데이터베이스 버전이 더 높기 때문입니다. 자세한 내용은 SQL Server 2022로 SQL Managed Instance 데이터베이스 백업 복원을 참조하세요.
Azure Storage에서 또는 Azure Storage로 데이터베이스를 백업하거나 복원하려면 Azure Storage 리소스에 대한 제한된 액세스 권한을 부여하는 URI인 SAS(공유 액세스 서명) 또는 관리 ID를 사용해 인증할 수 있습니다. 여기에서 자세히 알아보세요. 이러한 시나리오에서 Access 키 사용은 지원되지 않습니다.
SQL Managed Instance에서
BACKUP
명령을 사용한 최대 백업 스트라이프 크기는 최대 BLOB 크기인 195GB입니다. 개별 스트라이프 크기를 줄이고 이 제한 내로 유지하려면 백업 명령에서 스트라이프 수를 늘립니다.팁
이 제한을 해결하기 위해 온-프레미스 환경 또는 가상 머신의 SQL Server에서 데이터베이스를 백업하는 경우 다음 작업을 수행할 수 있습니다.
URL
을 백업하는 대신DISK
에 백업합니다.- BLOB Storage에 백업 파일을 업로드합니다.
- SQL Managed Instance로 복원합니다.
업로드된 백업 파일의 스토리지에 서로 다른 BLOB 유형이 사용되기 때문에 SQL Managed Instance의
Restore
명령은 백업 파일에서 더 큰 BLOB 크기를 지원합니다.
T-SQL을 사용하는 백업에 대한 자세한 내용은 BACKUP을 참조하세요.
보안
감사
Microsoft Azure SQL과 SQL Server 감사의 주요 차이점은 다음과 같습니다.
- SQL Managed Instance를 사용하면 감사는 서버 수준에서 작동합니다.
.xel
로그 파일은 Azure BLOB Storage에 저장됩니다. - Azure SQL Database를 사용하면 감사는 데이터베이스 수준에서 작동합니다.
.xel
로그 파일은 Azure BLOB Storage에 저장됩니다. - 온-프레미스 또는 가상 머신의 SQL Server를 사용하면 감사는 서버 수준에서 작동합니다. 이벤트는 파일 시스템 또는 Windows 이벤트 로그에 저장됩니다.
SQL Managed Instance의 XEvent 감사는 Azure Blob Storage 대상을 지원합니다. 파일 및 Windows 로그는 지원되지 않습니다.
Azure Blob Storage에 대한 감사에서 CREATE AUDIT
구문의 주요 차이점은 다음과 같습니다.
.xel
파일이 배치되는 Azure Blob Storage 컨테이너의 URL을 지정하기 위해 새TO URL
구문이 제공됩니다.- SQL Managed Instance에서 Windows 파일 공유에 액세스할 수 없으므로
TO FILE
구문은 지원되지 않습니다.
자세한 내용은 다음을 참조하세요.
인증서
SQL Managed Instance에서 파일 공유 및 Windows 폴더에 액세스할 수 없으므로 다음과 같은 제약 조건이 적용됩니다.
CREATE FROM
/BACKUP TO
파일은 인증서에서 지원되지 않습니다.FILE
/ASSEMBLY
의CREATE
/BACKUP
인증서는 지원되지 않습니다. 프라이빗 키 파일은 사용할 수 없습니다.
CREATE CERTIFICATE 및 BACKUP CERTIFICATE를 참조하세요.
해결 방법: 인증서의 백업을 만들고 백업을 복원하는 대신 인증서 이진 콘텐츠 및 프라이빗 키를 가져와서 .sql 파일로 저장하고 이진에서 만듭니다.
CREATE CERTIFICATE
FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>);
자격 증명
관리 ID, Azure Key Vault 및 SHARED ACCESS SIGNATURE
ID가 지원됩니다. Windows 사용자는 지원되지 않습니다.
CREATE CREDENTIAL 및 ALTER CREDENTIAL을 참조하세요.
암호화 공급자
SQL Managed Instance는 파일에 액세스할 수 없으므로 암호화 공급자를 만들 수 없습니다.
CREATE CRYPTOGRAPHIC PROVIDER
는 지원되지 않습니다. CREATE CRYPTOGRAPHIC PROVIDER를 참조하세요.ALTER CRYPTOGRAPHIC PROVIDER
는 지원되지 않습니다. ALTER CRYPTOGRAPHIC PROVIDER를 참조하세요.
로그인 및 사용자
FROM CERTIFICATE
,FROM ASYMMETRIC KEY
및FROM SID
를 사용하여 만든 SQL 로그인이 지원됩니다. CREATE LOGIN을 참조하세요. 서버 보안 주체(로그인)는 서버 수준에서 만들어지고 사용자(데이터베이스 보안 주체)는 데이터베이스 수준에서 만들어집니다. CREATE LOGIN 구문을 사용하여 만든 Microsoft Entra 로그인 및 CREATE USER FROM LOGIN 구문을 사용하여 만든 Microsoft Entra 사용자가 지원됩니다. 사용자를 만들고FROM LOGIN
을 지정할 때 해당 사용자는 로그인에 연결되고 할당된 서버 역할 및 권한을 상속합니다.SQL Managed Instance는
CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER
구문을 사용하여 Microsoft Entra ID를 기반으로 포함된 데이터베이스 사용자 만들기를 지원합니다 . 이러한 방식으로 만든 사용자는master
데이터베이스에 이름이 같은 서버 보안 주체가 있더라도 서버 보안 주체에 연결되지 않습니다.CREATE LOGIN ... FROM WINDOWS
구문으로 만든 Windows 로그인은 지원되지 않습니다. Microsoft Entra 로그인 및 사용자를 사용합니다.인스턴스에 대한 Microsoft Entra 관리자에게는 무제한 관리자 권한이 있습니다.
일부 기능은 인스턴스 간 상호 작용에서 Microsoft Entra 로그인 사용을 지원하지 않으며, SQL Server 복제와 같은 단일 SQL Managed Instance 내에서만 지원합니다. 그러나 연결된 서버 기능은 Microsoft Entra 서버 보안 주체(로그인)를 사용하여 인스턴스 간 인증을 지원합니다.
Microsoft Entra 그룹에 매핑된 Microsoft Entra 로그인을 데이터베이스 소유자로 설정하는 기능은 지원되지 않습니다. 데이터베이스에서 로그인을 만들지 않아도 Microsoft Entra 그룹의 구성원이 데이터베이스 소유자일 수 있습니다.
EXECUTE AS 절과 같이, 다른 Microsoft Entra 보안 주체를 사용하여 Microsoft Entra 서버 수준 보안 주체를 가장하는 기능이 지원됩니다. EXECUTE AS 제한 사항은 다음과 같습니다.
이름이 로그인 이름과 다른 경우 EXECUTE AS USER는 Microsoft Entra 사용자에 대해 지원되지 않습니다. 구문
CREATE USER [myAadUser] FROM LOGIN [john@contoso.com]
을 통해 사용자를 만든 경우 가장은EXEC AS USER = myAadUser
를 통해 시도되는 경우를 예로 들 수 있습니다. Microsoft Entra 로그인에서 USER를 만들 때 user_name을 LOGIN과 동일한 login_name으로 지정합니다.sysadmin
역할의 일부인 SQL Server 수준 로그인만 Microsoft Entra 보안 주체를 대상으로 다음 작업을 실행할 수 있습니다.- EXECUTE AS USER
- EXECUTE AS LOGIN
EXECUTE AS 문으로 사용자를 가장하려면 사용자를 Microsoft Entra 로그인에 직접 매핑해야 합니다. 호출자에게 지정된 사용자 이름에 대한 가장 권한이 있더라도 Microsoft Entra 서버 보안 주체에 매핑된 Microsoft Entra 그룹의 구성원인 사용자는 EXECUTE AS 문을 사용할 경우 효과적으로 가장할 수 없습니다.
bacpac 파일을 사용하는 데이터베이스 내보내기 또는 가져오기는 SSMS V18.4 이상 또는 SqlPackage를 사용하여 SQL Managed Instance의 Microsoft Entra 사용자에 대해 지원됩니다.
- 데이터베이스 bacpac 파일을 사용하여 다음 구성이 지원됩니다.
- 동일한 Microsoft Entra 도메인 내 서로 다른 관리형 인스턴스 사이에서 데이터베이스 내보내기 또는 가져오기.
- SQL Managed Instance에서 데이터베이스 내보내기 및 동일한 Microsoft Entra 도메인 내 SQL 데이터베이스로 가져오기.
- SQL 데이터베이스에서 데이터베이스 내보내기 및 동일한 Microsoft Entra 도메인 내 SQL Managed Instance로 가져오기.
- SQL Managed Instance에서 데이터베이스 내보내기 및 SQL Server(버전 2012 이상)로 가져오기
- 이 구성에서는 모든 Microsoft Entra 사용자가 로그인 없이 SQL Server 데이터베이스 보안 주체(사용자)로 만들어집니다. 사용자 유형은
SQL
이며,sys.database_principals
에서SQL_USER
로 표시됩니다. 해당 사용 권한과 역할은 SQL Server 데이터베이스 메타데이터에 남아 있으며 가장에 사용할 수 있습니다. 그러나 해당 자격 증명을 사용하여 SQL Server에 액세스하고 로그인하는 데는 사용할 수 없습니다.
- 이 구성에서는 모든 Microsoft Entra 사용자가 로그인 없이 SQL Server 데이터베이스 보안 주체(사용자)로 만들어집니다. 사용자 유형은
- 데이터베이스 bacpac 파일을 사용하여 다음 구성이 지원됩니다.
서버 수준 보안 주체 로그인(SQL Managed Instance 프로비전 프로세스를 통해 생성됨), 서버 역할의 구성원(예:
securityadmin
또는sysadmin
) 또는 서버 수준에서 ALTER ANY LOGIN 권한이 있는 기타 로그인만master
데이터베이스에서 SQL Managed Instance에 대한 Microsoft Entra 서버 보안 주체(로그인)를 만들 수 있습니다.Microsoft Entra ID에 대한 로그인을 만들려면 SQL 인증 기반 로그인을
sysadmin
역할에 할당해야 합니다.로그인은 Azure SQL Managed Instance가 호스트되는 것과 동일한 Microsoft Entra 테넌트의 구성원이어야 합니다.
Microsoft Entra 서버 보안 주체(로그인)는 SQL Server Management Studio 18.0 미리 보기 5부터 개체 탐색기에 표시됩니다.
인스턴스에서 사용하도록 설정되면 sysadmin 액세스 수준의 서버 보안 주체가 Microsoft Entra 관리자 계정에 대해 자동으로 만들어집니다.
인증 중에 인증 보안 주체를 확인하기 위해 적용되는 시퀀스는 다음과 같습니다.
- Microsoft Entra 계정이 Microsoft Entra 로그인에 직접 매핑된 경우(
sys.server_principals
에 "E" 형식으로 표시됨) 액세스 권한을 부여하고 해당 로그인의 권한을 적용합니다. - Microsoft Entra 계정이 Microsoft Entra 로그인에 매핑된 그룹의 구성원인 경우(
sys.server_principals
에 "X" 형식으로 표시됨) 액세스 권한을 부여하고 해당 로그인의 권한을 적용합니다. - Microsoft Entra 계정이 데이터베이스의 Microsoft Entra 사용자에 직접 매핑된 경우(
sys.database_principals
에 "E" 형식으로 표시됨) 액세스 권한을 부여하고 Microsoft Entra 데이터베이스 사용자의 권한을 적용합니다. - Microsoft Entra 계정이 데이터베이스의 Microsoft Entra 사용자에 매핑된 Microsoft Entra 그룹의 구성원인 경우(
sys.database_principals
에 "X" 형식으로 표시됨) 액세스 권한을 부여하고 Microsoft Entra 그룹 사용자의 권한을 적용합니다.
- Microsoft Entra 계정이 Microsoft Entra 로그인에 직접 매핑된 경우(
서비스 키 및 서비스 마스터 키
- 마스터 키 백업(SQL Database 서비스에서 관리)은 지원되지 않습니다.
- 마스터 키 복원(SQL Database 서비스에서 관리)은 지원되지 않습니다.
- 서비스 마스터 키 백업(SQL Database 서비스에서 관리)은 지원되지 않습니다.
- 서비스 마스터 키 복원(SQL Database 서비스에서 관리)은 지원되지 않습니다.
구성
버퍼 풀 확장
- 버퍼 풀 확장은 지원되지 않습니다.
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION
는 지원되지 않습니다. ALTER SERVER CONFIGURATION을 참조하세요.
데이터 정렬
기본 인스턴스 데이터 정렬은 SQL_Latin1_General_CP1_CI_AS
이며 생성 매개 변수로 지정할 수 있습니다. 데이터 정렬을 참조하세요.
호환성 수준
- 지원되는 호환성 수준은 100, 110, 120, 130, 140, 150, 160입니다.
- 100 미만의 호환성 수준은 지원되지 않습니다.
- 새 데이터베이스의 기본 호환성 수준은 150입니다. 복원된 데이터베이스의 경우 호환성 수준이 100 이상이면 변경되지 않고 그대로 유지됩니다.
ALTER DATABASE 호환성 수준을 참조하세요.
데이터베이스 미러링
데이터베이스 미러링은 지원되지 않습니다.
ALTER DATABASE SET PARTNER
및SET WITNESS
옵션은 지원되지 않습니다.CREATE ENDPOINT … FOR DATABASE_MIRRORING
는 지원되지 않습니다.
자세한 내용은 ALTER DATABASE SET PARTNER 및 SET WITNESS 및 CREATE ENDPOINT … FOR DATABASE_MIRRORING을 참조하세요.
데이터베이스 옵션
- 다중 로그 파일은 지원되지 않습니다.
- 메모리 내 개체는 범용 서비스 계층에서 지원되지 않습니다.
- 범용 인스턴스당 280개의 파일 제한이 있으며 이는 데이터베이스당 최대 280개의 파일을 의미합니다. 범용 계층의 데이터와 로그 파일은 모두 이 제한으로 계산됩니다. 중요 비즈니스용 계층은 데이터베이스당 32767개의 파일을 지원합니다.
- 데이터베이스는 FILESTREAM 데이터가 있는 파일 그룹을 포함할 수 없습니다.
.bak
에FILESTREAM
데이터가 포함된 경우 복원이 실패합니다. - 모든 파일은 Azure Blob Storage에 배치됩니다. 파일별 IO 및 처리량은 각 개별 파일의 크기에 따라 달라집니다.
CREATE DATABASE 문
다음 제한 사항이 CREATE DATABASE
에 적용됩니다.
파일 및 파일 그룹을 정의할 수 없습니다.
메모리 최적화 파일 그룹 및 파일이 자동으로 추가되고 XTP라고 합니다.
CONTAINMENT
옵션은 지원되지 않습니다.WITH
옵션은 지원되지 않습니다.팁
해결 방법으로,
CREATE DATABASE
뒤에ALTER DATABASE
를 사용하여 파일을 추가하거나 포함을 설정하는 데이터베이스 옵션을 설정합니다.FOR ATTACH
옵션은 지원되지 않습니다.AS SNAPSHOT OF
옵션은 지원되지 않습니다.
자세한 내용은 CREATE DATABASE를 참조하세요.
ALTER DATABASE 문
일부 파일 속성은 설정하거나 변경할 수 없습니다.
ALTER DATABASE ADD FILE (FILENAME='path')
T-SQL 문에서 파일 경로를 지정할 수 없습니다. SQL Managed Instance에서 파일을 자동으로 저장하기 때문에 스크립트에서FILENAME
을 제거합니다.ALTER DATABASE
문을 사용하여 파일 이름을 변경할 수 없습니다.- XTP 파일 또는 파일 그룹을 변경할 수 없습니다.
기본적으로 설정되고 변경할 수 없는 옵션은 다음과 같습니다.
MULTI_USER
ENABLE_BROKER
AUTO_CLOSE OFF
수정할 수 없는 옵션은 다음과 같습니다.
AUTO_CLOSE
AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
DISABLE_BROKER
EMERGENCY
ENABLE_BROKER
FILESTREAM
HADR
NEW_BROKER
OFFLINE
PAGE_VERIFY
PARTNER
READ_ONLY
RECOVERY BULK_LOGGED
RECOVERY_SIMPLE
REMOTE_DATA_ARCHIVE
RESTRICTED_USER
SINGLE_USER
WITNESS
일부 ALTER DATABASE
문(예: SET CONTAINMENT)은 예를 들어 자동화된 데이터베이스 백업 중에 또는 데이터베이스가 생성된 직후에 일시적으로 실패할 수 있습니다. 이 경우 ALTER DATABASE
문을 다시 시도해야 합니다. 관련 오류 메시지에 대한 자세한 내용은 설명 섹션을 참조하세요.
자세한 내용은 ALTER DATABASE를 참조하세요.
SQL Server 에이전트
- SQL Server 에이전트를 사용하거나 사용하지 않도록 설정하는 기능은 현재 SQL Managed Instance에서 지원되지 않습니다. SQL 에이전트는 항상 실행됩니다.
- 유휴 상태의 CPU를 기반으로 하는 작업 일정 트리거는 지원되지 않습니다.
- SQL Server 에이전트 설정은 읽기 전용입니다.
sp_set_agent_properties
프로시저는 SQL Managed Instance에서 지원되지 않습니다. - 작업
- T-SQL 작업 단계가 지원됩니다.
- 다음 복제 작업이 지원됩니다.
- 트랜잭션 로그 판독기
- 스냅샷
- 배포자
- SSIS 작업 단계가 지원됩니다.
- 다른 유형의 작업 단계는 현재 지원되지 않습니다.
- 병합 복제 작업 단계는 지원되지 않습니다.
- 큐 판독기는 지원되지 않습니다.
- 명령 셸은 아직 지원되지 않습니다.
- SQL Managed Instance는 외부 리소스(예: robocopy를 통한 네트워크 공유)에 액세스할 수 없습니다.
- SQL Server Analysis Services는 지원되지 않습니다.
- 알림은 부분적으로 지원됩니다.
- 데이터베이스 메일 프로필을 구성해야 하지만 이메일 알림이 지원됩니다. SQL Server 에이전트는 데이터베이스 메일 프로필을 하나만 사용할 수 있으며
AzureManagedInstance_dbmail_profile
이라고 해야 합니다.- 호출기는 지원되지 않습니다.
- NetSend는 지원되지 않습니다.
- 경고는 아직 지원되지 않습니다.
- 프록시는 지원되지 않습니다.
- EventLog는 지원되지 않습니다.
- SQL 에이전트 작업을 생성, 수정 또는 실행하려면 사용자가 Microsoft Entra 서버 로그인에 직접 매핑되어야 합니다. 직접 매핑되지 않은 사용자(예: SQL 에이전트 작업을 생성, 수정 또는 실행할 권한이 있는 Microsoft Entra 그룹에 속한 사용자)는 이러한 작업을 효과적으로 수행할 수 없습니다. 이는 SQL Managed Instance 가장 및 EXECUTE AS 제한으로 인한 것입니다.
- 마스터 또는 대상(MSX/TSX) 작업에 대한 다중 서버 관리 기능은 지원되지 않습니다.
SQL Server 에이전트에 대한 자세한 내용은 SQL Server 에이전트를 참조하세요.
테이블
다음 테이블 형식은 지원되지 않습니다.
- FILESTREAM
- FILETABLE
- EXTERNAL TABLE(Polybase 제외)
- MEMORY_OPTIMIZED(범용 계층에서만 지원되지 않음)
테이블을 만들고 변경하는 방법에 대한 자세한 내용은 CREATE TABLE 및 ALTER TABLE을 참조하세요.
기능
BULK INSERT/OPENROWSET
SQL Managed Instance에서 파일 공유 및 Windows 폴더에 액세스할 수 없으므로 Azure Blob Storage에서 파일을 가져와야 합니다.
DATASOURCE
는 Azure BLOB Storage에서 파일을 가져오는 동안BULK INSERT
명령에 필요합니다. BULK INSERT를 참조하세요.- Azure Blob Storage에서 파일의 내용을 읽을 때
OPENROWSET
함수에DATASOURCE
가 필요합니다. OPENROWSET를 참조하세요. OPENROWSET
을 사용하여 Azure SQL Database, Azure SQL Managed Instance 또는 SQL Server 인스턴스에서 데이터를 읽을 수 있습니다. Oracle Database 또는 Excel 파일 등의 다른 원본은 지원되지 않습니다.
CLR
SQL Managed Instance에서 파일 공유 및 Windows 폴더에 액세스할 수 없으므로 다음과 같은 제약 조건이 적용됩니다.
CREATE ASSEMBLY FROM BINARY
만 지원됩니다. CREATE ASSEMBLY FROM BINARY를 참조하세요.CREATE ASSEMBLY FROM FILE
는 지원되지 않습니다. CREATE ASSEMBLY FROM FILE을 참조하세요.ALTER ASSEMBLY
는 파일을 참조할 수 없습니다. ALTER ASSEMBLY를 참조하세요.
데이터베이스 메일(db_mail)
sp_send_dbmail
에서는 @file_attachments 매개 변수를 사용하여 첨부 파일을 보낼 수 없습니다. 이 프로시저에서는 로컬 파일 시스템 및 외부 공유 또는 Azure Blob Storage에 액세스할 수 없습니다.@query
매개 변수 및 인증과 관련된 알려진 문제를 참조하세요.
DBCC
SQL Server에서 사용하도록 설정되었지만 문서화되지 않은 DBCC 문은 SQL Managed Instance에서 지원되지 않습니다.
- 제한된 수의 전역 추적 플래그만 지원됩니다. 세션 수준
Trace flags
는 지원되지 않습니다. 추적 플래그를 참조하세요. - DBCC TRACEOFF 및 DBCC TRACEON은 제한된 수의 전역 추적 플래그와 함께 사용합니다.
- 데이터베이스를
SINGLE_USER
모드로 설정할 수 없으므로 REPAIR_ALLOW_DATA_LOSS, REPAIR_FAST 및 REPAIR_REBUILD 옵션과 함께 DBCC CHECKDB를 사용할 수 없습니다. ALTER DATABASE 차이점을 참조하세요. 잠재적 데이터베이스 손상은 Azure 지원 팀에서 처리합니다. 데이터베이스가 손상된 경우 Azure 지원에 문의하세요.
분산 트랜잭션
관리되는 인스턴스에서 T-SQL 및 .NET 기반 분산 트랜잭션을 일반적으로 사용할 수 있습니다. XA 트랜잭션, 관리형 인스턴스 및 다른 참가자 간 분산 트랜잭션 등과 같은 추가 시나리오는 Azure SQL Managed Instance DTC(공개 미리 보기로 사용 가능)에서 지원됩니다.
확장 이벤트
확장 이벤트(Xevent)에 대한 일부 Windows 관련 대상은 지원되지 않습니다.
etw_classic_sync
대상은 지원되지 않습니다. Azure Blob Storage에.xel
파일을 저장합니다. etw_classic_sync 대상을 참조하세요.event_file
대상은 지원되지 않습니다. Azure Blob Storage에.xel
파일을 저장합니다. event_file 대상을 참조하세요.
외부 라이브러리
데이터베이스 내 R 및 Python 외부 라이브러리는 제한된 공개 미리 보기로 지원됩니다. Azure SQL Managed Instance의 Machine Learning Services(미리 보기)를 참조하세요.
Filestream 및 FileTable
- FILESTREAM 데이터는 지원되지 않습니다.
FILESTREAM
데이터가 있는 파일 그룹을 데이터베이스에 포함할 수 없습니다.FILETABLE
는 지원되지 않습니다.- 테이블에
FILESTREAM
형식을 사용할 수 없습니다. - 다음은 지원되지 않는 함수입니다.
GetPathLocator()
GET_FILESTREAM_TRANSACTION_CONTEXT()
PathName()
GetFileNamespacePat)
FileTableRootPath()
자세한 내용은 FILESTREAM 및 FileTables를 참조하세요.
전체 텍스트 의미 체계 검색
의미 체계 검색은 지원되지 않습니다.
연결된 서버
SQL Managed Instance의 연결된 서버는 제한된 수의 대상을 지원합니다.
- 지원되는 대상은 SQL Managed Instance, SQL Database, Azure Synapse SQL 서버리스, 전용 풀 및 SQL Server Instances입니다.
- 지원되지 않는 대상은 파일, Analysis Services 및 기타 RDBMS입니다. 파일 가져오기의 대안으로,
BULK INSERT
또는OPENROWSET
을 사용하여 Azure Blob Storage에서 네이티브 CSV 가져오기를 사용하거나 Azure Synapse Analytics의 서버리스 SQL 풀을 사용하여 파일을 로드해 보세요.
작업:
sp_dropserver
는 연결된 서버를 삭제하는 데 지원됩니다. sp_dropserver를 참조하세요.OPENROWSET
함수는 SQL Server 인스턴스에서만 쿼리를 실행하는 데 사용할 수 있습니다. 관리되는 컴퓨터, 온-프레미스 컴퓨터 또는 가상 머신 중 하나일 수 있습니다. OPENROWSET를 참조하세요.- OPENDATASOURCE 함수는 SQL Server 인스턴스에서만 쿼리를 실행하는 데 사용할 수 있습니다. 관리되는 컴퓨터, 온-프레미스 컴퓨터 또는 가상 머신 중 하나일 수 있습니다. 예제는
SELECT * FROM OPENDATASOURCE('SQLNCLI', '...').AdventureWorks2022.HumanResources.Employee
입니다.SQLNCLI
,SQLNCLI11
,SQLOLEDB
,MSOLEDBSQL
값만 공급자로 지원됩니다. SQL Server Native Client(약칭 SNAC)는 SQL Server 2022 및 SSMS(SQL Server Management Studio) 19에서 제거되었습니다. SQL Server Native Client(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 새로운 개발에 권장되지 않습니다. 앞으로 새 SQL Server용 Microsoft OLE DB 드라이버(MSOLEDBSQL) 또는 최신 Microsoft ODBC Driver for SQL Server로 전환합니다. - 연결된 서버를 네트워크 공유에서 파일(Excel, CSV)을 읽는 데 사용할 수 없습니다. Azure Blob Storage에서 CSV 파일을 읽는 BULK INSERT, OPENROWSET을 사용하거나 Synapse Analytics에서 서버리스 SQL 풀을 참조하는 연결된 서버를 사용해 보세요. SQL Managed Instance 피드백 항목에서 이 요청 추적
Azure SQL Managed Instance의 연결된 서버는 SQL 인증과 Microsoft Entra 인증을 지원합니다.
PolyBase
Azure SQL Managed Instance를 사용한 데이터 가상화를 허용하면 Azure Data Lake Storage Gen2 또는 Azure Blob Storage에 저장된 파일의 데이터에 대해 T-SQL(Transact-SQL) 쿼리를 실행하고 조인을 사용하여 로컬에 저장된 관계형 데이터와 결합할 수 있습니다. Parquet 및 구분된 텍스트(CSV) 파일 형식이 직접 지원됩니다. JSON 파일 형식은 쿼리가 모든 문서를 별도의 행으로 반환하는 CSV 파일 형식을 지정하여 간접적으로 지원됩니다. JSON_VALUE
및 OPENJSON
을 사용하여 행을 추가로 구문 분석할 수 있습니다. PolyBase에 대한 일반 정보는 PolyBase를 참조하세요.
또한 CETAS(CREATE EXTERNAL TABLE AS SELECT)를 사용하면 SQL Managed Instance의 데이터를 외부 스토리지 계정으로 내보낼 수 있습니다. CETAS를 사용하여 Parquet이나 CSV 파일 Azure Blob Storage 또는 Azure Data Lake Storage(ADLS) Gen2에서 외부 테이블을 생성할 수 있습니다. CETAS는 생성한 외부 테이블에 Transact-SQL SELECT 문의 결과를 병렬로 내보낼 수도 있습니다.
복제
- 스냅숏과 양방향 복제 형식이 지원됩니다. 병합 복제, 피어 투 피어 복제 및 업데이트할 수 있는 구독은 지원되지 않습니다.
- 트랜잭션 복제는 일부 제약 조건과 함께 SQL Managed Instance에서 사용 가능합니다.
- 모든 유형의 복제 참가자(게시자, 배포자, 끌어오기 구독자 및 밀어넣기 구독자)가 SQL Managed Instance에 배치될 수 있지만 게시자와 배포자는 클라우드 또는 온-프레미스에 모두 있어야 합니다.
- SQL Managed Instance는 최신 버전의 SQL Server와 통신할 수 있습니다. 자세한 내용은 지원되는 버전 매트릭스를 참조하세요.
- 트랜잭션 복제에는 추가 네트워킹 요구 사항이 있습니다.
트랜잭션 복제를 구성하는 방법에 대한 자세한 내용은 다음 자습서를 참조하세요.
RESTORE 문
- 지원되는 구문:
RESTORE DATABASE
RESTORE FILELISTONLY
RESTORE HEADERONLY
RESTORE LABELONLY
RESTORE VERIFYONLY
- 지원되지 않는 구문:
RESTORE LOGONLY
RESTORE REWINDONLY
- 원본:
FROM URL
(Azure Blob Storage)만 지원되는 옵션입니다.FROM DISK
/TAPE
/백업 디바이스는 지원되지 않습니다.- 백업 세트는 지원되지 않습니다.
WITH
옵션은 지원되지 않습니다.DIFFERENTIAL
,STATS
,REPLACE
등과 같은WITH
를 포함한 복원 시도는 실패합니다.
데이터베이스 복원 작업은 비동기적이며 Azure SQL Managed Instance에서 다시 시도할 수 있습니다. 연결이 실패하거나 시간 제한이 만료되면 SSMS에서 오류가 발생할 수 있습니다. Azure SQL Managed Instance는 백그라운드에서 데이터베이스 복원을 계속 시도하며, sys.dm_exec_requests 및 sys.dm_operation_status 동적 관리 뷰를 사용하여 복원 프로세스의 진행률을 추적할 수 있습니다.
다음은 설정 또는 재정의되고 나중에 변경할 수 없는 데이터베이스 옵션입니다.
NEW_BROKER
(.bak 파일에서 브로커를 사용하도록 설정하지 않은 경우)ENABLE_BROKER
(.bak 파일에서 브로커를 사용하도록 설정하지 않은 경우)AUTO_CLOSE=OFF
(.bak 파일의 데이터베이스에AUTO_CLOSE=ON
이 있는 경우)RECOVERY FULL
(.bak 파일의 데이터베이스에SIMPLE
또는BULK_LOGGED
복구 모델이 있는 경우).- 원본 .bak 파일에 없는 경우 메모리 최적화 파일 그룹이 추가되고 XTP라고 합니다.
- 모든 기존 메모리에 최적화된 파일 그룹은 XTP로 이름이 변경됩니다.
SINGLE_USER
및RESTRICTED_USER
옵션이MULTI_USER
로 변환됩니다.
제한 사항:
- 손상된 데이터베이스의 백업은 손상 유형에 따라 복원될 수 있지만 손상이 수정될 때까지 자동화된 백업은 수행되지 않습니다. 원본 SQL Managed Instance에서
DBCC CHECKDB
를 실행하고 이 문제를 방지하려면WITH CHECKSUM
백업을 사용해야 합니다. - 이 문서에서 설명하는 제한(예:
FILESTREAM
또는FILETABLE
개체)을 포함하는 데이터베이스의.BAK
파일 복원은 SQL Managed Instance에서 복원할 수 없습니다. - 여러 백업 세트가 포함된
.BAK
파일은 복원할 수 없습니다. - 여러 로그 파일이 포함된
.BAK
파일은 복원할 수 없습니다. - 8TB보다 큰 데이터베이스, 활성 메모리 내 OLTP 개체 또는 인스턴스당 280개의 파일을 초과하는 파일 수를 포함하는 백업은 범용 인스턴스에서 복원할 수 없습니다.
- 4TB보다 큰 데이터베이스 또는 리소스 제한에 설명된 크기보다 전체 크기가 더 큰 메모리 내 OLTP 개체가 포함된 백업은 중요 비즈니스용 인스턴스에서 복원할 수 없습니다. 복원 명령문에 대한 자세한 내용은 RESTORE 문을 참조하세요.
중요
기본 제공 지정 시점 복원 작업에도 동일한 제한이 적용됩니다. 예를 들어 4TB보다 큰 범용 데이터베이스는 중요 비즈니스용 인스턴스에서 복원할 수 없습니다. 메모리 내 OLTP 파일 또는 280개보다 많은 파일을 포함하는 중요 비즈니스용 데이터베이스는 범용 인스턴스에서 복원할 수 없습니다.
Service Broker
인스턴스 간 Service Broker 메시지 교환은 Azure SQL Managed Instance 사이에만 지원됩니다.
CREATE ROUTE
: 다른 SQL Managed Instance의LOCAL
또는 DNS 이름 이외의ADDRESS
가 포함된CREATE ROUTE
는 사용할 수 없습니다. 포트는 항상 4022입니다.ALTER ROUTE
: 다른 SQL Managed Instance의LOCAL
또는 DNS 이름 이외의ADDRESS
가 포함된ALTER ROUTE
는 사용할 수 없습니다. 포트는 항상 4022입니다.
전송 보안이 지원되며, 대화 보안은 지원되지 않습니다.
CREATE REMOTE SERVICE BINDING
은 지원되지 않습니다.
Service Broker는 기본값으로 사용하도록 설정되어 있으며, 사용하지 않도록 설정할 수 없습니다. 다음 ALTER DATABASE 옵션은 지원되지 않습니다.
ENABLE_BROKER
DISABLE_BROKER
저장 프로시저, 함수, 트리거
NATIVE_COMPILATION
은 범용 계층에서 지원되지 않습니다.- 다음 sp_configure 옵션은 지원되지 않습니다.
allow polybase export
allow updates
filestream_access_level
remote access
remote data archive
remote proc trans
scan for startup procs
- 다음 sp_configure 옵션은 무시되고 영향을 주지 않습니다.
Ole Automation Procedures
sp_execute_external_scripts
는 SQL MI에 대한 Machine Learning Services에서만 지원됩니다. 그렇지 않으면sp_execute_external_scripts
는 SQL Managed Instance에 대해 지원되지 않습니다. sp_execute_external_scripts를 참조하세요.xp_cmdshell
는 지원되지 않습니다. xp_cmdshell을 참조하세요.Extended stored procedures
는 지원되지 않으며 여기에는sp_addextendedproc
및sp_dropextendedproc
이 포함됩니다. 이 기능은 SQL Server의 사용 중단 경로에 있기 때문에 지원되지 않습니다. 자세한 내용은 확장 저장 프로시저를 참조하세요.sp_attach_db
,sp_attach_single_file_db
및sp_detach_db
는 지원되지 않습니다. sp_attach_db, sp_attach_single_file_db 및 sp_detach_db를 참조하세요.
시스템 함수 및 변수
다른 결과를 반환하는 변수, 함수 및 뷰는 다음과 같습니다.
SERVERPROPERTY('EngineEdition')
에서 값 8을 반환합니다. 이 속성은 SQL Managed Instance를 고유하게 식별합니다. SERVERPROPERTY를 참조하세요.- SQL Server에 대한 인스턴스 개념은 SQL Managed Instance에 적용되지 않으므로
SERVERPROPERTY('InstanceName')
에서 NULL을 반환합니다. SERVERPROPERTY('InstanceName')를 참조하세요. @@SERVERNAME
은 전체 DNS “연결 가능” 이름을 반환합니다(예:my-managed-instance.wcus17662feb9ce98.database.windows.net
). @@SERVERNAME을 참조하세요.SYS.SERVERS
는 "name" 및 "data_source" 속성에 대한 전체 DNS "연결 가능한" 이름을 반환합니다(예:myinstance.domain.database.windows.net
). SYS.SERVERS를 참조하세요.- SQL Server에 대한 서비스 개념은 SQL Managed Instance에 적용되지 않으므로
@@SERVICENAME
에서 NULL을 반환합니다. @@SERVICENAME을 참조하세요. SUSER_ID
이 지원됩니다.sys.syslogins
에 Microsoft Entra 로그인이 없는 경우 NULL을 반환합니다. SUSER_ID를 참조하세요.SUSER_SID
는 지원되지 않습니다. 잘못된 데이터가 반환되며 이는 알려진 일시적 문제입니다. SUSER_SID를 참조하세요.
환경 제약 조건
서브넷
- SQL Managed Instance를 배포한 서브넷에 다른 리소스(예: 가상 머신)를 배치할 수 없습니다. 다른 서브넷을 사용하여 이러한 리소스를 배포합니다.
- 서브넷에 사용 가능한 IP 주소 수가 충분해야 합니다. 최소한 32개의 IP 주소를 서브넷에 포함해야 합니다.
- 지역에 배포할 수 있는 vCore 및 인스턴스 유형 수에는 몇 가지 제약 조건 및 제한이 있습니다.
- 서브넷에 적용해야 하는 네트워킹 구성이 있습니다.
가상 네트워크
- 가상 네트워크는 리소스 모델을 사용하여 배포할 수 있습니다. 클래식 모델은 가상 네트워크(VNet) 배포를 지원하지 않습니다.
- SQL Managed Instance를 만든 후에 SQL Managed Instance 또는 VNet을 다른 리소스 그룹이나 구독으로 이동하는 기능은 지원되지 않습니다.
- 2020년 9월 22일 이전에 만든 가상 클러스터에서 호스트되는 SQL Managed Instances의 경우 VNet 글로벌 피어링은 지원되지 않습니다. VNet 게이트웨이를 사용하여 ExpressRoute 또는 VNet 간을 통해 이러한 리소스에 연결할 수 있습니다.
장애 조치(failover) 그룹
시스템 데이터베이스는 장애 조치 그룹의 보조 인스턴스에 복제되지 않습니다. 따라서 개체가 보조 인스턴스에서 수동으로 생성되지 않는 한, 시스템 데이터베이스의 개체를 사용하는 시나리오는 보조 인스턴스에서는 불가능합니다.
tempdb
tempdb
시스템 데이터베이스의 최대 파일 크기는 범용 계층에서 코어당 24GB보다 클 수 없습니다. 중요 비즈니스용 계층의 최대tempdb
크기는 SQL Managed Instance 스토리지 크기에 의해 제한됩니다.tempdb
로그 파일 크기는 범용 계층에서 120GB로 제한됩니다. 일부 쿼리는tempdb
에서 코어당 24GB보다 많이 필요하거나 120GB보다 많이 로그 데이터를 생성하는 경우 오류를 반환할 수 있습니다.tempdb
는 항상 12개의 데이터 파일(master
라고도 하는 주 데이터 파일 1개 및 주 데이터 파일 이외의 파일 11개)로 분할됩니다. 파일 구조는 변경할 수 없으며 새 파일을tempdb
에 추가할 수 없습니다.- 새로운 SQL Server 2019 메모리 내 데이터베이스 기능인 메모리 최적화 TempDB 메타데이터는 지원되지 않습니다.
model
데이터베이스에서 생성된 개체는tempdb
가model
데이터베이스에서 초기 개체 목록을 가져오지 않기 때문에 다시 시작 또는 장애 조치(failover) 후에tempdb
에서 자동으로 생성될 수 없습니다. 각 다시 시작 또는 장애 조치(failover) 후에는tempdb
에서 수동으로 개체를 만들어야 합니다.
msdb
SQL Managed Instance의 msdb
시스템 데이터베이스의 다음 스키마는 각각의 미리 정의된 역할이 소유해야 합니다.
- 일반 역할
- TargetServersRole
- 고정 데이터베이스 역할
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- DatabaseMail 역할:
- DatabaseMailUserRole
- 통합 서비스 역할:
- msdb
- db_ssisltduser
- db_ssisoperator
Important
고객이 미리 정의된 역할 이름, 스키마 이름 및 스키마 소유자를 변경하면 서비스의 정상적인 작동에 영향을 줍니다. 이러한 변경 내용은 정상적인 서비스 작업을 보장하기 위해 검색되는 즉시 또는 다음 최신 서비스 업데이트 시 다시 되돌려집니다.
오류 로그
SQL Managed Instance는 자세한 정보를 오류 로그에 배치합니다. 내부 시스템 이벤트는 오류 로그에 많이 기록됩니다. 관련이 없는 항목을 필터링하는 사용자 지정 프로시저를 사용하여 오류 로그를 읽습니다. 자세한 내용은 Azure Data Studio의 경우 확장(미리 보기) 또는 – sp_readmierrorlog를 참조하세요.
보존된 오류 로그의 수를 변경하는 기능은 지원되지 않습니다.