Babelfish에서의 T-SQL 차이점 - Amazon Aurora

Babelfish에서의 T-SQL 차이점

현재 Babelfish 릴리스에서 지원되는 T-SQL 기능 표와 SQL Server와의 동작 차이점에 대한 몇 가지 참고 사항을 아래에서 확인할 수 있습니다.

다양한 버전 지원에 대한 자세한 내용은 버전별 Babelfish에서 지원되는 기능 단원을 참조하세요. 현재 지원되지 않는 기능에 대한 자세한 내용은 Babelfish에서 지원되지 않는 기능 단원을 참조하세요.

Babelfish는 Aurora PostgreSQL-Compatible Edition과 함께 사용할 수 있습니다. Babelfish 릴리스에 대한 자세한 내용은 Aurora PostgreSQL 릴리스 정보를 참조하세요.

기능 또는 구문 동작 또는 차이점에 대한 설명
\(줄 연속 문자) 문자 및 16진수 문자열에 대한 줄 연속 문자(줄 바꿈 앞 백슬래시)는 현재 지원되지 않습니다. 문자열의 경우 백슬래시-줄 바꿈은 문자열의 문자로 해석됩니다. 16진수 문자열의 경우 백슬래시-줄 바꿈으로 인해 구문 오류가 발생합니다.

@@version

@@version에서 반환하는 값의 형식은 SQL Server에서 반환하는 값과 약간 다릅니다. @@version 형식에 따라 코드가 올바르게 작동하지 않을 수 있습니다.

집계 함수

집계 함수는 부분적으로 지원됩니다(AVG, COUNT, COUNT_BIG, GROUPING, MAX, MIN, STRING_AGG 및 SUM이 지원됨). 지원되지 않는 집계 함수 목록은 지원되지 않는 함수 단원을 참조하세요.

ALTER TABLE

단일 열 또는 제약 조건의 추가 또는 삭제만 지원합니다.

ALTER TABLE..ALTER COLUMN

NULL 및 NOT NULL은 현재 지정할 수 없습니다. 열의 null 허용 여부를 변경하려면 postgreSQL 문 ALTER TABLE..{SET|DROP} NOT NULL을 사용합니다.

열 별칭이 없는 빈 열 이름

sqlcmdpsql 유틸리티는 빈 이름이 있는 열을 다르게 처리합니다.

  • SQL Server sqlcmd는 빈 열 이름을 반환합니다.

  • PostgreSQL psql은 생성된 열 이름을 반환합니다.

CHECKSUM 함수

Babelfish와 SQL Server는 CHECKSUM 함수에 대해 서로 다른 해싱 알고리즘을 사용합니다. 따라서 Babelfish의 CHECKSUM 함수에서 생성된 해시 값은 SQL Server의 CHECKSUM 함수에서 생성된 해시 값과 다를 수 있습니다.

열 기본값

열 기본값을 생성할 때 제약 조건 이름은 무시됩니다. 열 기본값을 삭제하려면 ALTER TABLE...ALTER COLUMN..DROP DEFAULT... 구문을 사용합니다.

제약 조건

PostgreSQL 개별 제약 조건 켜기 및 끄기를 지원하지 않습니다. 명령문이 무시되면서 경고가 발행됩니다.

DESC(내림차순) 열을 사용하여 생성된 제약 조건

제약 조건은 ASC(오름차순) 열로 작성됩니다.

IGNORE_DUP_KEY를 사용한 제약 조건

제약 조건은 이 속성 없이도 생성됩니다.

CREATE, ALTER, DROP SERVER ROLE

ALTER SERVER ROLE은 sysadmin에 대해서만 지원됩니다. 다른 모든 구문은 지원되지 않습니다.

Babelfish의 T-SQL 사용자는 로그인(서버 주체), 데이터베이스 및 데이터베이스 사용자(데이터베이스 주체)의 개념에 대해 SQL Server와 유사한 경험을 합니다.

CREATE, ALTER LOGIN 절은 제한된 구문으로 지원

CREATE LOGIN... PASSWORD 절, ...DEFAULT_DATABASE 절 및 ...DEFAULT_LANGUAGE 절은 지원됩니다. ALTER LOGIN... PASSWORD 절은 지원되지만 ALTER LOGIN... OLD_PASSWORD 절은 지원되지 않습니다. sysadmin 구성원인 로그인만 암호를 수정할 수 있습니다.

CREATE DATABASE 대/소문자 구분하는 데이터 정렬

대소문자 구분하는 데이터 정렬은 CREATE DATABASE 문에서 지원되지 않습니다.

CREATE DATABASE 키워드 및 절

COLLATE 및 CONTAINMENT=NONE을 제외한 옵션은 지원되지 않습니다. COLLATE 절은 허용되며 항상 babelfishpg_tsql.server_collation_name 값으로 설정됩니다.

CREATE SCHEMA... 지원 절

CREATE SCHEMA 명령을 사용하여 빈 스키마를 만들 수 있습니다. 추가 명령을 사용하여 스키마 객체를 생성합니다.

Babelfish에서는 데이터베이스 ID 값이 다릅니다.

마스터 및 tempdb 데이터베이스는 데이터베이스 ID 1과 2가 아닙니다.

TO_CHAR 날짜 유형 형식 함수는 다음과 같은 제한 사항으로 지원됩니다.

단일 문자 오전/오후는 지원되지 않습니다.

SQL 서버의 ‘yyy’ 형식은 1000 이상의 연도에 대해 4자리를 반환하지만 다른 연도에 대해서는 3자리만 반환합니다.

‘g’ 및 ‘R’ 형식은 지원되지 않습니다.

‘vi-VN’ 로케일은 번역이 약간 다릅니다.

63자를 초과하는 식별자

PostgreSQL은 식별자에 대해 최대 63자까지 지원합니다. Babelfish는 63자보다 긴 식별자를 원래 이름의 해시를 포함하는 이름으로 변환합니다. 예를 들어, 'AB(ABC1234567890123456789012345678901234567890123456789012345678901234567890'으로 생성된 테이블이 'ABC123456789012345678901234567890123456789012345678901234567890'으로 변환될 수 있습니다.

IDENTITY 열 지원

IDENTITY 열은 tinyint, smallint, int, bigint. numericdecimal과 같은 데이터 유형에 대해 지원됩니다.

SQL Server는 IDENTITY 열의 numericdecimal 데이터 유형에 대해 38자리까지의 정밀도를 지원합니다.

PostgreSQL은 IDENTITY 열의 numericdecimal 데이터 유형에 대해 19자리까지의 정밀도를 지원합니다.

IGNORE_DUP_KEY가 포함된 인덱스

IGNORE_DUP_KEY가 포함된 인덱스를 생성하는 구문은 이 속성이 생략된 것처럼 인덱스를 만듭니다.

32개 이상의 열이 포함된 인덱스

인덱스에는 32개 이상의 열이 포함될 수 없습니다. 포함된 인덱스 열은 PostgreSQL의 최대값으로 계산되지만 SQL Server에서는 계산되지 않습니다.

인덱스(클러스터형)

클러스터형 인덱스는 NONCLUSTERED가 지정된 것처럼 만들어집니다.

인덱스 절

FILLFACTOR, ALLOW_PAGE_LOCKS, ALLOW_ROW_LOCKS, PAD_INDEX, STATISTICS_NORECOMPUTE, OPTIMIZE_FOR_SEQUENTIAL_KEY, SORT_IN_TEMPDB, DROP_EXISTING, ONLINE, COMPRESSION_DELAY, MAXDOP, DATA_COMPRESSION과 같은 절은 무시됩니다.

JSON 지원

이름-값 쌍의 순서는 보장되지 않습니다. 그러나 배열 유형은 영향을 받지 않습니다.

LOGIN 객체

PASSWORD, DEFAULT_DATABASE, ENABLE, DISABLE을 제외하고 LOGIN 객체의 모든 옵션이 지원됩니다.

NEWERENTIALID 함수

NEWID로 구현되고 순차적 동작은 보장되지 않습니다. NEWSEQUENTIALID를 호출하는 경우 PostgreSQL은 새 GUID 값을 생성합니다.

OUTPUT 절은 다음 제한 사항을 통해 지원됩니다.

OUTPUT 및 OUTPUT INTO는 동일한 DML 쿼리에서 지원되지 않습니다. OUTPUT 절에서 UPDATE 또는 DELETE 작업의 대상이 아닌 테이블에 대한 참조는 지원되지 않습니다. OUTPUT... DELETED*, INSERTED*는 동일한 쿼리에서 지원되지 않습니다.

프로시저 또는 함수 파라미터 제한

Babelfish는 프로시저 또는 함수에 대해 최대 100개의 파라미터를 지원합니다.

ROWGUIDCOL

이 절은 현재 무시됩니다. $GUIDGOL을 참조하는 쿼리는 구문 오류를 일으킵니다.

SEQUENCE 객체 지원

SEQUENCE 객체는 tinyint, smallint, int, bigint, numeric 및 decimal과 같은 데이터 형식에 대해 지원됩니다.

Aurora PostgreSQL은 SEQUENCE에서 numeric 및 decimal과 같은 데이터 유형에 대해 19자리까지의 정밀도를 지원합니다.

서버 수준 역할

sysadmin 서버 수준 역할이 지원됩니다. 다른 서버 수준 역할(sysadmin 이외)은 지원되지 않습니다.

db_owner를 제외한 데이터베이스 수준 역할

db_owner 데이터베이스 수준 역할과 사용자 정의 데이터베이스 수준 역할이 지원됩니다. 다른 데이터베이스 수준 역할(db_owner 이외)은 지원되지 않습니다.

SQL 키워드 SPARSE

키워드 SPARSE는 승인되고 무시됩니다.

SQL 키워드 절 ON filegroup

이 절은 현재 무시됩니다.

인덱스 및 제약 조건에 대한 SQL 키워드 CLUSTEREDNONCLUSTERED

Babelfish는 CLUSTEREDNONCLUSTERED 키워드를 수락하고 무시합니다.

sysdatabases.cmptlevel

sysdatabases.cmptlevel은 항상 120으로 설정됩니다.

tempdb는 다시 시작 시 다시 초기화되지 않음

tempdb에서 생성된 영구 객체(예: 테이블 및 프로시저)는 데이터베이스를 다시 시작할 때 제거되지 않습니다.

TEXTIMAGE_ON 파일 그룹

Babelfish는 TEXTIMAGE_ON filegroup 절을 무시합니다.

시간 정밀도

Babelfish는 소수 초에 대해 6자리 정밀도를 지원합니다. 이 동작에는 부작용이 예상되지 않습니다.

트랜잭션 격리 수준

READUNCOMMITTED는 READCOMMITTED와 동일하게 취급됩니다.

가상 계산 열(비영구적)

가상 계산 열은 영구적으로 생성됩니다.

SCHEMABINDING 절 제외

이 절은 함수, 프로시저, 트리거 또는 뷰에는 지원되지 않습니다. WITH SCHEMABINDING이 지정된 것처럼 객체가 생성됩니다.