이 백서는 Microsoft SQL Server 2000의 마이그레이션 기능을 설명하고 MySQL 데이터베이스를 SQL Server 2000으로 마이그레이션 하는데 있어 개발자를 도와줄 정보를 제공합니다.
소개 | |
대상 독자 | |
- 데이터베이스 관리에 대한 일반적인 지식.
- MySQL DBMS의 기초에 대한 확고한 이해.
- MySQL 언어에 친숙.
- sysadmin 고정 서버 역할에 소속. sysadmin 역할은 서버에 대한 완전한 제어 권한을 가집니다. SQL Server의 로그인에 대한 자세한 사항은 SQL Server 2000 온라인 설명서의 "로그인" 부분을 참조하십시오.
이 문서에서 참조하는 개발 및 어플리케이션 플랫폼은 Microsoft Windows 2000 운영체제와 SQL Server 2000입니다. MySQL 플랫폼은 Red Hat Linux 7.1에 MySQL 3.23.37이며 MySQL ODBC 드라이버가 사용되었습니다.
개요 | |
SQL Server 2000은 완벽한 관계형 데이터베이스 관리 시스템(RDBMS)으로써, OLAP 및 데이터 마이닝을 위한 통합 분석 기능도 포함하고 있습니다. SQL Server 2000은 대형 규모의 데이터 처리 시스템과 상용 웹 사이트에 필요한 데이터 및 분석용 저장소로써의 요구사항을 만족시키는 동시에, 개인이나 소규모 기업을 위한 사용하기 쉬운 데이터 저장소로써의 요구사항도 만족시킵니다.
Microsoft SQL Server의 아키텍처는 낮은 수준의 잠금, 향상된 질의 최적화, 데이터 복제, 분산 데이터베이스 관리, 및 분석 서비스와 같이 향상된 서버 기능을 지원합니다. transact-SQL (T-SQL)은 SQL Server 2000이 지원하는 SQL 언어의 변형입니다.
여기에서 소개되는 아키텍처 상의 기능은 SQL Server 2000에 의해 제공되는 기능의 일부에 불과합니다. 서버의 설치 과정에서 함께 설치되는 SQL Server 2000 온라인 설명서는 훌륭한 리소스입니다. 온라인 설명서를 사용하려면, Microsoft SQL Server 프로그램을 열고 온라인 설명서를 클릭합니다.
마이그레이션 절차 | |
- 마이그레이션 준비
- 데이터 형식, 예약된 키워드, 및 연산자
- 데이터 마이그레이션에 사용되는 MySQL 툴
- 마이그레이션을 위한 SQL Server 툴
- 직접 마이그레이션: 데이터 변환 서비스(DTS)
- 데이터 로드 기능의 사용: 질의 분석기
- 어플리케이션의 확장
- 문제 해결
마이그레이션 준비 | |
데이터 형식, 예약된 키워드, 및 연산자 | |
- 지원되는 SQL Server 데이터 형식
- MySQL과 SQL Server 2000의 비교
- SQL Server의 예약된 키워드
지원되는 SQL Server 데이터 형식
데이터 형식 |
설명 |
---|---|
BIGINT |
-2^63 (-9223372036854775808)에서 2^63-1 (9223372036854775807) 사이의 정수 데이터. |
INT |
-2^31 (-2,147,483,648)에서 2^31 - 1 (2,147,483,647)사이의 정수 데이터. |
SMALLINT |
2^15 (-32,768)에서 2^15 - 1 (32,767)사이의 정수 데이터. |
TINYINT |
0에서 255까지의 정수 데이터. |
BIT |
1이나 0 값을 가지는 정수 데이터. |
DECIMAL |
-10^38 +1에서 10^38 -1사이의 고정 정밀도 및 배율 숫자 데이터. |
NUMERIC |
기능적으로 decimal과 동일. |
MONEY |
통화 단위의 1/1000의 정확성을 가진 -2^63(-922,337,203,685,477.5808)에서 2^63 - 1(+922,337,203,685,477.5807) 사이의 통화 데이터 값. |
SMALLMONEY |
통화 단위의 1/1000의 정확성을 가진 -214,748.3648에서 +214,748.3647 사이의 통화 데이터 값. |
FLOAT |
-1.79E + 308에서 -2.23E - 308까지, 0과 2.23E + 308부터 1.79E + 308 사이의 부동 정밀도 숫자 데이터. |
REAL |
-3.40E + 38부터 -1.18E - 38까지, 0과 1.18E - 38부터 3.40E + 38-3 사이의 부동 정밀도 숫자 데이터. |
DATETIME |
1753년 1월 1일에서 9999년 12월 31일까지 1/300초 또는 3.33밀리 초의 정확성을 가진 날짜 및 시간 데이터. |
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자인 가변 길이 유니코드 데이터. sysname은 nvarchar(128)과 같은 기능의 시스템 제공 사용자 정의 데이터 형식으로서 데이터베이스 개체 이름을 참조할 때 사용됩니다. |
NTEXT |
길이가 최대 2^30 - 1(1,073,741,823)자인 가변 길이 유니코드 데이터. |
BINARY |
길이가 최대 8,000바이트인 고정 길이 이진 데이터. |
VARBINARY |
길이가 최대 8,000바이트인 가변 길이 이진 데이터. |
IMAGE |
길이가 최대 2^31 - 1(2,147,483,647)바이트인 가변 길이 이진 데이터. |
CURSOR |
커서에 대한 참조. |
SQL_VARIANT |
text, ntext, timestamp, sql_variant를 제외하고 SQL Server에서 제공하는 여러 가지 데이터 형식의 값을 저장하는 데이터 형식. |
table |
나중에 처리할 수 있도록 결과 집합을 저장하는 특수 데이터 형식. |
TIMESTAMP |
행이 업데이트될 때마다 업데이트되는 데이터베이스 차원의 고유한 숫자. |
UNIQUEIDENTIFIER |
전역 고유 식별자 (GUID). |
자세한 사항은 SQL Server 2000 온라인 설명서의 "Data Types" 항목 참조.
MySQL과 SQL Server 2000의 비교
다음 표는 MySQL과 SQL Server 2000 사이의 데이터 형식을 비교하여 보여줍니다. 일부 MySQL 데이터 형식에 대해서는 하나 이상의 SQL Server 데이터 형식이 사용될 수 있습니다. 이 표는 다음 사항에 대한 정보를 포함합니다:
- 숫자 형식
- 데이터 및 시간 형식
- 문자열 형식
참고
D: 부동 소수점 형식에 적용되며 소수점 이후의 자리 수를 표시합니다. 가능한 최대 값은 30이지만 M-2보다 클 수 없습니다.
L: 컬럼 값의 실제 길이
M: 최대 표시 크기. 합법적인 최대 표시 크기는 255입니다.
숫자 형식
MySQL |
크기 |
SQL Server 2000 |
---|---|---|
TINYINT |
1 바이트 |
TINYINT |
SMALLINT |
2 바이트 |
SMALLINT |
MEDIUMINT |
3 바이트 |
|
INT |
4 바이트 |
INT |
INTEGER |
4 바이트 |
INT |
BIGINT |
8 바이트 |
BIGINT |
FLOAT(X<=24) |
4 바이트 |
FLOAT(0) |
FLOAT(25<=X<=53) |
8 바이트 |
FLOAT(25) |
DOUBLE |
8 바이트 |
FLOAT(25) |
DOUBLE PRECISION |
8 바이트 |
FLOAT(53) |
REAL |
8 바이트 |
REAL |
DECIMAL |
M 바이트 (D+2, if M<D) |
DECIMAL |
NUMERIC |
M 바이트 (D+2, if M<D) |
NUMERIC |
날짜 및 시간 형식
MySQL |
크기 |
SQL Server 2000 |
---|---|---|
DATE |
3 바이트 |
SMALLDATETIME |
DATETIME |
8 바이트 |
DATETIME |
TIMESTAMP |
4 바이트 |
TIMESTAMP |
TIME |
3 바이트 |
SMALLDATETIME |
YEAR |
1 바이트 |
SMALLDATETIME |
문자열 형식
MySQL |
크기 |
SQL Server 2000 |
---|---|---|
CHAR(m) |
M 바이트, 1<=M<=255 |
CHAR |
VARCHAR(m) |
L+1 바이트 (L<=M이고 1<=M<=255인 경우) |
VARCHAR |
TINYBLOB |
L + 1 바이트 (L<2^8인 경우) |
BINARY |
BLOB |
L + 2 바이트 (L<2^16인 경우) |
VARBINARY |
TEXT |
L + 2 바이트 (L<2^16인 경우) |
TEXT |
MEDIUMBLOB |
L + 3 바이트 (L<2^24인 경우) |
IMAGE |
MEDIUMTEXT |
L + 3 바이트 (L<2^24인 경우) |
TEXT |
LONGBLOB |
L + 4 바이트 (L<2^32인 경우) |
IMAGE |
LONGTEXT |
L + 4 바이트 (L<2^32인 경우) |
TEXT |
ENUM (VALUE1, VALUE2,
) |
Enum 수에 따라 1 또는 2 바이트. Values (최대 값은 65535) |
제공되는 데이터 형식은 없지만, CHECK 제약 조건*이 해당 기능을 제공. |
SET (VALUE1, VALUE2,
) |
인수의 수에 따라 최대 1, 2, 3, 4 또는 8 바이트 |
* Check 제약 조건은 열에 들어갈 수 있는 값을 제한하여 데이터 무결성을 보장합니다. 자세한 사항은 온라인 설명서의 "CHECK 제약 조건" 항목을 참조하십시오.
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 툴 | |
- mysql - 데이터베이스에 대해 질의를 실행하고 결과를 볼 수 있도록 해주는 대화형 클라이언트
- mysqldump -MySQL 데이터베이스 내의 스키마와 데이터를 추출하여 파일로 저장하는 툴
- mysqlimport - 파일에서 스키마와 데이터를 읽어서 MySQL 데이터베이스로 로딩하는 툴
- mysqladmin - 데이터베이스의 생성 및 삭제와 같은 관리 작업을 수행할 수 있도록 해주는 툴
- myODBC - ODBC 호환 어플리케이션이 MySQL에 연결할 수 있도록 ODBC 레벨 0 (레벨 1 및 레벨 2 기능과 함께) 드라이버를 제공하는 32비트 Open DataBase Connectivity 소프트웨어
마이그레이션을 위한 SQL Server 툴 | |
데이터 변환 서비스의 기능 | |
- MySQL에서 SQL Server 2000으로 데이터를 마이그레이션
- 마이그레이션 전에 데이터의 모양을 표시
- 테이블과 데이터 형식 (텍스트나 날짜 같은)을 마이그레이션
- MySQL 데이터베이스를 MySQL 테이블과 함께 마이그레이션
- 마이그레이션 보고서를 생성 및 보기
- 테이블과 기본 데이터 형식 매핑 규칙을 사용자 정의
- SQL Server의 예약된 키워드 등에 대한 충돌 사항을 해결
- SQL Server 스키마 모델 내의 객체를 삭제하거나 이름을 변경
- 개별적인 테이블 데이터를 마이그레이션
데이터 변환 서비스 용어집 | |
DTS 패키지는 DTS 디자이너를 통해 그래픽 방식으로, 또는 프로그래밍 방식으로 어셈블 될 수 있는 연결, DTS 작업, DTS 변환, 및 워크플로 제약을 잘 구성하여 모아놓은 것입니다.
DTS 작업은 패키지에서 한 단계로 실행되는 기능의 불연속 집합입니다. 각 작업은 데이터 이동 및 데이터 변환 과정의 일부 또는 실행될 작업으로 수행되는 작업 항목을 정의합니다.
DTS 변환은 데이터가 대상에 도착하기 전 한 데이터에 적용되는 하나 이상의 함수 또는 작업입니다.
DTS 패키지 워크플로는 데이터 변환 서비스 (DTS)의 단계 및 사전 제약이 DTS 패키지 내의 작업 항목의 순서를 정하도록 합니다. DTS 패키지 워크플로는 DTS 디자이너를 통해 그래픽 방식으로, 또는 프로그래밍 방식으로 설계할 수 있습니다.
메타 데이터는 DTS에 패키지 메타데이터 및 데이터 계보 정보를 메타데이터 서비스로 저장하는 기능과 이러한 유형의 정보를 연결하는 기능이 포함되어 있습니다. 패키지에서 참조된 데이터베이스의 카탈로그 메타데이터를 저장할 수 있고 데이터 마트 또는 데이터 웨어하우스의 데이터 특정 열 기록에 관한 계정 정보를 저장할 수 있습니다.
직접 마이그레이션 | |
다음은 MySQL 데이터베이스의 마이그레이션을 위해 Microsoft SQL Server를 설정하는 방법입니다.
- MyODBC 지원을 설치합니다. MyODBC는http://www.mysql.com/ 에서 구할 수 있습니다.
- 설치가 진행되는 동안 다음과 같은 대화 상자가 나타납니다:
다음과 같은 정보를 사용하여 ODBC 설치 설정 사항을 입력합니다:
Windows DSN name: test Description: This is a test database MySQL Database: test Server: seawolf.microsoft.com User: cgunn Password: my_password Port: 3306 위와 같은 설정에서, Windows DSN 이름은 연결하는 컴퓨터 상에서 유일해야 하며, 서버 설정은 FQDN 이거나 (DNS에 의해, 또는 사용자가 직접 모종의 이름 해석을 제공해야 합니다), IP 주소여야 합니다.
- 다음은 DTS 마법사를 실행합니다. Microsoft SQL Server 프로그램 그룹에서 데이터 가져오기 및 내보내기를 선택하면 다음과 같은 대화 상자가 나타납니다.
Next를 클릭하여 다음 단계로 이동합니다.
- 이제 필요한 데이터 원본 정보를 입력하는데, 아래 그림에서와 같이 ODBC 데이터 원본은 MySQL, System DSN에는 test를 입력하고 사용자 이름과 암호를 입력한 후 Next를 클릭합니다.
브라우저가 인라인 프레임을 지원하지 않는 경우 여기를 클릭하여 그림을 별도 페이지에서 봅니다. - 아래 대화 상자에서와 같이 대상에 연결하기 위한 세부 사항을 입력하고 Next를 클릭합니다.
- Specify table Copy or Query 대화 상자에서는 원본 (이 경우 MySQL)에서 데이터베이스 객체를 선택할 수 있습니다. Copy table(s) and View(s) from the source database를 선택합니다. 다시 한번 얘기하지만 MySQL은 뷰 기능을 제공하지 않으므로 이 옵션을 선택해도 테이블 객체 만을 복사할 것입니다. Next를 클릭하여 다음 단계로 넘어갑니다.
- Select Source tables and View 대화 상자에서는 원본 테이블과 대상 테이블을 선택할 수 있습니다.
- 아래 Column Mappings and transformations 대화 상자에서처럼 데이터 변환을 위한 내용을 지정합니다.
위의 대화 상자에서는 원본 및 대상 데이터 형식이 일치하고 있으며 NULL을 허용하도록 선택되어 있습니다. 작업이 완료되면 OK를 클릭합니다.
다음에는 Save, Schedule, and Replicate Package 대화 상자가 나타납니다. 여기에서는 마이그레이션 작업을 바쁘지 않은 시간 대로 스케줄 하고 DTS 패키지를 다른 위치 및 다른 포맷으로 저장합니다.
- Save DTS Package 대화 상자는 DTS 패키지에 대하여 두 가지 유형의 암호를 제공합니다. 소유자 암호는 패키지에 포함된 사용자/암호 정보를 보호하는 것이고, 사용자 암호는 실행을 제어하기 위한 것으로 DTS 패키지가 인가되지 않은 사람에 의해 실행되는 것을 방지합니다. Next를 클릭하여 다음 단계로 진행합니다.
- 마지막으로 Completing the DTS Import/Export Wizard 대화 상자가 DTS 마법사에서 선택된 옵션들을 요약하여 보여줍니다.
Finish를 클릭하여 데이터 마이그레이션 절차를 시작합니다.
- Executing Package 대화 상자가 각 작업의 실행 상태를 보여줍니다. 녹색 체크 표시는 작업이 성공적으로 완료된 것을 뜻합니다. 오류로 인해 작업이 실패하면 오류 대화 상자가 오류에 대한 정보를 보여줍니다.
이제 당신은 데이터를 MySQL에서 SQL Server 2000으로 성공적으로 마이그레이션 하였습니다.
데이터 로딩의 사용 | |
- mysqldump 데이터 추출 스크립트의 생성
- 스크립트의 전송
- 추출된 스크립트의 사용
mysqldump 데이터 추출 스크립트의 생성
MySQL은 백업 또는 데이터의 전송을 위해 데이터베이스 또는 일련의 데이터베이스를 덤프 해주는 유틸리티를 제공합니다.
mysqldump 유틸리티는 데이터베이스의 SQL 스크립트를 생성하는 기능을 제공합니다.
Mysqldump을 위한 최소한의 문법은 다음과 같습니다:
Shell> mysqldump [OPTIONS] database [tables]
mysqldump에서 사용할 수 있는 옵션에 대한 자세한 정보는 이 백서에서도 설명하지만 MySql의 참조 매뉴얼에서도 자세히 설명하고 있습니다.
Mysqldump을 사용하면 해당 데이터베이스의 SQL 스크립트를 얻을 수 있습니다.
스크립트의 전송
Mysqldump로 생성한 스크립트는 SQL Server로 전송될 수 있습니다. MySQL 호스트에서 SQL Server 2000 컴퓨터로 스크립트를 전송하기 위해서는 FTP와 같은 네트워크 어플리케이션을 사용할 수 있습니다.
추출된 스크립트를 SQL 쿼리 분석기에서 사용
생성된 스크립트는 이제 데이터베이스 객체를 생성하고 데이터를 입력하는데 사용될 수 있습니다. MySQL 스크립트를 데이터베이스 스키마를 구축하는데 있어 가장 좋은 방법은 SQL Server 2000에 포함되어 있는 SQL 쿼리 분석기를 사용하는 것입니다. You can run SQL 쿼리 분석기는 시작 메뉴에서 직접 실행시킬 수도 있고 SQL Server 엔터프라이즈 관리자에서 실행시킬 수도 있습니다. SQL 쿼리 분석기는 명령 프롬프트에서 isqlw 유틸리티를 통해서도 실행시킬 수 있습니다. 스크립트가 제대로 실행되기 위해서는 SQL dialect를 일부 변경하는 등의 약간의 추가 작업이 필요합니다. 또한, SQL 스크립트를 살펴보고 데이터 형식을 SQL Server와 호환되는 형식으로 변경해야 함을 기억하십시오. 아래 그림은 mysqldump를 통해 가져온 스크립트를 보여줍니다. 중요한 사항은 덤프 한 내용이 ASCII 스크립트 파일이라는 것입니다.
Microsoft SQL Server 2000의 SQL 쿼리 분석기는 다음과 같은 기능을 제공합니다:
- 질의 및 다른 SQL 스크립트를 생성하고 이를 SQL Server 데이터베이스에 대하여 실행합니다
- 사전에 정의된 스크립트를 이용하여 자주 사용되는 데이터베이스 객체를 신속하게 생성합니다
- 기존의 데이터베이스 객체를 신속하게 복사합니다
- 필요한 인수를 몰라도 저장 프로시저를 실행시킵니다
- 저장 프로시저를 디버깅 합니다
- 질의의 성능 문제를 디버깅 합니다
- 데이터베이스 내의 객체를 찾거나, 보거나 또는 작업할 수 있습니다
- 테이블에 행을 신속하게 삽입, 갱신, 또는 삭제합니다
- 자주 사용되는 질의에 대하여 키보드 바로가기를 생성합니다
- 자주 사용되는 명령을 Tools 메뉴에 추가합니다
어플리케이션의 확장 | |
ADO, OLE DB, 및 ODBC와 같은 데이터베이스 어플리케이션 프로그램 인터페이스(API)는 다양한 프로그램 언어를 사용하여 데이터베이스의 데이터를 처리할 수 있도록 해줍니다. 이러한 API는 Microsoft Visual C++, Microsoft Visual Basic, 또는 Microsoft Visual J++와 같은 개발 시스템에서 사용할 수 있습니다.
또한 어플리케이션의 규모가 커지는 경우에는 Microsoft SQL Server를 더 큰 컴퓨터로 옮기면 어플리케이션을 변경하지 않고 쉽게 확장할 수 있습니다. SQL Server는 하드웨어 구성을 자동으로 인식하여 메모리, I/O 및 프로세서를 최적으로 사용하도록 스스로 튜닝합니다.
인터넷을 통한 데이터 액세스
SQL Server는 어플리케이션을 웹 기반 인터페이스로 확장시키는 기능을 제공합니다. 이 기능은 언제 어디서나 어플리케이션을 액세스 할 수 있도록 해줍니다. SQL Server는 Microsoft Internet Information Services (IIS)와 통합되므로, IIS 웹 서버와 ActiveX Data Object (ADO) 및 Active Server Page (ASP)를 사용하면 SQL Server에 저장된 데이터에 대하여 빠르고 효율적인 사용자 인터페이스를 제공할 수 있습니다.
자세한 사항은 다음 웹 사이트를 참조하십시오: http://www.microsoft.com/korea/msdn/
보안 | |
MySQL은 서버에 대한 액세스를 고유의 방식으로 보호하는데, 클라이언트의 경우에는 소스에 대한 액세스를 제한하는 방식으로, IP 주소나 FQDN에 따라, 또는 '%' 같은 와일드 카드를 사용합니다. SQL Server는 운영체제에 의해 관리되거나 SQL Server 마스터 데이터베이스 내에 저장되는 사용자 계정을 필요로 합니다.
SQL Server는 역할을 통해 그룹 액세스 기능을 제공하는데, 이 기능을 사용하면 그룹에 속한 사용자에 대해 공통적인 액세스를 설정할 수 있으므로 데이터베이스 관리가 쉬워집니다.
다음 단계는 Microsoft SQL Server에서 엔터프라이즈 관리자 툴을 통해 서버 및 데이터베이스에 대한 액세스를 관리하는 방법을 보여줍니다.
- 엔터프라이즈 관리자를 열고, 보안 폴더로 이동한 후, 로그인 아이콘을 선택하고, 마우스를 오른쪽 클릭하여 새 로그인을 선택합니다.
SQL Server Login Properties 대화 상자가 나타나면 로그인 이름을 입력합니다. 로그인 이름은 MySQL에서의 사용자 이름과 유사합니다. SQL Server에서 검증되는 보안 수준을 제공하도록 SQL Server Authentication을 선택합니다.
- 기본 데이터베이스 및 언어를 지정합니다.
- Server Roles 탭에서 서버에 액세스 하는 권한을 지정합니다. 아래 그림에서 선택한 역할은 sysadmins (시스템 관리자)인데, MySQL의 root 권한에 해당합니다.
- 다음 탭은 Database Access이다. 이 등록정보 페이지에서는 SQL Server 내에 물리적으로 존재하는 모든 데이터베이스에 대한 액세스를 제공합니다. 데이터베이스를 선택된 후에 데이터베이스 역할을 설정합니다. 기본적으로 모든 사용자는 public 역할을 속하지만, 권한을 할당할 때 이 역할도 명시적으로 할당되어야 합니다. 아래 그림에서 추가로 선택된 역할은 db_owner인데, 이 역할은 전체 SQL Server나 다른 데이터베이스에 대해서는 아니지만, 선택한 데이터베이스에 대해서는 전권을 가집니다.
- OK를 클릭하면 암호를 물어봅니다.
새로운 로그인은 엔터프라이즈 관리자에서 볼 수 있습니다. 아래 그림에서는 'sa'라는 로그인 계정도 볼 수 있는데, 이 시스템 계정은 반드시 암호를 설정해야 합니다. 암호는 SQL Server의 설치 과정에서 지정해야 하며, 빈 암호를 할당하는 옵션이 있기는 하지만, 이 로그인에 대해서는 항상 암호가 할당되어야 합니다.
Microsoft SQL Server 로그인을 생성하는데 대한 자세한 사항은 SQL Server 온라인 설명서의 "보안 관리" 항목을 참조하십시오.
데이터베이스 권한
SQL Sever 2000 역시 데이터 정의 언어 (DDL) 및 데이터 조작 언어 (DML)에 대한 액세스를 제한 함으로써 데이터베이스를 보호하는 기능을 제공하는데, 이를 위한 단계는 로그인을 생성하는 것과 유사합니다. SQL Server 데이터베이스에 대한 권한을 설정하는 것은 엔터프라이즈 관리자를 통해 쉽게 수행될 수 있습니다.
데이터 조작 언어 권한
- 엔터프라이즈 관리자를 열고 데이터베이스 폴더에서 권한을 설정할 데이터베이스를 선택합니다. users 아이콘을 선택한 후 데이터베이스 사용자를 오른쪽 클릭하여 Properties를 선택합니다.
- permissions 단추를 클릭합니다.
- 권한 윈도우에서는 테이블, 뷰, 및 저장 프로시저와 같은 모든 데이터베이스 객체에 대하여 DML 문장을 설정할 수 있습니다. 권한이 선택된 후에는 OK를 클릭합니다.
데이터 정의 언어 권한
- 데이터베이스에 DDL 문에 대한 권한을 설정하려면, 해당 데이터베이스의 등록정보를 선택해야 합니다. 해당 데이터베이스를 오른쪽 클릭한 후 Properties를 선택합니다.
- 다음에 등록정보 윈도우에서 permissions 탭을 선택합니다.
- 적절한 권한을 선택한 후에 OK를 클릭합니다.
문제 해결 | |
- 사용자 계정의 정의
- MySQL 데이터의 덤프
- 명령 행 옵션의 최적화
사용자 계정의 정의
MySQL 서버를 시스템에 설치하면 root 사용자 계정이 모든 DBA 권한을 갖도록 기본 설정됩니다. MySQL 서버에는 ODBC를 통해 root 사용자로 로그온 해야 합니다. (참고: 기본적으로 root 사용자는 로컬 호스트에서만 로그온 할 수 있도록 설정되므로, DTS 마법사를 통해 root 사용자가 다른 IP 또는 DNS 주소를 통해서도 로그온 할 수 있도록 설정해야 합니다.)
MySQL 데이터의 덤프
아래 표는 MySQL 데이터를 덤프하고 mysqldump 텍스트 파일에서 데이터베이스를 다시 생성하는데 사용되는 문법을 설명합니다.
명령 |
설명 |
---|---|
mysqldump |
MySQL 데이터베이스의 스키마 및 데이터를 파일로 추출할 수 있도록 해주는 툴. |
mysql |
MySQL를 로드 하여 명령을 수행할 수 있도록 해줍니다. |
-u user name |
root MySQL 사용자 이름. 이 사용자는 모든 DBA 권한을 가져야 합니다. |
-ppassword |
MySQL 데이터베이스 서버 root 사용자의 암호. |
--opt |
테이블 덤프 속도를 최적화 하고 다시 로딩될 빠르게 수행되도록 덤프 파일을 씁니다. 이 옵션은-add-drop-table, --add-locks, --all, --extended-insert, --quick 및 -lock-tables 옵션을 설정한다. -opt에 의해 설정되는 옵션에 대한 설명은 "명령 행 옵션의 최적화" 부분을 참고하십시오. |
databasename |
텍스트 파일로 덤프 하고자 하는 정보를 포함하고 있는 데이터베이스 이름. |
< |
UNIX 및 Windows NT/2000에서 입력을 리디렉트 하는데 사용하는 심볼. |
filename.sql |
MySQL을 포함하는 파일 이름. |
MySQL 데이터를 덤프 하려면 다음 명령을 사용합니다:
#> mysqldump u user name ppassword opt databasename < filename.sql
mysqldump로 생성된 텍스트 파일로부터 데이터베이스를 다시 생성하려면 다음 명령을 사용합니다:
#> mysql u user name ppassword databasename < filename.sql
명령 행 옵션의 최적화
-opt를 사용하면 mysqldump 명령의 옵션을 자동적으로 설정합니다. MySQL에서 데이터를 덤프 하는 것과 관련된 더 자세한 사항은 "MySQL 데이터의 덤프" 부분을 참조하십시오. 다음 표는 -opt 명령에 대한 설명입니다:
명령 |
설명 |
---|---|
--add-drop-table |
각각의 CREATE table 문장 앞에 DROP table If EXISTS 문장을 추가합니다. |
--all |
MySQL에서 사용하는 생성 옵션을 모두 포함합니다. |
--extended-insert |
복수 행을 삽입하는 문장을 작성합니다. |
--quick |
질의를 버퍼링 하지 않고 표준 출력으로 바로 덤프합니다. 이 옵션을 사용하는 중에 mysqldump를 중단시키면 서버를 대기 상태로 만들 수 있으므로 다른 클라이언트에 영향을 미칠 수 있습니다. |
--lock-tables |
모든 테이블을 읽기 전용으로 잠급니다 |
MySQL의 오류 메시지 | |
오류 메시지
데이터 마이그레이션을 위해 DTS를 사용할 때 다음과 같은 오류 메시지가 나타날 수 있습니다:
오류 메시지 |
해법 |
---|---|
Cannot connect to MSQL Server <name>. Is there a MySQL server running on the system/port you are trying to connect to? |
이 오류는 다음과 같은 이유 때문에 발생할 수 있습니다: · 소스 포트는 기본적으로 3306으로 설정됩니다. 이 포트 번호는 MySQL이 통신하는 포트인데, 이 포트가 MySQL 상에 다르게 정의되어 있다면 MySQL ODBC 설정에서 포트 설정을 변경합니다. · 사용자가 MySQL 서버를 액세스 하는데 적절한 권한을 가지고 있는지 확인합니다. · 사용자 이름이 유효한지 확인합니다. |
There is already an object named 'tablename' in the database |
DTS 패키지를 실행하는 동안 테이블이 생성되었습니다. 패키지를 실행하는 동안 테이블이 삭제되거나 재생성 되도록 확인합니다. |
결론 | |
추가 정보 | |
Microsoft Developer Network (MSDN) 웹 사이트
Microsoft Universal Data Access 웹 사이트
이 문서에 포함된 정보는 문서를 발행할 때 논의된 문제들에 대한 Microsoft Corporation의 당시 관점을 나타냅니다. Microsoft는 변화하는 시장 환경에 대처해야 하므로 이를 Microsoft 측의 책임으로 해석해서는 안되며 발행일 이후 소개된 어떠한 정보에 대해서도 Microsoft는 그 정확성을 보증하지 않습니다.
이 문서는 오직 정보를 제공하기 위한 것입니다. MICROSOFT는 이 문서에서 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다.
해당 저작권법을 준수하는 것은 사용자의 책임입니다. 저작권의 권리와 별도로, 이 설명서의 어떠한 부분도 Microsoft의 명시적인 서면 승인 없이는 어떠한 형식이나 수단(전기적, 기계적, 복사기에 의한 복사, 디스크 복사 또는 다른 방법)으로 또는 어떠한 목적으로도 복제하거나, 검색 시스템에 저장 또는 도입하거나, 전송할 수 없습니다.
출처 : http://www.microsoft.com/
댓글