전송 작업
데이터베이스의 규모가 커지고 데이터베이스 시스템을 이용하는 영역이 넓어지면서 단순한 데이터의 전송이나 변환 작업뿐만 아니라 데이터베이스 서버 이전이나, 통합(Consolidation), 업그레이드(Upgrade) 및 마이그레이션(Migration) 등과 같은 데이터베이스 개체나 데이터베이스 전체를 이전하는 작업들을 자주 수행하게 됩니다. SSIS에는 데이터의 변환과 관련된 작업 외에 다양한 유지 관리 작업들이 포함되어 있습니다. 본 글에서는 이러한 유지 관리 작업들 중에서 서버나 인스턴스 간 또는 개별 데이터베이스 간에 데이터베이스 오브젝트를 전송하는 작업들에 대해 설명하겠습니다.
SSIS에는 총 6개의 기본 전송 작업이 포함되어 있습니다.
1. master 저장 프로시저 전송 작업 – 원본 서버(또는 인스턴스)의 master DB에 있는 사용자 저장 프로시저를 다른 서버(또는 인스턴스)의 master DB로 전송하는 작업입니다.
2. SQL Server 개체 전송 작업 – 원본 서버에서 데이터베이스 개체를 대상 서버로 전송하는 작업입니다. 데이터베이스 개체에는 테이블, 저장 프로시저, 뷰, 사용자 정의 함수 등 모든 개체가 다 포함이 됩니다.
3. 데이터베이스 전송 작업 – 원본 서버의 데이터베이스 전체를 다른 서버로 전송하는 작업입니다.
4. 로그인 전송 작업 – 원본 서버의 로그인을 대상 서버로 전송하는 작업입니다. 로그인 전송 작업으로 전송된 로그인은 기본적으로 사용 안 함 상태이며 원본 암호와는 다른 임의의 암호가 할당됩니다.
5. 작업 전송 작업 – 원본 서버의 SQL Agent에 있는 작업(Job)을 대상 서버로 전송하는 작업입니다.
6. 오류 메시지 전송 작업 – 원본 서버에 있는 사용자 정의 오류 메시지를 대상 서버로 전송하는 작업입니다.
전송 작업에서 이용되는 원본 및 대상 서버의 연결은 다른 작업들과는 달리 SMOSever 연결을 이용합니다. SMO(SQL Management Objects) 연결은 서로 다른 서버 간 혹은 인스턴스 간 데이터베이스 개체를 전송하는데 이용되는 연결이며, OLEDB 연결이나 ADO.NET 연결과는 달리 특정 데이터베이스를 지정하지 않고 대상 서버만을 지정합니다.
SMOServer는 연결 관리자에서 마우스 오른쪽 버튼을 클릭한 후 나오는 메뉴에서 새 연결(W)을 선택한 후, SMOServer를 선택하여 추가하면 됩니다.
[참고] 정확한 표현은 원본 서버가 아닌 원본 인스턴스, 대상 서버가 아닌 대상 인스턴스가 정확한 표현입니다. 동일 서버에 두 개 이상의 인스턴스가 존재할 수 있으며, 이 인스턴스 간 전송 작업도 수행하는 경우도 있습니다. 하지만, 여기서는 이해를 명확히 하기 위해 원본 인스턴스 대신 원본 서버, 대상 인스턴스 대신 대상 서버로 명명하겠습니다.
|
master 저장 프로시저 전송 작업
원본 서버의 master DB에 있는 사용자 저장 프로시저를 대상 서버로 옮기는 작업 개체입니다. 작업 개체의 이름과 같이 오직 master DB에 있는 사용자 저장 프로시저만 대상이 되며, 해당 프로시저의 소유자가 dbo 인 프로시저만 옮길 수 있습니다.
이 작업을 수행하기 위해서는 원본 서버의 master DB에 있는 사용자 저장 프로시저를 볼 수 있는 권한이 있어야 하며, 또한 대상 서버의 sysadmin 서버 역할에 포함된 멤버이거나 master DB에 저장 프로시저를 만들 수 있는 권한이 있어야 합니다.
Ÿ 연결
SourceConnection – 원본 서버에 대한 연결을 지정합니다.
DestinationConnection – 대상 서버에 대한 연결을 지정합니다.
Ÿ 저장 프로시저
IfObjectExists – 대상 위치에 이미 동일한 저장 프로시저가 있는 경우 처리할 방법을 지정합니다.
작업을 실패하도록 하거나(FailTask) 덮어 쓰기(Overwrite), 건너 뛰기(Skip)로 지정할 수 있습니다.
TransferAllStoredProcedures – 저장 프로시저 모두를 전송할 것인지, 일부만 할 것인지를 지정합니다.
StoredProceduresList – 모든 저장 프로시저를 전송하지 않는 경우, 전송할 저장 프로시저를 지정합니다.
master 저장 프로시저 전송 작업은 master에 있는 사용자 저장 프로시저 만을 전송하기 위한 특화된 작업이며 아래 부분에서 설명할 SQL Server 개체 전송 작업에서 master DB를 지정하고 저장 프로시저를 전송하는 방식과 동일한 기능을 수행합니다. master 저장 프로시저는 SQL 2000 DTS에서도 있었던 기능이지만, SQL Server 개체 전송 작업은 SQL 2005 SSIS에서 새로 추가된 기능입니다. 필자의 생각으로는, 이 작업 역시 ActiveX 스크립트 작업과 같이 이전 버전과의 호환성을 유지하기 위한 목적으로 추가시켜 놓은 작업인 것 같습니다.
[참고] BIDS 내의 도구 상자에서는 master 저장 프로시저 전송 작업이라 되어 있으며, 온라인 도움말에서는 마스터 저장 프로시저 전송 작업으로 번역 되어 있습니다.
|
SQL Server 개체 전송 작업
SQL Server 개체 전송 작업은 다른 전송 작업들과는 달리 SQL 2005 SSIS에서 새롭게 추가된 전송 작업 개체 입니다. 원본 서버에 있는 데이터베이스 개체를 대상 서버로 전송할 때 이용하는 작업입니다. 여기서 말하는 데이터베이스 개체란, 테이블이나 뷰, 저장 프로시저, 사용자 정의 함수, 기본값 등 하나의 데이터베이스에 포함된 모든 개체를 말하며 이 외에도 인덱스나 트리거, Primary Key 등과 같은 테이블 옵션 등을 지정하여 전송할 수 있습니다.
SQL Server 2005에는 파티션 함수나 스키마, 어셈블리 등과 같이 새로운 데이터베이스 개체가 추가되어 있습니다. 따라서 원본 서버 혹은 대상 서버의 버전에 따라 옮길 수 있는 개체의 범위가 다를 수 있습니다. 각 버전 별 전송 가능 개체는 다음 표를 참고하시면 됩니다.
개체 |
버전 |
테이블 |
SQL Server 2000 또는 SQL Server 2005 |
뷰 |
SQL Server 2000 또는 SQL Server 2005 |
저장 프로시저 |
SQL Server 2000 또는 SQL Server 2005 |
사용자 정의 함수 |
SQL Server 2000 또는 SQL Server 2005 |
기본값 |
SQL Server 2000 또는 SQL Server 2005 |
사용자 정의 데이터 형식 |
SQL Server 2000 또는 SQL Server 2005 |
파티션 함수 |
SQL Server 2005 에만 해당 |
파티션 구성표 |
SQL Server 2005 에만 해당 |
스키마 |
SQL Server 2005 에만 해당 |
어셈블리 |
SQL Server 2005 에만 해당 |
사용자 정의 집계 |
SQL Server 2005 에만 해당 |
사용자 정의 유형 |
SQL Server 2005 에만 해당 |
XML 스키마 컬렉션 |
SQL Server 2005 에만 해당 |
Ÿ 대상
DropObjectsFirst – 개체를 복사하기 전에 대상 서버에 있는 개체를 삭제할 지의 여부를 설정합니다.
IncludeExtendedProperties – 개체를 전송할 때 확장 속성을 포함할 지를 설정합니다.
CopyData – 테이블과 같은 개체를 전송할 때 데이터도 함께 전송할 지를 설정합니다.
ExistingData – 데이터를 전송하는 방법을 설정합니다. Replace로 설정을 하면 대상 테이블의 데이터를 덮어 쓰며, Append로 설정하면 기존 데이터에 추가하게 됩니다.
CopySchema – 개체를 전송할 때 스키마도 포함시킬지를 설정합니다.
UseCollation – 개체를 전송할 때 원본에서 지정한 정렬 방식을 그대로 전송할 지를 설정합니다.
IncludeDependentObjects – 전송할 개체에 종속된 다른 개체들도 함께 전송할 지를 설정합니다.
Ÿ 대상 복사 옵션
CopyAllObjects – 지정한 원본 서버의 데이터베이스에 있는 모든 데이터베이스 개체를 전송할 지를 설정합니다.
ObjectsToCopy – 세부적으로 전송할 개체를 선택합니다.
Ÿ 보안
CopyDatabaseUsers – 데이터베이스 사용자의 전송 여부를 설정합니다.
CopyDatabaseRoles – 데이터베이스 역할의 전송 여부를 설정합니다.
CopySqlServerLogins – 데이터베이스의 로그인의 전송 여부를 설정합니다.
CopyObjectLevelPermissions – 개체 수준 사용자 권한의 전송 여부를 설정합니다.
Ÿ 연결
SourceConnection – 원본 서버에 대한 연결을 지정합니다.
SourceDatabase – 전송할 개체가 포함된 원본 데이터베이스를 지정합니다.
DestinationConnection – 대상 서버에 대한 연결을 지정합니다.
DestinationDatabase – 대상 데이터베이스를 지정합니다.
Ÿ 테이블 옵션
CopyIndexes –인덱스를 전송에 포함시킬지를 설정합니다.
CopyTriggers – 트리거를 전송에 포함시킬지를 설정합니다.
CopyFullTextIndexes – 전체 텍스트 인덱스를 전송에 포함시킬지를 설정합니다.
CopyPrimaryKeys – 기본 키를 전송에 포함시킬지를 설정합니다.
CopyForeignKeys – 외래 키를 전송에 포함시킬지를 설정합니다.
GenerateScriptsInUnicode – 유니코드 형식으로 개체 스크립트를 생성할 지를 설정합니다.
데이터베이스 전송 작업
데이터베이스 전송 작업은 SQL Server 개체 전송 작업과는 달리 데이터베이스 전체를 대상으로 복사 또는 이전하는 작업입니다. 이 작업은 동일 인스턴스 내에서 데이터베이스를 복사하는 데에도 이용할 수 있으며, SQL Server 2000에서 2005로도 가능합니다.
데이터베이스 전송 작업은 설정 방법에 따라 온라인과 오프라인으로 전송할 수 있습니다. 온라인으로 설정하게 되면, 데이터베이스는 온라인 상태에서 전송 작업이 수행되며 SMO(SQL Management Object)를 이용하여 데이터 및 개체가 전송됩니다. 오프라인으로 설정하게 되면, DB를 분리(Detach) 한 후 해당 데이터베이스의 데이터 파일 및 로그 파일을 대상 위치로 복사하고 다시 연결(Attach)하는 방식으로 전송합니다.
오프라인으로 전송 작업을 수행하기 위해서는 원본 서버 및 대상 서버에 네트워크 파일 공유를 지정해야 합니다.
Ÿ 대상 데이터베이스
DestinationDatabaseName – 대상 서버에 전송될 데이터베이스의 이름을 지정합니다.
DestinationDatabaseFiles – 대상 서버에 전송될 데이터베이스의 파일을 지정합니다.
DestinationOverwrite – 대상 서버에 있는 데이터베이스를 덮어 쓸지를 설정합니다.
Ÿ 연결
SourceConnection – 원본 서버에 대한 연결을 지정합니다.
DestinationConnection – 대상 서버에 대한 연결을 지정합니다.
Ÿ 원본 데이터베이스
Action – 원본 서버에 있는 데이터베이스를 대상 서버로 복사(Copy) 또는 이동(Move)할 지를 설정합니다.
Method – 원본 서버의 데이터베이스가 온라인 상태인 채로 전송 작업을 수행할 지, 오프라인 상태로 수행할 지를 설정합니다. 온라인 상태로 전송 작업을 수행하기 위해서는 패키지를 실행시키는 사용자가 sysadmin 고정 서버 역할의 멤버이거나 전송할 데이터베이스의 소유자(dbo)이어야 합니다. 오프라인 상태로 전송을 하기 위해서는 sysadmin 고정 서버 역할의 멤버이면 됩니다.
SourceDatabaseName – 원본 서버에서 전송할 데이터베이스의 이름을 지정합니다.
SourceDatabaseFiles – 원본 서버에서 전송할 데이터베이스의 파일을 지정합니다.
ReattachSourceDatabase – 전송 작업 중 오류가 발생되었을 때 원본 데이터베이스를 다시 연결(Attach)할 지를 설정합니다.
로그인 전송 작업
로그인 전송 작업은 원본 서버에서 대상 서버로 로그인 정보를 전송하는데 이용하는 작업 개체 입니다. SQL 2000 DTS에도 로그인 전송 작업이 있었으며, 이 작업을 이용하여 서버 간 이전 작업 시 로그인 정보를 복사하는 도구로 많이 사용 되었습니다.
SQL 2005 SSIS에서는 기존 보다 더욱 다양한 옵션들이 추가가 되었지만, 또한 기존 버전과 비교했을 때 보다 좀 더 제약 사항이 많아진 부분도 있습니다.
SSIS의 로그인 전송 작업에서는 모든 로그인을 전송하거나 특정 로그인 만을 지정할 수 있습니다. 또한 DTS에서와 마찬가지로 특정 데이터베이스에 엑세스 할 수 있는 로그인 정보 만 전송하도록 지정할 수도 있으며, 로그인에 연결된 sid(보안 ID)를 같이 복사할 수도 있습니다. 이러한 점은, SQL Server 2000에서 DB를 복원하고 로그인 정보를 복사한 후, 로그인의 sid를 수동으로 맞춰줘야 하는 작업을 줄여줄 수 있습니다. 또한 복사할 로그인이 대상 서버에 있는 경우, 덮어쓸지, 건너뛸지 등의 옵션을 지정할 수 있습니다.
하지만, 이러한 다양한 개선점 외에 몇 가지 제약 사항이 추가되었습니다. SSIS에서 로그인 전송 작업을 수행하게 되면 대상으로 전송된 로그인은 기본적으로 비활성화 되며, DTS에서와는 달리 임의의 암호가 할당됩니다. 로그인 정보를 전송한 후 관리자는 이 로그인을 활성화 하는 작업과 다시 암호를 설정하는 작업을 수행해야 합니다.
Ÿ 로그인
LoginsToTransfer – 원본 서버에서 대상 서버로 전송할 유형을 선택합니다.
AllLogins – 원본 서버의 모든 로그인 정보를 대상 서버로 전송합니다.
SelectedLogins – 원본 서버에서 선택한 로그인
AllLoginsFromSelectedDatabases – 아래에 있는 DatabaseList에 지정된 데이터베이스의 모든 로그인 정보를 대상 서버로 전송합니다.
LoginsList – SelectedLogins로 선택한 경우, 전송할 로그인을 선택합니다.
DatabaseList – AllLoginsFromSelectedDatabases로 선택한 경우, 전송할 로그인의 데이터베이스를 선택합니다.
Ÿ 연결
SourceConnection – 원본 서버에 대한 연결을 지정합니다.
DestinationConnection – 대상 서버에 대한 연결을 지정합니다.
Ÿ 옵션
IfObjectExists – 대상 서버에 전송할 로그인이 있는 경우, 이에 대한 처리 방법을 설정합니다.
FailTask – 동일한 로그인이 있는 경우, 로그인 전송 작업을 실패합니다.
Overwrite – 대상 서버의 로그인을 덮어씁니다.
Skip – 대상 서버의 로그인을 덮어 쓰지 않고, 그냥 건너뜁니다.
CopySids – 로그인에 연결된 sid(보안 ID)를 같이 넘길지를 설정합니다.
SQL 서버의 버전에 따른 차이점은 다음 표를 참고하시기 바랍니다.
작업 구분 |
패스워드 |
비활성화 여부 |
서버 역할 정보 |
2000의 로그인을 2000으로 복사 |
임의 할당 |
X |
복사 안됨 |
2000의 로그인을 2005로 복사 |
임의 할당 |
비활성화 |
복사 |
2005의 로그인을 2000으로 복사 |
임의 할당 |
X |
복사 안됨 |
2005의 로그인을 2005로 복사 |
임의 할당 |
비활성화 |
복사 |
[참고] 다음 링크에서 SQL 2005에서 로그인 정보 및 암호를 같이 전송하는 방법이 있습니다. 이를 참고하시기 바랍니다. http://support.microsoft.com/kb/918992/en-us
|
작업 전송 작업
원본 서버의 SQL Server 에이전트에 등록된 작업을 대상 서버로 전송하는 작업 개체입니다. 개체 전송 작업이나 로그인 전송 작업과 같이 전체 작업을 대상으로 하거나 특정 작업만 전송하도록 설정할 수가 있으며, 대상 서버에 동일한 이름의 작업이 있는 경우, 덮어 쓰거나 건너뛰는 등의 설정을 하는 것은 동일합니다.
다른 작업들과는 달리 SQL Server 2000과 SQL Server 2005간 기능 차이 없이 전송할 수 있습니다.
Ÿ 연결
SourceConnection – 원본 서버에 대한 연결을 지정합니다.
DestinationConnection – 대상 서버에 대한 연결을 지정합니다.
Ÿ 옵션
IfObjectExists – 대상 서버에 전송할 작업이 있는 경우, 이에 대한 처리 방법을 설정합니다.
FailTask – 동일한 작업이 있는 경우, 작업 전송 작업을 실패합니다.
Overwrite – 대상 서버의 작업을 덮어씁니다.
Skip – 대상 서버의 작업을 덮어 쓰지 않고, 그냥 건너뜁니다.
EnableJobsAtDestination – 대상 서버로 작업을 전송한 후, 해당 작업을 활성화 여부를 설정합니다.
Ÿ 작업
TransferAllJobs – 모든 작업을 전송할 지 여부를 설정합니다.
JobsList – 모든 작업 전송이 아닌 경우, 전송할 작업을 선택합니다.
오류 메시지 전송 작업
원본 서버에 있는 사용자 정의 오류 메시지를 대상 서버로 전송하는 작업 개체입니다. 사용자 정의 오류 메시지는 message_id가 50000 이상인 메시지이며, SQL Server 2000의 경우 master DB의 sysmessages 테이블에서, SQL Server 2005에서는 sys.messages 관리 뷰에서 확인하실 수 있습니다.
이 작업 역시 로그인 전송 작업이나 작업 전송 작업과 유사한 옵션으로 구성되어 있으며, 특정 언어 메시지만을 전송할 수 있는 옵션이 있습니다.
Ÿ 옵션
IfObjectExists – 대상 서버에 전송할 오류 메시지가 있는 경우, 이에 대한 처리 방법을 설정합니다.
FailTask – 동일한 메시지가 있는 경우, 오류 메시지 전송 작업을 실패합니다.
Overwrite – 대상 서버의 메시지을 덮어씁니다.
Skip – 대상 서버의 메시지를 덮어 쓰지 않고, 그냥 건너뜁니다.
TransferAllErrorMessages – 대상 서버로 모든 메시지를 전송할 지 여부를 설정합니다
ErrorMessageList – 모든 메시지 전송이 아닌 경우, 전송할 메시지를 선택합니다.
ErrorMessageLanguagesList – 대상 서버로 전송할 다른 언어 버전의 메시지를 선택합니다. 다른 언어의 메시지를 전송하기 위해서는 대상 서버에 us_english(language_id : 1033)인 메시지가 있어야 합니다.
Ÿ 연결
SourceConnection – 원본 서버에 대한 연결을 지정합니다.
DestinationConnection – 대상 서버에 대한 연결을 지정합니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
기본 강좌 12 - WMI 이벤트 감시자 작업 (0) | 2009.06.20 |
---|---|
기본 강좌 11 - WMI 데이터 판독기 작업 (0) | 2009.06.20 |
기본 강좌 9 - DTS 패키지를 업그레이드 및 마이그레이션 (2) (0) | 2009.06.20 |
기본 강좌 8 - DTS 패키지를 업그레이드 및 마이그레이션 (1) (0) | 2009.06.20 |
기본 강좌 7 - FTP 작업 (0) | 2009.06.20 |