출처 : http://blog.naver.com/allnight123/8973339

 

http://wowhoon.pe.kr 의 박훈님이 제공해 주신 번역문입니다.

좋은글 제공해주신 박훈님께 감사드립니다.


 

MySQL을 Microsoft SQL Server 2000으로 마이그래이션

1. 소개

2. 대상 독자층

3. 개요

4. 마이그래이션 순서 

5. 마이그래이션 준비

6. 자료형, 예약어, 그리고 연산자

7. 데이터 마이그래이션을 위한 MySQL Tool 

8. 마이그래이션을 위한 MS-SQL Tool 

9. DATA변환 서비스의 특징

10. DATA변환 서비스 용어(집)

11. 다이랙트 마이그래이션 

12. Loading중인 데이터를 사용하는 것 

13. 어플리케이션 확장

14. 보안

15. 문재 해결

16. MySQL 에러 메시지

17. 결론

18. 추가 정보

 

개요

이 백서는 마이크로 소프트 SQL SERVER의 마이그래이션 능력과 특성을 설명하고 

MySQL에서  MS-SQL Server로 마이그래이션 희망하는 개발자들을 위하여 만들어

졌다. 

소개

이 문서(예제) MySQL에서 Microsoft® SQL Server™ 2000으로 마이그래이션 하는 

방법을 유틸리티와 Tool을 이용한 예제로 설명하고 있다.

또한 어떻게 MySQL 어플리케이션을 MS-SQL 2000으로 변경하는 가이드 라인을 

제공한다.

만약에 당신이 MySQL에 적용에 투자를 했으면 당신은 Ms-SQL Server 2000의 

더욱 향상된 기능을 그대로 사용할 수 있을 것이다.

만약 당신이 MySQL Applications에 투자한다면 당신은 이 투자를 보류하고 당신의

Application의 구조에 SQL Server 2000의 더 나은 기능들을 추가하기 바란다

 

이 문서를 읽기 전에…

이 백서의 대상독자는 새로운 새로운 MS-SQL 서버를 운용을 할 수 있고

MySQL DBMS의 기초 지식과 일반적인 DATABASE 개념을 알고 있다는 전제하에 한다.

일반적인 DATABASE 관리 지식

* MySQL DBMS 기초에 대한 튼튼한 배경지식

*MySQL언어에 익숙한 사용자

sysadmin 서버 Role 소유자. sysadmin 롤이 서버에 대한 완전한 권한을 가지며 좀더 

많은 정보를 위해서 SQL서버2000 온라인 도움말의 "로그인" 부분을 참조하길 바란다. 

개발환경과 application platform은 Microsoft Windows 2000 O/S와 SQL Server 2000 

이다. MySQL은 MySQL ODBC Driver로 사용되며, platform은 Red Hat Linux 7.1에서 

MySQL 3.23.37을 사용한다.

 

개 요

MySQL은 Open-source Database system(DBMS) 이다. 

MySQL은 클라이언트/서버 구조를 사용하고 멀티스레드, 멀티유저 데이터 베이스 

서버이다. 

MySQL은 빠른 속도를 위해 디자인 되었다(속도에 우선해 설계되었다) 그러므로, 

MySQL은 (관계형 데이터베이스), 하위질의(sub query), 포린키(foreign key), 

스토어드 프로시져(sored procedures), 트리거(triggers), 뷰(view) 같은 

관계형 데이터베이스에서 제공되는 기능을 제공하지 않는다. 추가로, 다수의 

사용자가 동시에 테이블에 데이터를 삽입하는 경우 잠금(Locking mechanism)이 

되지 않는다. 또한 많은 어플리케이션과 Tool 지원되지 않고 있다. 

Ms-SQL Server 2000은 관계형 데이터 베이스 관리 시스템으로서(RDBMS) OLAP, 

데이터 마이닝 기능을 포함하고 있다. Ms-SQL Server 2000은 대형 데이터 처리와 

상업 웹사이트를 위한 대형 데이터의 저장, 처리, 분석의 업무가 가능하며, 

개인 또는 중소기업을 위한 소규모 서비스를 위한 기능도 함께 제공하고 잇다. 

 

Ms-SQL Sever 2000에서는 로우 단위의 잠금(row-level lockling), 진보한 

쿼리 옵티마이져, 데이터 복제, 분산데이터 베이스 관리, 그리고 분석 서비스를 

지원한다. Transact-SQL(T-SQL)은 Ms-SQL Sever 에서 지원하는 구조화 질의어 이다.

이장에선 소개하는 MS-SQL Server 기능은 SQL Sever가 제공하는 기능중에 아주 

적은 부분이다.

SQL Server 2000의 중요한 기능은 북스온라인에 기제되어 있다. 

지금 북스온라인을 실행 해보길 바란다.

 

마이그래이션 과정

이 장은 이동 과정을 MySQL와 마이크로소프트 SQL 서버 2000의 구조 설계에 대해서

소개한다. 이 장은 다음과 같은 내용으로 구성되어 있다.

이번 chapter는 MS-SQL Server 2000을 MySQL로 마이그래이션 하는 

아키택처의 윤곽을 설명한다.

소개하는 내용은 다음과 같다: 

 

마이그래이션 준비

자료형, 예약어(key word), 운영자

마이그래이션을 위한 MySQL 도구들(tools)

마이그래이션을 위한 MS-SQL Sercver 도구들(tools) 

다이렉트 마이그레이션 : Data Transformation Services (DTS)

데이터를 조작 하는 도구 : 쿼리 분석기(Query Analyzer) 

어플리케이션 확장 

문제해결 

 

마이그래이션 준비

적절한 마이그레이션 계획은 성공적인 마이그래이션을 위해서 아주 중요하다. 

마이그래이션을 하기 전에 MySQL 데이터베이스 스키마를 재검토 해주길 바란다. 

또한 MS-SQL Server의 자료형과 MySQL 자료형(Data Types)을 비교해주길 바란다.

그리고는 그 차이들을 메모해 두길 바란다.

"MySQL과 MS-SQL 2000 Server 비교" 

섹션에는 프래임웍과 자료형을 비교한 자료들이 제공된다. 

몇몇 MySQL 오프잭트, 키워드들은 MS-SQL 2000 Server 과 충돌하는 부분이 있다. 

이 키워드들은 다음 섹션에서 포함되어있다.

MySQL 데이터를 DTS로 전송하기 전에 MySQL 데이터베이스를 백업 받아 두길 

바란다.


자료형, 예약어, 연산자

이 섹션은 MS-SQL 2000 Server의 자료형(Data type)을 이야기 하도록 하겠다.

MySQL 자료형(Data type)과 MS-SQL 자료형을 비교한 표는 마이그래이션을 돕기 

위하여 제공된다.

또 MS-SQL의 예약어(keywords)목록 또한 제공합니다. 

이 표는 다음 정보를 포함합니다.

* MS-SQL Server가 제공하는 자료형

* My-SQL과 MS-SQL Server의 비교

* MS-SQL Server 예약어(keywords)


MS-SQL Server 에서 지원되는 자료형

자료 형 해설 

자료

BIGINT

4바이트 정수  -2^63 (-9223372036854775808)부터 
-2^63 (-9223372036854775808)
까지의  

INT

4바이트 정수 -2^31(-2,147,483,648)부터
2^31 - 1 (2,147,483,647)
까지의

SMALLINT

2바이트 정수 2^15 (-32,768)부터 2^15 - 1 (32,767)까지의

TINYINT

1바이트정수 0부터 255까지의

BIT

1비트의 Boolean 0 또는 1

DECIMAL

정밀한 숫자형 -10^38 +1 에서 10^38 –1까지의

NUMERIC

DECIMAL 동일한 기능

MONEY

8바이트 화폐값 -2^63 (-922,337,203,685,477.5808)부터
2^63 – 1 (+922,337,203,685,477.5807)
까지

SMALLMONEY

4바이트의 화폐값 -214,748.3648부터 +214,748.3647까지 

FLOAT

부동 소수점 -1.79E + 308부터 1.79E + 308까지

REAL

부동 소수점 -3.40E + 38부터 3.40E + 38까지

DATETIME

8바이트의 날짜와 시간. 1753 1 1일부터
9999
12 31일까지 (ms)초의 단위까지 표현가능.

SMALLDATETIME

1900 1 1일부터 2079 6 6일까지
1
단위로 표현가능.

CHAR

8,000 이하의 고정길이 문자 ( 유니코드)

VARCHAR

8,000 이하의 가변길이 문자 ( 유니코드) 

TEXT

최대 2^31 - 1 (2,147,483,647)까지 저장 가능한 가변길이 문자
(
유니코드)

NCHAR

4,000 이하의 고정길이 문자 (유니코드)

NVARCHAR

4,000 이하의 가변길이 문자(유니코드)

NTEXT

최대 2^30 - 1 (1,073,741,823)까지 저장 가능한 가변길이 문자
(
유니코드)

BINARY

8,000 바이트의 최대길이를 가진 고정길이 이진 데이터

VARBINARY

8,000 바이트의 최대 길이를 가진 가변길이 이진 데이터

IMAGE

가변길이 값을 저장하기 위한 자료형
최대 2^31 - 1 (2,147,483,647)byte까지 저장가능 (가변형)

CURSOR

커서

SQL_VARIANT

text, ntext, timestamp, sql_variant 제외한 모든 자료형을 저장할 있는 자료형

TABLE

Table 데이터를 처리할 있는 특수한 자료형

TIMESTAMP

A database-wide unique number that gets updated every time a row gets updated. 
로우가 변경될 경우 항상 고유가 값을 가지는 유일한 .

UNIQUEIDENTIFIER

전역 유일 식별자 (GUID).

상세한 자료는 MS-SQL Server 2000 북스온라인을 참고 하길 바란다.

 

MySQL과 MS-SQL Server 2000 비교

다음 표는 MySQL과 MS-SQL Server 2000 사이의 자료유형들의 매핑을 

나타내고 있다.

몇몇 MySQL 자료유형은 MS-SQL Sever 2000의 유사 자료형으로 대체 했습니다.

아래의 표는 다음과 같은 정보를 나타내고 있습니다.

* 숫자 타입

* 데이터, 시간 타입

* 문자열 타입 

 



D:  부동 소수점 타입에 적용하고,소수점 후에 자릿수의 수를 가리킨다.  최대 가능한 가치는 30이지만
M-2
보다 벌써 커서는 된다.

L:  칼럼의 실제 길이

M:  최대 표시 크기를 가리킨다.  최대 표시 크기는 255이다.

 

 

수치 자료형

MySQL Size SQL Server 2000
TINYINT 1 Byte TINYINT
SMALLINT 2 Bytes SMALLINT
MEDIUMINT 3 Bytes  
INT 4 Bytes INT
INTEGER 4 Bytes INT
BIGINT 8 Bytes BIGINT
FLOAT(X<=24) 4 Bytes FLOAT(0)
FLOAT(25<=X<=53) 8 Bytes FLOAT(25)
DOUBLE 8 Bytes FLOAT(25)
DOUBLE PRECISION 8 Bytes FLOAT(53)
REAL 8 Bytes REAL
DECIMAL M Bytes(D+2, if M<D) DECIMAL
NUMERIC M Bytes(D+2, if M<D) NUMERIC

 

날짜 시간 자료형

MySQL Size SQL Server 2000
DATE 3 Bytes SMALLDATETIME
DATETIME 8 Bytes DATETIME
TIMESTAMP 4 Bytes TIMESTAMP
TIME 3 Bytes SMALLDATETIME
YEAR 1 Byte SMALLDATETIME

 

문자열형

MySQL Size SQL Server 2000
CHAR(m) M Bytes, 1<=M<=255 CHAR
VARCHAR(m) L+1 Bytes where L<=M and 1<=M<=255 VARCHAR
TINYBLOB L + 1 Bytes where L<2^8 BINARY
BLOB L + 2 Bytes where L<2^16 VARBINARY
TEXT L + 2 Bytes where L<2^16 TEXT
MEDIUMBLOB L + 3 Bytes where L<2^24 IMAGE
MEDIUMTEXT L + 3 Bytes where L<2^24 TEXT
LONGBLOB L + 4 Bytes where L<2^32 IMAGE
LONGTEXT L + 4 Bytes where L<2^32 TEXT
ENUM (VALUE1, VALUE2, …) 데이터형이 1또는 2바이트를
차지하는지는 그값의 수치로
판단된다.
매칭되는 자료형이 없으나 CHECK 제약을 이용해 구현 가능하다.
SET (VALUE1, VALUE2, …) 1, 2, 3, 4 또는 8 바이트.

Set 멤버들의 최대값에 의존적인 값이다.

 

 

Microsoft SQL Server 2000 예약어

ADD EXCEPT PERCENT
ALL EXEC PLAN
ALTER EXECUTE PRECISION
AND EXISTS PRIMARY
ANY EXIT PRINT
AS FETCH PROC
ASC FILE PROCEDURE
AUTHORIZATION FILLFACTOR PUBLIC
BACKUP FOR RAISERROR
BEGIN FOREIGN READ
BETWEEN FREETEXT READTEXT
BREAK FREETEXTTABLE RECONFIGURE
BROWSE FROM REFERENCES
BULK FULL REPLICATION
BY FUNCTION RESTORE
CASCADE GOTO RESTRICT
CASE GRANT RETURN
CHECK GROUP REVOKE
CHECKPOINT HAVING RIGHT
CLOSE HOLDLOCK ROLLBACK
CLUSTERED IDENTITY ROWCOUNT
COALESCE IDENTITY_INSERT ROWGUIDCOL
COLLATE IDENTITYCOL RULE
COLUMN IF SAVE
COMMIT IN SCHEMA
COMPUTE INDEX SELECT
CONSTRAINT INNER SESSION_USER
CONTAINS INSERT SET
CONTAINSTABLE INTERSECT SETUSER
CONTINUE INTO SHUTDOWN
CONVERT IS SOME
CREATE JOIN STATISTICS
CROSS KEY SYSTEM_USER
CURRENT KILL TABLE
CURRENT_DATE LEFT TEXTSIZE
CURRENT_TIME LIKE THEN
CURRENT_TIMESTAMP LINENO TO
CURRENT_USER LOAD TOP
CURSOR NATIONAL TRAN
DATABASE NOCHECK TRANSACTION
DBCC NONCLUSTERED TRIGGER
DEALLOCATE NOT TRUNCATE
DECLARE NULL TSEQUAL
DEFAULT NULLIF UNION
DELETE OF UNIQUE
DENY OFF UPDATE
DESC OFFSETS UPDATETEXT
DISK ON USE
DISTINCT OPEN USER
DISTRIBUTED OPENDATASOURCE VALUES
DOUBLE OPENQUERY VARYING
DROP OPENROWSET VIEW
DUMMY OPENXML WAITFOR
DUMP OPTION WHEN
ELSE OR WHERE
END ORDER WHILE
ERRLVL OUTER WITH
ESCAPE OVER WRITETEXT

 

 


 MySQL을 MSSQL으로 마이그래이션 - (1) 문서의 끝입니다.

 
안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히

댓글을 달아 주세요