...
| Note |
|---|
이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다. 이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다. Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다. |
SQL Server Schema 변환시 고려사항
...
SQL Server의 스키마는 객체를 담는 컨테이너(논리적 네임스페이스)이다.
Altibase는 스키마와 사용자가 분리되어 있지 않음으로 특정 User 단위로 맵핑하여 변환하여야 한다.
| 항목 | SQL Server | Altibase |
|---|---|---|
| 특징 | 스키마와 사용자가 분리되어 있음(SQL Server 2005 이후) 하나의 사용자(User)가 여러 스키마에 접근 가능 권한을 스키마 단위로 부여 가능 | 스키마 = 사용자 스키마를 따로 만들수 없고 반드시 USER 단위로 객체를 생성해야 함 |
| 예시 | CREATE SCHEMA Sales AUTHORIZATION John; | CREATE USER Sales IDENTIFIED BY salespwd; |
SQL Server 스키마를 Altibase로 옮길 때는 아래 표와 같이 "스키마 = User"로 치환하고, dbo 같은 공통 스키마는 별도 User를 만들어 대체한다.
| 항목 | SQL Server | Altibase | 비고 |
|---|---|---|---|
| 스키마 구조 | user 와 독립 | user = Schema | 변환시 SQL Server 의 스키마를 Altibase 에서는 User로 맵핑해야 함 |
| 기본 스키마 | dbo | 미지원 | Altibase는 dbo 스키마가 없음으로 특정 유저 생성으로 대체 |
| 공통 객체 관리 | dbo 사용 | 별도 user 생성후 권한 부여 | dbo.TableName 형태는 → 특정 유저 스키마로 매핑 및 권한 부여 필요 |
| 권한 부여 단위 | 스키마 단위 가능 | 객체 단위만 가능 | 스키마 단위 권한은 객체 단위 권한으로 세분화 필요 |
| 이름 충돌 처리 | 스키마 구분으로 해결 | User 명으로 해결 | 변환시 SQL Server의 스키마명이 Altibase의 USER명과 충돌하지 않도록 주의 |
Object 변환
...
SQL SERVER의 OBJECT를 ALTIBASE로 변환할 때 고려할 사항에 대해 기술한다.
...
분류 | SQL Server | Altibase | 비고 |
Aggregate
| AVG | AVG |
|
CHECKSUM_AGG | Altibase 미 미 지원 |
| |
COUNT | COUNT |
| |
COUNT_BIG | COUNT로 대체 |
| |
GROUPING | GROUPING | ROLLUP, CUBE, GROUPING SETS 사용 시 집계 레벨을 구분하는 함수 | |
GROUPING_ID | GROUPING_ID | 행과 관련되는 GROUPING 비트 벡터에 대응되는 수치를 반환 | |
MAX | MAX |
| |
MIN | MIN |
| |
STDEV | STDDEV 사용 |
| |
STDEVP | Altibase 미 미 지원 |
| |
SUM | SUM |
| |
VAR | VARIANCE |
| |
Ranking
| DENSE_RANK | DENSE_RANK |
|
NTILE | NTILE |
| |
RANK | RANK |
| |
ROW_NUMBER | ROW_NUMBER |
| |
Conversion
| CAST, CONVERT | CAST 사용 | Altibase의 CONVERT 함수는 다른 기능 제공 |
PARSE | CAST 사용 | CONVERT 함수를 이용하여 캐릭터셋 변경 가능 | |
TRY_CAST | CAST 사용 | 캐스팅 실패시 오류 반환 | |
TRY_CONVERT | Altibase 미 미 지원 |
| |
TRY_PARSE | Altibase 미 미 지원 |
| |
Date
| CURRENT_TIMESTAMP | CURRENT_TIMESTAMP |
|
DATENAME | DATENAME |
| |
DATEPART | DATEPART |
| |
DAY | DATEPART 사용 |
| |
| DATEADD | DATEADD | ALTIBASE는 날짜문자열을 TO_DATE()함수로 형식 지정 필요 | |
DATEDIFF | DATEDIFF |
| |
DATEFROMPARTS | TO_DATE 사용 |
| |
DATETIME2FROMPARTS | TO_DATE 사용 |
| |
DATETIMEFROMPARTS | TO_DATE 사용 |
| |
DATETIMEOFFSETFROMPARTS | TO_DATE 사용 |
| |
EOMONTH | LAST_DAY 사용 |
| |
GETDATE | SYSDATE 사용 | 반환 타입: datetime | |
GETUTCDATE | unix_date로 대체 가능 |
| |
ISDATE | Altibase 미 미 지원 |
| |
SMALLDATETIMEFROMPARTS | TO_DATE 사용 |
| |
SWITCHOFFSET | CONV_TIMEZONE로 대체 가능 |
| |
SYSDATETIME | SYSDATE 사용 | 반환 타입: datetime2SWITCHOFFSET | |
SYSDATETIMEOFFSET | Altibase 미 미 지원 |
| |
SYSUTCDATETIME | unix_date로 대체 가능 |
| |
TIMEFROMPARTS | TO_DATE 사용 |
| |
TODATETIMEOFFSET | Altibase 미 미 지원 |
| |
YEAR | DATEPART 또는 EXTRACT로 대체 가능 |
| |
Logical
| CHOOSE | Altibase 미 미 지원 |
|
IIF | case2로 대체 가능 |
| |
Mathematical
| ABS | ABS |
|
ACOS | ACOS |
| |
ASIN | ASIN |
| |
ATAN | ATAN |
| |
ATN2 | ATN2 |
| |
CEIL(n) | CEIL(n) |
| |
COS | COS |
| |
COT | Altibase 미 미 지원 |
| |
DEGREES | Altibase 미 미 지원 |
| |
EXP | EXP |
| |
FLOOR | FLOOR |
| |
LOG | LOG | LOG (m, n) | |
LOG10 | LOG(10,m) 사용 |
| |
PI | Altibase 미 미 지원 |
| |
POWER | POWER |
| |
RADIANS | Altibase 미 미 지원 |
| |
RAND | RAND | SQL Server : 0~1사이의 pseudo-random float value 반환. | |
ROUND | ROUND |
| |
SIGN | SIGN |
| |
SIN | SIN |
| |
SQRT | SQRT |
| |
SQUARE | Altibase 미 미 지원 |
| |
TAN | TAN |
| |
String
| ASCII | ASCII |
|
CHAR | CHAR |
| |
CHARINDEX | INSTR, POSITION 사용 |
| |
CONCAT | CONCAT |
| |
DIFFERENCE | Altibase 미 미 지원 |
| |
LEFT | SUBSTR, SUBSTRING 사용 | SUBSTR (expr, start [, length]) | |
LEN | LENGTH 사용 |
| |
LOWER | LOWER |
| |
LTRIM | LTRIM | Altibase는 LTRIM (expr1 [,expr2]) | |
RTRIM | RTRIM | Altibase는 RTRIM (expr1 [,expr2]) | |
PATINDEX | INSTR, POSITION 사용 |
| |
QUOTENAME | Altibase 미 미 지원 |
| |
REPLACE | REPLACE 사용 |
| |
REPLICATE | REPLICATE |
| |
REVERSE | REVERSE_STR 사용 |
| |
RIGHT | SUBSTR, SUBSTRING 사용 | SUBSTR (expr, start [, length]) | |
PATINDEX | INSTR, POSITION 사용 |
| |
SOUNDEX | Altibase 미 미 지원 |
| |
SPACE | LPAD, RPAD 사용 |
| |
STR | TO_CHAR 사용 |
| |
STUFF | STUFF |
| |
SUBSTRING | SUBSTRING |
| |
UNICODE | Altibase 미 미 지원 |
| |
UPPER | UPPER |
|
OBJECT
...
분류 | SQL Server | Altibase | 비고 |
|---|---|---|---|
CONSTRAINT | 지원 | 지원 |
|
TRIGGER | 지원 | 지원 |
|
Multi Key-Index | 지원 | 지원 |
|
VIEW | 지원 | 지원 |
|
UPDATABLE VIEW | 지원 | 지원 | ALTIBASE에서 |
SEQUENCE | 지원 | 지원 |
|
STORED FUNCTION/PROCEDURE | 지원 | 지원 |
|
SYNONYM | 지원 | 지원 |
|
Temporary Table | 지원 | 지원 | ALTIBASE에서 |
USER | 지원 | 지원 |
|
REPLICATION | 지원 | 지원 |
|
SQL Server 스키마 변환
스키마 : 객체를 담는 컨테이너(논리적 네임스페이스)
...
SQL Server
...
Altibase
...
스키마와 사용자가 분리되어 있음(SQL Server 2005 이후)
하나의 사용자(User)가 여러 스키마에 접근 가능
권한을 스키마 단위로 부여 가능
기본 스키마 : dbo
...
스키마 = 사용자
스키마를 따로 만들수 없고 반드시 USER 단위로 객체를 생성해야 함
...
CREATE
...
CREATE USER Sales IDENTIFIED BY salespwd;
CREATE TABLE Sales.Customers (...);
SQL Server 스키마를 Altibase로 옮길 때는 아래 표와 같이 "스키마 = User"로 치환하고, dbo 같은 공통 스키마는 별도 User를 만들어 대체한다.
| 항목 | SQL Server | Altibase | 비고 |
|---|---|---|---|
| 스키마 구조 | user 와 독립 | user = Schema | 변환시 SQL Server 의 스키마를 Altibase 에서는 User로 맵핑해야 함 |
| 기본 스키마 | dbo | 없음 | Altibase는 dbo 스키마가 없음으로 특정 유저 생성으로 대체 |
| 공통 객체 관리 | dbo 사용 | 별도 user 생성후 권한 부여 | dbo.TableName 형태는 → 특정 유저 스키마로 매핑 및 권한 부여 필요 |
| 권한 부여 단위 | 스키마 단위 가능 | 객체 단위만 가능 | 스키마 단위 권한은 객체 단위 권한으로 세분화 필요 |
| 이름 충돌 처리 | 스키마 구분으로 해결 | User 명으로 해결 | 변환시 SQL Server의 스키마명이 Altibase의 USER명과 충돌하지 않도록 주의 |
CREATE TABLESPACE
...
SQL Server에서는 데이터 저장소로 Database를 관리하나 Altibase에서는 테이블스페이스를 관리한다.
Altibase에서의 테이블스페이스는 저장 공간에 따라 메모리 테이블스페이스, 디스크 테이블스페이스로 나뉘며 생성 주체에 따라 시스템 테이블스페이스, 사용자 정의 테이블 스페이스, 저장 내용에 따라 딕셔너리 테이블스페이스, 언두 테이블스페이스, 임시 테이블스페이스, 데이터 테이블 스페이스 등으로 나뉘어 진다.
따라서 Altibase로 변환할 때는 데이터 저장 공간에 따라 CREATE MEMORY DATA TABLESPACE, CREATE DISK DATA TABLESPACE 구문을 이용하여 생성한다.
...
SQL Server | Altibase | 비고 |
|---|---|---|
FILENAME | FILENAME |
|
SIZE | SIZE | 기본 100MB |
MAXSIZE | MAXSIZE |
|
FILEGROWTH | AUTOEXTEND ON NEXT |
|
FILESTREAM | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
DEFAULT_FULLTEXT_LANGUAGE | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
DEFAULT_LANGUAGE | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
NESTED_TRIGGERS | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
TRANSFORM_NOISE_WORDS | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
TWO_DIGIT_YEAR_CUTOFF | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
DB_CHAINING | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
TRUSTWORTHY | Altibase 미 미 지원 | ALTIBASE에서 구문생성시 삭제 |
CREATE TABLE
...
SQL Server | Altibase | 비고 |
|---|---|---|
FILESTREAM | Altibase 미 미 지원 |
|
COLLATE | Altibase 미 미 지원 |
|
CONSTRAINT | CONSTRAINT | Altibase는 PRIMARY KEY, UNIQUE 지정 시 index 이름은 제공하지 않는다.이름을 명시할 수 없다 |
IDENTITY | Altibase 미 미 지원 |
|
ROWGUIDCOL | Altibase 미 미 지원 |
|
2. data type
SQL Server | Altibase | 비고 |
|---|---|---|
Precision, scale | Precision, scale |
|
max | Altibase 미 미 지원 |
|
CONTENT | Altibase 미 미 지원 |
|
DOCUMENT | Altibase 미 미 지원 |
|
xml_schema_collection | Altibase 미 미 지원 |
|
3. column constraint
SQL Server | Altibase | 비고 |
|---|---|---|
PRIMARY KEY | PRIMARY KEY |
|
NULL, NOT NULL | NULL, NOT NULL |
|
UNIQUE | UNIQUE |
|
CLUSTERED, NONCLUSTERED | Altibase 미 미 지원 |
|
FOREIGN KEY REFERENCES | FOREIGN KEY REFERENCES |
|
partition_scheme_name | PARTITION BY RANGE | HASH | LIST | Table 생성시 파티션테이블 종류 지정. |
...
SQL Server | Altibase | 비고 |
|---|---|---|
PRIMARY KEY | PRIMARY KEY |
|
CLUSTERED, NONCLUSTERED | Altibase 미 미 지원 |
|
FOREIGN KEY REFERENCES | FOREIGN KEY REFERENCES |
|
partition_scheme_name | PARTITION BY RANGE | HASH | LIST | Table 생성시 파티션테이블 종류 지정. |
...
SQL Server | Altibase | 비고 |
|---|---|---|
PAD_INDEX | Altibase 미 미 지원 |
|
FILLFACTOR | Altibase 미 미 지원 |
|
IGNORE_DUP_KEY | Altibase 미 미 지원 | Altibase는 ON OFF 상태임 |
STATISTICS_NORECOMPUTE | Altibase 미 미 지원 | Altibase는 OFF 상태임 |
ALLOW_ROW_LOCKS | Altibase 미 미 지원 | Durability Level 설정에 따라 정의 |
ALLOW_PAGE_LOCKS | Altibase 미 미 지원 | Durability Level 설정에 따라 정의 |
DATA_COMPRESSION | Altibase 미 미 지원 | INDEX 압축은 미지원 |
CREATE USER
...
SQL Server | Altibase | 비고 |
|---|---|---|
UNIQUE | UNIQUE |
|
CLUSTERED | NONCLUSTERED | Altibase 미 미 지원 |
|
ASC | DESC | ASC | DESC |
|
INCLUDE | Altibase 미 미 지원 |
|
filter_predicate | Altibase 미 미 지원 |
|
partition_scheme_name | PARTITION ON | Local Index만 지원 |
ON filegroup_name | Altibase 미 미 지원 |
|
table_or_view_name | Table_name | View는 지원하지 않음 |
PAD_INDEX | Altibase 미 미 지원 |
|
FILLFACTOR | Altibase 미 미 지원 |
|
SORT_IN_TEMPDB | Altibase 미 미 지원 |
|
IGNORE_DUP_KEY | Altibase 미 미 지원 | Altibase는 ON 상태임 |
STATISTICS_NORECOMPUTE | Altibase 미 미 지원 | Alitbase는 OFF 상태임 |
DROP_EXISTING | Altibase 미 미 지원 |
|
ONLINE | Altibase 미 미 지원 | Alitbase는 OFF 상태임 |
ALLOW_ROW_LOCKS | Altibase 미 미 지원 | Durability Level 설정에 따라 정의 |
ALLOW_PAGE_LOCKS | Altibase 미 미 지원 | Durability Level 설정에 따라 정의 |
MAXDOP | Altibase 미 미 지원 | 생성시에만 적용 |
DATA_COMPRESSION | COMPRESS(column_name)로 대체 |
|
...
| SQL Server | Altibase |
|---|---|
-- c1 컬럼에 1씩 자동증가 적용 create table seq_test (c1 int not null identity(1,1) not null ... ); | -- sequence 생성 create sequence seq1 start with 1 increment by 1 nocache; -- default 값에 sequence 적용 create table seq_test (c1 integer notdefault null seq1.nextval not null, ... ); |
Procedure Conversion
...
Parameter Declaration
...
SQL Server의 파라미터 선언부를 Altibase로 변환 시 다음 작업이 필요하다.
SQL Server의 파라미터 선언에서 ‘@’ 기호를 없앤다.
파라미터의 성격에 따라 in , out , in out 을 명시해준다.
Function일 경우 실행 후 하나의 값을 반환해 주는 것으로 반드시 RETURN 다음의 데이터 타입을 명시해야 한다.
...
| SQL Server | Altibase | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Assignment
...
SQL Server의 Server은 변수에 값 할당 시 SET SET과 @ 를 이용한다. 여기서
Altibase는 이를 변경하기 위해서 아래와 같이 2가지 변경 방법을 지원한다.
- SET, ‘@’ 문자를 없앤다.
...
- ‘=’ 를 ‘ := ’로 바꾼다.
...
- 구분자인 ‘,’를 ‘;’로 바꾸고 마지막에 항상 ‘;’로 마지막임을 선언 한다.
...
- ‘@’ 문자를 없앤다. 구분자인 ‘,’를 ‘;’로 바꾸고 마지막에 항상 ‘;’로 마지막임을 선언 한다.
| SQL Server | Altibase | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
...
| SQL Server | Altibase | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Functions
...
Altibase의 문장 끝에는 항상 ‘;’로 마지막임을 표시한다.
함수별로 사용법은 상이할 수 있고, 함수 명이 다를 수도 있다.
SQL SERVER Server Function의 ‘@’ 문자를 없앤다.
| SQL Server | Altibase | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
...
Altibase의 문장 끝에는 항상 ‘;’로 마지막임을 표시한다.
SQL Server의 ‘@’ 문자를 없앤다.
| SQL Server | Altibase | |||
|---|---|---|---|---|
| Code Block | | |||
| 필요 없음 | |||
with (nolock) |
3. 필요 없음(삭제) | |||
order, level 등의 keyword 사용 | ||||
| Code Block | ||||
| order, level 등의 keyword 사용 금지( 알티베이스 예약어) |
DB Link
...
Altibase에서 DB Link를 사용시에는 SELECT의 경우 REMOTE_TABLE(dblink명, Query);
...
| SQL Server | Altibase | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Exception Code
...
ALTIBASE 7.3 온라인 메뉴얼(문서링크 : Error Message Reference ) 매뉴얼 참조
Exception Name | Error Code | Error Code | Error Section |
|---|---|---|---|
"CURSOR_ALREADY_OPEN" | 201062 | 31166 | qpERR_ABORT_QSX_CURSOR_ALREADY_OPEN |
"DUP_VAL_ON_INDEX" | 201063 | 31167 | qpERR_ABORT_QSX_DUP_VAL_ON_INDEX |
"INVALID_CURSOR" | 201064 | 31168 | qpERR_ABORT_QSX_INVALID_CURSOR |
"INVALID_NUMBER" | 201065 | 31169 | qpERR_ABORT_QSX_INVALID_NUMBER |
"NO_DATA_FOUND" | 201066 | 3116A | qpERR_ABORT_QSX_NO_DATA_FOUND |
"PROGRAM_ERROR" | 201067 | 3116B | qpERR_ABORT_QSX_PROGRAM_ERROR |
"STORAGE_ERROR" | 201068 | 3116C | qpERR_ABORT_QSX_STORAGE_ERROR |
"TIMEOUT_ON_RESOURCE" | 201069 | 3116D | qpERR_ABORT_QSX_TIMEOUT_ON_RESOURCE |
"TOO_MANY_ROWS" | 201070 | 3116E | qpERR_ABORT_QSX_TOO_MANY_ROWS |
"VALUE_ERROR" | 201071 | 3116F | qpERR_ABORT_QSX_VALUE_ERROR |
"ZERO_DIVIDE" | 201072 | 31170 | qpERR_ABORT_QSX_ZERO_DIVIDE |
"INVALID_PATH" | 201237 | 31215 | qpERR_ABORT_QSX_FILE_INVALID_PATH |
"INVALID_MODE" | 201235 | 31213 | qpERR_ABORT_QSX_INVALID_FILEOPEN_MODE |
"INVALID_FILEHANDLE" | 201238 | 31216 | qpERR_ABORT_QSX_FILE_INVALID_FILEHANDLE |
"INVALID_OPERATION" | 201239 | 31217 | qpERR_ABORT_QSX_FILE_INVALID_OPERATION |
"READ_ERROR" | 201242 | 3121A | qpERR_ABORT_QSX_FILE_READ_ERROR |
"WRITE_ERROR" | 201243 | 3121B | qpERR_ABORT_QSX_FILE_WRITE_ERROR |
"ACCESS_DENIED" | 201236 | 31214 | qpERR_ABORT_QSX_DIRECTORY_ACCESS_DENIED |
"DELETE_FAILED" | 201240 | 31218 | qpERR_ABORT_QSX_FILE_DELETE_FAILED |
"RENAME_FAILED" | 201241 | 31219 | qpERR_ABORT_QSX_FILE_RENAME_FAILED |
...