Babelfish에서의 T-SQL 차이점
현재 Babelfish 릴리스에서 지원되는 T-SQL 기능 표와 SQL Server와의 동작 차이점에 대한 몇 가지 참고 사항을 아래에서 확인할 수 있습니다.
다양한 버전 지원에 대한 자세한 내용은 버전별 Babelfish에서 지원되는 기능 단원을 참조하세요. 현재 지원되지 않는 기능에 대한 자세한 내용은 Babelfish에서 지원되지 않는 기능 단원을 참조하세요.
Babelfish는 Aurora PostgreSQL-Compatible Edition과 함께 사용할 수 있습니다. Babelfish 릴리스에 대한 자세한 내용은 Aurora PostgreSQL 릴리스 정보를 참조하세요.
기능 또는 구문 | 동작 또는 차이점에 대한 설명 |
---|---|
\(줄 연속 문자) | 문자 및 16진수 문자열에 대한 줄 연속 문자(줄 바꿈 앞 백슬래시)는 현재 지원되지 않습니다. 문자열의 경우 백슬래시-줄 바꿈은 문자열의 문자로 해석됩니다. 16진수 문자열의 경우 백슬래시-줄 바꿈으로 인해 구문 오류가 발생합니다. |
@@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을 사용합니다. |
열 별칭이 없는 빈 열 이름 |
|
CHECKSUM 함수 |
Babelfish와 SQL Server는 CHECKSUM 함수에 대해 서로 다른 해싱 알고리즘을 사용합니다. 따라서 Babelfish의 CHECKSUM 함수에서 생성된 해시 값은 SQL Server의 CHECKSUM 함수에서 생성된 해시 값과 다를 수 있습니다. |
열 기본값 |
열 기본값을 생성할 때 제약 조건 이름은 무시됩니다. 열 기본값을 삭제하려면 |
Constraint_name |
SQL Server에서 제약 조건 이름은 표가 속한 스키마 내에서 고유해야 합니다. 그러나 Babelfish에서는 PRIMARY KEY 및 UNIQUE 제약 조건에만 적용됩니다. 다른 유형의 제약 조건에는 이 제한이 적용되지 않습니다. |
제약 조건 |
PostgreSQL 개별 제약 조건 켜기 및 끄기를 지원하지 않습니다. 명령문이 무시되면서 경고가 발행됩니다. |
IGNORE_DUP_KEY를 사용한 제약 조건 |
제약 조건은 이 속성 없이도 생성됩니다. |
CREATE, ALTER, DROP SERVER ROLE |
ALTER SERVER ROLE은 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 절은 허용되며 항상 |
CREATE SCHEMA... 지원 절 |
CREATE SCHEMA 명령을 사용하여 빈 스키마를 만들 수 있습니다. 추가 명령을 사용하여 스키마 객체를 생성합니다. |
Babelfish에서는 데이터베이스 ID 값이 다릅니다. |
마스터 및 tempdb 데이터베이스는 데이터베이스 ID 1과 2가 아닙니다. |
FORMAT 날짜 유형 함수는 다음과 같은 제한 사항으로 지원됩니다. |
단일 문자 오전/오후는 지원되지 않습니다. SQL 서버의 ‘yyy’ 형식은 1000 이상의 연도에 대해 4자리를 반환하지만 다른 연도에 대해서는 3자리만 반환합니다. ‘g’ 및 ‘R’ 형식은 지원되지 않습니다. ‘vi-VN’ 로케일은 번역이 약간 다릅니다. |
63자를 초과하는 식별자 |
PostgreSQL은 식별자에 대해 최대 63자까지 지원합니다. Babelfish는 63자보다 긴 식별자를 원래 이름의 해시를 포함하는 이름으로 변환합니다. 예를 들어, 'AB(ABC1234567890123456789012345678901234567890123456789012345678901234567890'으로 생성된 테이블이 'ABC123456789012345678901234567890123456789012345678901234567890'으로 변환될 수 있습니다. |
IDENTITY 열 지원 |
IDENTITY 열은 tinyint , smallint , int , bigint . numeric 및 decimal 과 같은 데이터 유형에 대해 지원됩니다.SQL Server는 IDENTITY 열의 PostgreSQL은 IDENTITY 열의 |
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, DEFAULT_LANGUAGE, ENABLE, DISABLE을 제외하고 LOGIN 객체의 모든 옵션이 지원되지 않습니다. |
NEWERENTIALID 함수 |
NEWID로 구현되고 순차적 동작은 보장되지 않습니다. |
OUTPUT 절은 다음 제한 사항을 통해 지원됩니다. |
OUTPUT 및 OUTPUT INTO는 동일한 DML 쿼리에서 지원되지 않습니다. OUTPUT 절에서 UPDATE 또는 DELETE 작업의 대상이 아닌 테이블에 대한 참조는 지원되지 않습니다. OUTPUT... DELETED*, INSERTED*는 동일한 쿼리에서 지원되지 않습니다. |
프로시저 또는 함수 파라미터 제한 |
Babelfish는 프로시저 또는 함수에 대해 최대 100개의 파라미터를 지원합니다. |
ROWGUIDCOL |
이 절은 현재 무시됩니다. |
SEQUENCE 객체 지원 |
SEQUENCE 객체는 tinyint, smallint, int, bigint, numeric 및 decimal과 같은 데이터 형식에 대해 지원됩니다. Aurora PostgreSQL은 SEQUENCE에서 numeric 및 decimal과 같은 데이터 유형에 대해 19자리까지의 정밀도를 지원합니다. |
서버 수준 역할 |
|
|
|
SQL 키워드 SPARSE | 키워드 SPARSE는 승인되고 무시됩니다. |
SQL 키워드 절 |
이 절은 현재 무시됩니다. |
인덱스 및 제약 조건에 대한 SQL 키워드 |
Babelfish는 |
|
|
tempdb는 다시 시작 시 다시 초기화되지 않음 |
tempdb에서 생성된 영구 객체(예: 테이블 및 프로시저)는 데이터베이스를 다시 시작할 때 제거되지 않습니다. |
TEXTIMAGE_ON 파일 그룹 |
Babelfish는 |
시간 정밀도 |
Babelfish는 소수 초에 대해 6자리 정밀도를 지원합니다. 이 동작에는 부작용이 예상되지 않습니다. |
트랜잭션 격리 수준 |
READUNCOMMITTED는 READCOMMITTED와 동일하게 취급됩니다. |
가상 계산 열(비영구적) |
가상 계산 열은 영구적으로 생성됩니다. |
SCHEMABINDING 절 제외 |
이 절은 함수, 프로시저, 트리거 또는 뷰에는 지원되지 않습니다. WITH SCHEMABINDING이 지정된 것처럼 객체가 생성됩니다. |