달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
굉장히 간단한 방법으로 시스템 데이터베이스를 이동할 수 있다.
물론 서비스 중에는 안된다.

원본 : http://www.sp-configure.com/how-to-change-path-of-system-databases-on-sql-2005/

Master

  1. Open SQL Server Configuration Manager.
  2. Right Click on SQL Server Service and select properties.
  3. On SQL Server Proterties window select Advanced tab.
  4. Select Startup Parameters
  5. Edit the startup parameters to reflect the new path for –d and -l parameters.
  6. Stop SQL Service.
  7. Move the database files to their new locations.
  8. Start SQL Service.

Model

  1. Run the following query:
    USE master;
    GO
    alter database model MODIFY FILE (NAME = modeldev,FILENAME=’NEW PATH’);
    go
    alter database model MODIFY FILE (NAME = modellog,FILENAME=’NEW PATH’);
    go
  2. Stop SQL Service.
  3. Move the database files to their new locations.
  4. Start SQL Service.

Msdb

  1. Run the following query:
    USE master;
    GO
    alter database msdb MODIFY FILE (NAME = MSDBData,FILENAME=’NEW PATH’);
    go
    alter database msdb MODIFY FILE (NAME = MSDBLog,FILENAME=’NEW PATH’);
    go
  2. Stop SQL Service.
  3. Move the database files to their new locations.
  4. Start SQL Service.

Tempdb

  1. Run the following query:
    USE master;
    GO
    alter database tempdb MODIFY FILE (NAME = tempdev,FILENAME=’NEW PATH’);
    GO
    alter database tempdb MODIFY FILE (NAME = templog,FILENAME=’NEW PATH’);
    GO
  2. Stop SQL Service.
  3. Delete the database files as they will be recreated on new locations.
  4. Start SQL Service.

mssqlsystemresource

  1. Stop SQL Service.
  2. Start the services using NET START MSSQLSERVER /f /T3608 (*MSSQLSERVER is for default instance, if you have installed named instance then you need to use NET START MSSQL$Instancename /f /T3608)
  3. Run the following query from sqlcmd
    USE master;
    GO
    alter database mssqlsystemresource MODIFY FILE (NAME = data,FILENAME=’NEW PATH\mssqlsystemresource.mdf’);
    go
    alter database mssqlsystemresource MODIFY FILE (NAME = log,FILENAME=’NEW PATH\mssqlsystemresource.ldf’);
    go
    alter database mssqlsystemresource set READ_ONLY;
    go
  4. Stop SQL Service.
  5. Move the database files to their new locations.
  6. Start SQL Service.
:
Posted by Elick
2009. 6. 30. 14:33

MSSQL Install 과정 Work/SQL Server2009. 6. 30. 14:33


MSSQL 2000 (Development Edition) 설치
 1. autorun.exe 실행
 2. [MSSQL 2000 구성 요소] 클릭
 3. [데이터베이스 서버 설치] 클릭
 4. Microsoft SQL Server 설치 마법사 : [다음] 클릭
 5. 컴퓨터 이름 선택 후 [다음] 클릭 (로컬 컴퓨터)
 6. 설치 선택 에서 옷변 선택 후 [다음] 클릭 (새 SQL Server 인스턴스를 만들거나 클라이언트 도구 설치)
 7. 사용자 정보 입력 후 [다음] 클릭
 8. 소프트웨어 사용권 계약 [예] 클릭
 9. 설치 정의 유형 중 선택 후 [다음] 클릭 (서버와 클라이언트 도구)
 10. 인스턴스 이름 선택 후 [다음] 클릭
 11. 설치 유형 선택 후 [다음] 클릭 (표준)
 12. 서비스 계정 에서 선택 후 [다음] 클릭 (각 서비스에 대해 동일한 계정 사용. SQL Server 서비스 자동 시작, 로컬 시스템 계정)
 13. 인증 모두 선택 후 [다음] 클릭 (혼합 모드(Windows 인증과 SQL Server 인증)
 14. 파일 복사 시작 [다음] 클릭
 15. 설치 시작~
 16. 설치 완료 [완료] 클릭

MSSQL 2005 (Development Edition) 설치
 1. setup.exe 실행
 2. 최종 사용자 사용권 계약 [동의함] 선택 [다음] 클릭
 3. 필수 구성 요소를 설치하는 중 [설치] 클릭  [다음] 클릭
 4. Microsoft SQL Server 설치 마법사 시작  [다음] 클릭
 5. 시스템 구성 검사  [다음] 클릭
 6. 등록정보  [다음] 클릭
 7. 설치할 구성 요소 모두 선택 후 [다음] 클릭
 8. 인스턴스 이름 선택 후  [다음] 클릭
 9. 서비스 계정 (기본 제공 시스템 계정 [로컬 시스템] 선택) 적당히 선택 후  [다음] 클릭
 10. 인증 모드 (혼함 모드 (Windows 인증 및 SQL Server 인증)  [다음] 클릭
 11. 데이터 정렬 설정 (Default) [다음] 클릭
 12. 오류 및 사용 보고서 설정 (Default) [다음] 클릭
 13. 설치 준비 완료 [설치] 클릭
 14. 설치 진행률  모두 설치 된 후 [다음] 클릭
 15. Microsoft SQL Server 2005 설치 완료 [마침] 클릭

MSSQL 2008 (Development Edition) 설치
 1. setup.exe 실행
 2. SQL Server 설치 센터 [설치] 클릭
 3. [새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가] 클릭
 4. 설치 지원 규칙 [확인] 클릭
 5. 제품키 입력 후 [다음] 클릭
 6. 사용 조건 (동의함) [다음] 클릭
 7. 설치 지원 파일 (.NET framwork 나 기타 필요한 설치 지원 파일을 설치하라고 함) [설치] 클릭
 8. 아래의 Error 발생
  TITLE: Microsoft SQL Server 2008 설치
  ------------------------------
  다음 오류가 발생했습니다.
  Windows Installer 파일 'E:\ko_sql_server_2008_developer_x86_x64_ia64_dvd_x14-88859\x86\setup\sql_engine_core_inst_msi\sql_engine_core_inst.msi'을(를) 열 수 없습니다.
  Windows Installer 오류 메시지: 시스템이 지정된 장치나 파일을 열 수 없습니다.
  .
  실패한 동작을 다시 시도하려면 '다시 시도'를 클릭하고 이 동작을 취소하고 설치를 계속하려면 '취소'를 클릭하십시오.
  For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=10.0.1600.22&EvtType=0x5D9A8C61
  ------------------------------
  BUTTONS:
  &Retry
  Cancel
  ------------------------------
 9. 위의 url 의 내용
  Explanation
  An attempt was made to install (or update) SQL Server Native Client on a computer where SQL Server Native Client is already installed, and where the existing installation was from an MSI file that was not named sqlncli.msi.
  User Action
  To resolve this error, uninstall the existing version of SQL Server Native Client. To prevent this error, do not install SQL Server Native Client from an MSI file that is not named sqlncli.msi.
 10. Uninstall the existing version of SQL Server Native Client.
 11. 다시 설치 실패
 12. 설치파일을 Demon으로 CD롬으로 인식하게 한뒤 실행 (에러 발생단계 넘어감)
 13. 설치 지원 규칙 [다음] 클릭
 14. 기능 선택 (모두 선택) [다음] 클릭
 15. 인스턴스 구성 (인스턴스 이름 결정) [다음] 클릭
 16. 디스크 공간 요구 사항 [다음] 클릭
 17. 서버 구성 (서비스 계정 결정) [다음] 클릭
 18. 데이터베이스 엔진 구성 (인증 계정 결정) [다음] 클릭
 19. Analysis Services 구성 (인증 계정 결정) [다음] 클릭
 20. Reporting Service 구성 (기본 모드 구성)  [다음] 클릭
 21. 오류 및 사용 보고 (모두 선택하지 않음)  [다음] 클릭
 22. 설치 규칙 [다음] 클릭
 23. 설치 준비 [다음] 클릭
 24. 설치 진행률 [다음] 클릭
 25. 완료 [닫기] 클릭


위의 방식으로 개인 PC (Windows XP Professional Edition)에 2000, 2005, 2008 각각 3개, 모두 9개의 Instanace를 설치했고, 문제없이 작동함.

Service pack update 시 2000 의 경우는 각각 3번에 걸쳐서 update를 해야 했으나 2005 부터는 update를 한번 할 때 동시 적용이 가능.
위에서 SQL Server Native Client를 제거한것 때문에 2005의 경우 인증에서 넘어가지 못했으나, SQL Server Native Client를 설치 후 문제 없이 update를 진행할 수 있었음.
SQL Server Native Client를 따로 설치하는 방법을 몰라서 MSSQL 2005 4번째 Instance를 설치했음. Instance 설치 시 SQL Server Native Client가 함께 설치되는 것 확인 했음.

:
Posted by Elick
2009. 6. 30. 14:32

MSSQL Instance 정보 Work/SQL Server2009. 6. 30. 14:32

SERVERPROPERTY라는 함수... 쓸만했다.
MSSQL 여러 대를 관리할 때, OPENQUERY 와 EXEC 을 함께 사용해서 정보 취합을 하는 것이 편했던 기억이 난다.

SELECT
 SERVERPROPERTY('ProductVersion') ProductVersion
 , SERVERPROPERTY('ProductLevel') ProductLevel
 , SERVERPROPERTY('Edition') Edition



MSSQL2005 이상인 경우는 아래 쿼리도 유용할듯...

SELECT
 SERVERPROPERTY('ProductVersion') ProductVersion
 , SERVERPROPERTY('ProductLevel') ProductLevel
 , SERVERPROPERTY('Edition') Edition
 , cpu_count/hyperthread_ratio CpuCount
 , cpu_count CoreCount
 , (physical_memory_in_bytes/1024/1024) PhysicalMemoryMB
FROM master.sys.dm_os_sys_info
:
Posted by Elick
2009. 6. 18. 11:07

MSSQL Install 및 Service pack update Work/SQL Server2009. 6. 18. 11:07

MSSQL 2000 (Development Edition) 설치
 1. autorun.exe 실행
 2. [MSSQL 2000 구성 요소] 클릭
 3. [데이터베이스 서버 설치] 클릭
 4. Microsoft SQL Server 설치 마법사 : [다음] 클릭
 5. 컴퓨터 이름 선택 후 [다음] 클릭 (로컬 컴퓨터)
 6. 설치 선택 에서 옷변 선택 후 [다음] 클릭 (새 SQL Server 인스턴스를 만들거나 클라이언트 도구 설치)
 7. 사용자 정보 입력 후 [다음] 클릭
 8. 소프트웨어 사용권 계약 [예] 클릭
 9. 설치 정의 유형 중 선택 후 [다음] 클릭 (서버와 클라이언트 도구)
 10. 인스턴스 이름 선택 후 [다음] 클릭
 11. 설치 유형 선택 후 [다음] 클릭 (표준)
 12. 서비스 계정 에서 선택 후 [다음] 클릭 (각 서비스에 대해 동일한 계정 사용. SQL Server 서비스 자동 시작, 로컬 시스템 계정)
 13. 인증 모두 선택 후 [다음] 클릭 (혼합 모드(Windows 인증과 SQL Server 인증)
 14. 파일 복사 시작 [다음] 클릭
 15. 설치 시작~
 16. 설치 완료 [완료] 클릭

MSSQL 2005 (Development Edition) 설치
 1. setup.exe 실행
 2. 최종 사용자 사용권 계약 [동의함] 선택 [다음] 클릭
 3. 필수 구성 요소를 설치하는 중 [설치] 클릭  [다음] 클릭
 4. Microsoft SQL Server 설치 마법사 시작  [다음] 클릭
 5. 시스템 구성 검사  [다음] 클릭
 6. 등록정보  [다음] 클릭
 7. 설치할 구성 요소 모두 선택 후 [다음] 클릭
 8. 인스턴스 이름 선택 후  [다음] 클릭
 9. 서비스 계정 (기본 제공 시스템 계정 [로컬 시스템] 선택) 적당히 선택 후  [다음] 클릭
 10. 인증 모드 (혼함 모드 (Windows 인증 및 SQL Server 인증)  [다음] 클릭
 11. 데이터 정렬 설정 (Default) [다음] 클릭
 12. 오류 및 사용 보고서 설정 (Default) [다음] 클릭
 13. 설치 준비 완료 [설치] 클릭
 14. 설치 진행률  모두 설치 된 후 [다음] 클릭
 15. Microsoft SQL Server 2005 설치 완료 [마침] 클릭

MSSQL 2008 (Development Edition) 설치
 1. setup.exe 실행
 2. SQL Server 설치 센터 [설치] 클릭
 3. [새 SQL Server 독립 실행형 설치 또는 기존 설치에 기능 추가] 클릭
 4. 설치 지원 규칙 [확인] 클릭
 5. 제품키 입력 후 [다음] 클릭
 6. 사용 조건 (동의함) [다음] 클릭
 7. 설치 지원 파일 (.NET framwork 나 기타 필요한 설치 지원 파일을 설치하라고 함) [설치] 클릭
 8. 아래의 Error 발생
  TITLE: Microsoft SQL Server 2008 설치
  ------------------------------
  다음 오류가 발생했습니다.
  Windows Installer 파일 'E:\ko_sql_server_2008_developer_x86_x64_ia64_dvd_x14-88859\x86\setup\sql_engine_core_inst_msi\sql_engine_core_inst.msi'을(를) 열 수 없습니다.
  Windows Installer 오류 메시지: 시스템이 지정된 장치나 파일을 열 수 없습니다.
  .
  실패한 동작을 다시 시도하려면 '다시 시도'를 클릭하고 이 동작을 취소하고 설치를 계속하려면 '취소'를 클릭하십시오.
  For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=10.0.1600.22&EvtType=0x5D9A8C61
  ------------------------------
  BUTTONS:
  &Retry
  Cancel
  ------------------------------
 9. 위의 url 의 내용
  Explanation
  An attempt was made to install (or update) SQL Server Native Client on a computer where SQL Server Native Client is already installed, and where the existing installation was from an MSI file that was not named sqlncli.msi.
  User Action
  To resolve this error, uninstall the existing version of SQL Server Native Client. To prevent this error, do not install SQL Server Native Client from an MSI file that is not named sqlncli.msi.
 10. Uninstall the existing version of SQL Server Native Client.
 11. 다시 설치 실패
 12. 설치파일을 Demon으로 CD롬으로 인식하게 한뒤 실행 (에러 발생단계 넘어감)
 13. 설치 지원 규칙 [다음] 클릭
 14. 기능 선택 (모두 선택) [다음] 클릭
 15. 인스턴스 구성 (인스턴스 이름 결정) [다음] 클릭
 16. 디스크 공간 요구 사항 [다음] 클릭
 17. 서버 구성 (서비스 계정 결정) [다음] 클릭
 18. 데이터베이스 엔진 구성 (인증 계정 결정) [다음] 클릭
 19. Analysis Services 구성 (인증 계정 결정) [다음] 클릭
 20. Reporting Service 구성 (기본 모드 구성)  [다음] 클릭
 21. 오류 및 사용 보고 (모두 선택하지 않음)  [다음] 클릭
 22. 설치 규칙 [다음] 클릭
 23. 설치 준비 [다음] 클릭
 24. 설치 진행률 [다음] 클릭
 25. 완료 [닫기] 클릭


위의 방식으로 개인 PC (Windows XP Professional Edition)에 2000, 2005, 2008 각각 3개, 모두 9개의 Instanace를 설치했고, 문제없이 작동함.

Service pack update 시 2000 의 경우는 각각 3번에 걸쳐서 update를 해야 했으나 2005 부터는 update를 한번 할 때 동시 적용이 가능.
위에서 SQL Server Native Client를 제거한것 때문에 2005의 경우 인증에서 넘어가지 못했으나, SQL Server Native Client를 설치 후 문제 없이 update를 진행할 수 있었음.
SQL Server Native Client를 따로 설치하는 방법을 몰라서 MSSQL 2005 4번째 Instance를 설치했음. Instance 설치 시 SQL Server Native Client가 함께 설치되는 것 확인 했음.

:
Posted by Elick
2009. 6. 2. 02:39

tempdb 위치 이동 Work/SQL Server2009. 6. 2. 02:39

tempdb의 사용량이 많은 경우 mdf, ldf와 물리적으로 다른 위치(별도의 Disk)로 tempdb를 이동하면 성능에 도움이 된다.
혹은 tempdb를 크게 사용해야 하는 경우 별도의 Disk로 이동해서 작업을 해야만 하는 경우가 존재할 수 있다.

이동 방법은 나중에 찾아보려할 때 사라지면 곤란하므로 sqlleader.com 등에서 소개한 것을 퍼왔다.


1. tempdb 정보 확인

SELECT name, physical_name AS Current_Location, state_desc                
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO


2. 위치 변경

ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\DBdata\tempdb.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\DBdata\templog.ldf');
GO

성공일 경우 Message
 시스템 카탈로그에서 파일 "tempdev"이(가) 수정되었습니다.
 새 경로는 다음에 데이터베이스가 시작될 때 사용됩니다.
 시스템 카탈로그에서 파일 "templog"이(가) 수정되었습니다.
 새 경로는 다음에 데이터베이스가 시작될 때 사용됩니다.

3. SQL Server를 중지한 후 다시 시작합니다.

4. 이동된 경로 확인

SELECT name, physical_name AS Current_Location, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO

5. 기존의 tempdb 파일들을 삭제.
tempdb는 SQL Server가 재시작할 때마다 다시 만들어지므로 기존의 tempdb 파일들은 삭제한다.

:
Posted by Elick
2009. 5. 25. 18:04

MSSQL License 정보 (구매시) Work/SQL Server2009. 5. 25. 18:04


SQL Server 2000 :  http://www.microsoft.com/korea/sqlserver/2005/howtobuy/pricing/default.mspx
SQL Server 2005 : http://www.microsoft.com/korea/sqlserver/2005/howtobuy/default.mspx

SQL Server는 현재 두 가지 라이선스 모델을 통해 사용할 수 있습니다.

프로세서 라이선스 (PL) : SQL 서버를 실행하는 컴퓨터 내의 각 CPU에 대해 라이선스가 하나씩 있어야 합니다. 이 라이선스는 클라이언트 장치를 무제한으로 액세스할 수 있습니다.

서버/사용자 단위 클라이언트 액세스 라이선스(CAL) :   Microsoft 서버 제품을 실행하는 컴퓨터에 대한 라이선스가 필요하며, 각 클라이언트 장치에 대한 클라이언트 액세스 라이선스(CAL)도 필요합니다. CAL의 설정 횟수는 서버 라이선스와 서버 소프트웨어에 포함되어 있습니다.

 ** 듀얼코어든 쿼드코어든 옥토퍼스든 물리적인 씨퓨에 따라서 각 1개씩 사면된다.
  -> 그렇다면... 코어가 많으면 유리한가??

 현재 600만원이 넘는다. (2008-06-26)
 Standard Edition : $5,999 (2008년 3월 26일)
 
 지인으로 부터 들은 이야기...
 CPU 4개, 메모리 4G 넘어가면 Enterprise Edition을 구입해야 한다고 함.
 Standard Edtion의 경우 CPU 당 600만원 정도라고 함.

만일 현재 Server를 운영중인데 어떤 것이 설치되어 있는지 알고 싶다면...
아래의 Query로 정보를 알아본다.

SELECT
 SERVERPROPERTY('BuildClrVersion') BuildClrVersion
 , SERVERPROPERTY('Collation') Collation
 , SERVERPROPERTY('CollationID') CollationID
 , SERVERPROPERTY('ComparisonStyle') ComparisonStyle
 , SERVERPROPERTY('ComputerNamePhysicalNetBIOS') ComputerNamePhysicalNetBIOS
 , SERVERPROPERTY('Edition') Edition
 , SERVERPROPERTY('EditionID') EditionID
 , SERVERPROPERTY('EngineEdition') EngineEdition
 , SERVERPROPERTY('InstanceName') InstanceName
 , SERVERPROPERTY('IsClustered') IsClustered
 , SERVERPROPERTY('IsFullTextInstalled') IsFullTextInstalled
 , SERVERPROPERTY('IsIntegratedSecurityOnly') IsIntegratedSecurityOnly
 , SERVERPROPERTY('IsSingleUser') IsSingleUser
 , SERVERPROPERTY('LCID') LCID
 , SERVERPROPERTY('LicenseType') LicenseType
 , SERVERPROPERTY('MachineName') MachineName
 , SERVERPROPERTY('NumLicenses') NumLicenses
 , SERVERPROPERTY('ProcessID') ProcessID
 , SERVERPROPERTY('ProductVersion') ProductVersion
 , SERVERPROPERTY('ProductLevel') ProductLevel
 , SERVERPROPERTY('ResourceLastUpdateDateTime') ResourceLastUpdateDateTime
 , SERVERPROPERTY('ResourceVersion') ResourceVersion
 , SERVERPROPERTY('ServerName') ServerName
 , SERVERPROPERTY('SqlCharSet') SqlCharSet
 , SERVERPROPERTY('SqlCharSetName') SqlCharSetName
 , SERVERPROPERTY('SqlSortOrder') SqlSortOrder
 , SERVERPROPERTY('SqlSortOrderName') SqlSortOrderName
 , SERVERPROPERTY('FilestreamShareName') FilestreamShareName
 , SERVERPROPERTY('FilestreamConfiguredLevel') FilestreamConfiguredLevel
 , SERVERPROPERTY('FilestreamEffectiveLevel') FilestreamEffectiveLevel

알아볼 Server가 여러개이고, Linked Server로 연결되어 있다면...
OPENQUERY 를 사용해서 UNION 으로 보는 것이 편하다.

ex)
SELECT * FROM OPENQUERY(ServerName1, 'SELECT SERVERPROPERTY(''Edition'') Edition')
UNION ALL
SELECT * FROM OPENQUERY(ServerName2, 'SELECT SERVERPROPERTY(''Edition'') Edition');

 

:
Posted by Elick
2009. 2. 18. 13:25

SSIS의 매력 Work/SQL Server2009. 2. 18. 13:25

어제... 자주 가는 사이트 중의 하나인 SQLLeader.com에 SSIS에 대해서 문의를 했었다.
나와 비슷하게 느끼는 사람이 생각보다 있는 듯 했다.

그 중 읽어볼 만한 좋은 글을 퍼왔다. (혹시 site 폐쇠되면 ... ㅠㅠ)
link : http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005QNA&intSeq=2951

-- 본인의 질문
안녕하세요.
SQL Leader.com 에서 눈팅하는 회원입니다.

질문이 아니라 업무 성향이라고 할까 처리 방법이라고 말해야 할까.. 좀 단어선택이 어렵네요.
뭐.. 하여간 그런 것들에 대한 이야기를 해보고 싶어서 글을 올립니다.
토론이라면 토론이고... 그냥 다른 분들은 처리를 어떤 방식으로 주로 하시는지 궁금하고요..
이런 류의 것이 대부분 그렇듯 상황에 따라서 적절한 방법이 있을 뿐, 절대적인 정답이 존재하기 어려운 것이기도 하고... (아.. 개인적으로 그렇게 생각한다는 것이지 제 말이 꼭 맞다는 건 아닙니다.)

SQL Leader.com에서 기술자료 올라오는 걸 읽는 것이 참 좋아서 자주 들리게 되는데...
SSIS 부분의 기술자료가 압도적으로 많은 것을 보게 됩니다.
저의 경우는 SSIS를 가능한한 사용하지 않고 OPENQUERY나 혹은 linked server를 사용해서 어떻게 해서든 Stored procedure를 사용해서 그 안에서 문제를 해결하려고 합니다. 제가 코드 보기가 더 쉽다는 이유이기도 하고... 아직 SSIS를 사용해야만 하는 상황을 만나지 못해서 일 수 도 있습니다.

다 읽어본 것은 아니지만, SSIS를 사용하지 않고 위에 제가 언급한 방법으로 충분히 해결 가능한 것들이라고 느껴지는 예가 대다수 인듯 합니다.
하지만, 기술자료가 이렇게나 많이 올라오는 것을 보면 SSIS가 무척이나 유용한 것 같은데...

SSIS의 매력을 알고 싶습니다.

p.s. 사실 이런건 토론게시판 같은데 올리고 싶은데... 그런 게시판이 여기는 없네요...
----------------------------------------------------------------------------

-- 한대성님의 글

어찌보면 SSIS의 기능을 하나 더 익히는 것보다 더 중요한 부분일 수 있습니다.
나름대로 사이트에 게시물을 하나하나 추가하곤 하는데, 전체적인 부분이 아닌, SSIS를 가지고 작업을 하면서 익힌 새로운 방법이나 지식들을 단편적으로 올린 것이기에 더욱 더 막연하게 보일 수도 있겠네요.

개인적인 경험을 바탕으로 설명드리겠습니다. 제가 했었던 업무나, 프로젝트 등입니다.

처음에 저는 옥션에서 DataWarehouse를 개발하고 관리하는 DBA로 SSIS의 이전 버전인 DTS를 접했습니다.
지금도 많은 자료에서 ETL(Extract, Transformation, Loading) 툴이라 하면 Data Warehouse에서 데이터를 추출하는 데 이용한 툴로 소개해 놓은 곳이 많지요.
운영 데이터, 여러 형태의 데이터 서버들에서 데이터를 읽어들인 후, 정재하고 DW Database에 데이터를 적재하는 부분에 저장 프로시저 대신 DTS 패키지들을 이용하였습니다. 그 다음엔 OLAP(Analysis Service) Cube를 Processing하고 Web Report를 Generating하고 특정 사용자들에게 추출한 보고서를 메일로 보내는 등 여러 작업들을 수행하였습니다.
데이터만 뽑는다면, 특히 동일 박스(서버)에서 데이터를 뽑아서 다른 DB에 적재하는 역할만 한다면 굳이 DTS, SSIS를 쓸 필요는 없겠지요.
제가 했었던 부분은 여러 서버들에 있는 데이터를 모으는 것이었고, OPENQUERY, Linked Server로 하기에는 부하 및 문제가 많았지요.
가장 간단한 문제로, SQL Server 2000에서 Linked Server를 이용할 때 NOLOCK 못 쓴다는 것. 그리고 Oracle 데이터를 Linked Server로 읽어올 때 간혹 부하가 걸리는 문제 등.
이러한 부분에 대해서는 DTS나 SSIS가 월등히 우수합니다.
그런 다음 OLAP Cube를 Processing하는 작업을 수행해야 하는데, 고맙게도 DTS 내에 이러한 기능이 있어서 이를 이용하였습니다.
그러고선 Report를 Generating하는 프로그램을 VB로 만들었는데, 이것 또한 실행토록 할려니깐 DTS의 프로그램 실행 작업 개체를 이용하니깐 편하더라구요.
또한 메일 보내는 기능도 있어서 이를 이용하게 되었습니다.

패키지가 100개가 넘고 200개가 넘으니깐 관리를 해야 겠더라구요. 1번 패키지가 끝나고 2번 패키지 수행, 2번 패키지 끝나고 3, 4번 패키지 수행 형태로.
이것 또한 패키지의 자식 패키지를 호출하는 기능을 사용하니깐 편하더라구요.

이리저리 해서 한 5년 동안 SQL 2000의 DTS를 아주 재미있게 접하고 사용했었습니다.

이후에 회사를 나와서 지금의 전 직장인 에이디컨설팅에서 여러 프로젝트를 하는데 많은 도움이 되었습니다.
그 중에서 몇 개 말씀드리자면.
금융권에서 데이터를 처리하는 배치 작업을 프로그램과 저장 프로시저로 처리하는 데, 작업의 특성 상 텍스트 파일로 만들로 (데이터를 만다고 하지요.) 이를 보내고 또 결과를 받아서 이를 반영하는 작업이 많았습니다.
처리 로직도 상당히 복잡하긴 해서 저장 프로시저 행 수가 2000~3000행을 넘는 것이 대부분이었구요. 작업이 돌면 몇 시간씩 돌고 에러가 나면 어디서 나는지 확인하기 어려웠습니다.
이러한 작업을 SSIS로 바꾸면서 이벤트 처리기를 이용해서 각 단계별 수행 상태를 기록하도록 하여 모니터링을 구현하였고, 순차적인 저장 프로시저에 비해 시각적인 면에서 우수하며, 병렬로 작업을 처리할 수 있는 SSIS 패키지가 유용하였습니다.
파일을 생성하고 검증하고 에러가 나는 경우에 이에 대한 처리를 하고 관리자에게 통보하고, 생성한 파일을 FTP로 전송하는 등 모든 필요한 기능을 SSIS로 구현할 수 있었지요.

다른 경우는 제조부분에서의 작업인데, 여러 서버 간에 데이터 동기화 및 처리 작업을 수행하는데, Linked Server로 처리하는 것에는 여러 문제가 있었습니다. 이 경우에도 SSIS를 이용해서 패키지를 만들고 Looping 기능을 이용해서 여러 서버에 적용하도록 구현해서 서버의 대수가 늘어나더라도 별 작업없이 쉽게 처리할 수 있도록 구현되었지요.

이 외에도 여러 서버의 성능 정보 파일을 읽어온 후, DB에 적재하고 이를 처리하고,  Raw 파일을 압축해서 다른 곳에 보관하도록 하는 기능 등에도 이용했었구요.
가장 최근에는 외부에서 특정 폴더에 데이터 파일을 떨궈(^^) 주면, SSIS 패키지가 이를 감시하고 있다가(WMI 감시자를 이용해서) 생성되면 이를 여러 곳에 있는 DB에 반영합니다. 반영하다가 에러가 나는 데이터는 별도의 폴더로 이동시키고 담당자에게 메일 보냅니다.
다른 여러 기능들도 있는데, 대략 여기까지만 정리하고..

그럼 SSIS가 항상 좋으냐.. 10개 고객사를 가는 경우 3~4군데 정도는 SSIS를 쓰지말고 그냥 BCP나 Bulk Insert, Linked Server 또는 단순히 저장 프로시저를 이용하라고 말씀드리고 그렇게 변경합니다.
SSIS의 장점을 꼽으로면 저 개인적으로는 SQL Query 기능 + Programing 기능을 최우선으로 생각합니다.
SQL 2005 부터는 CLR 기능을 이용해서 프로그램 기능을 쿼리에서 쉽게 사용할 수 있긴 하지만, 기본적으로 Ad-Hoc 쿼리 또는 저장 프로시저는 DB의 영역에서 처리를 해야 합니다.
간단히 예를 들면, 테이블에 있는 데이터를 이용해서 B라는 파일 서버에 파일로 생성하고 싶습니다. 이를 저장 프로시저로 구현한다면, BCP 명령을 이용해서 파일을 생성하고 이를 복사해야 합니다. 파일 복사는 xp_cmdshell 명령을 이용해서 해도 되겠지만, SQL 2005에서는 기본값으로 비활성화이지요. 갑갑해 집니다.
만약 이를 프로그램(VB.net이나 C#등)으로 만든다면 후딱 만들겠지요.
SSIS에서는 쿼리 뿐만 아니라 스크립트 작업 등도 구현할 수 있기에 구현 가능한 범위가 넓어졌다고 생각합니다.

또 다른 장점은 하나의 패키지에서 할 수 있는 작업이 다양하다라는 것입니다.
예를 들어, 웹 로그 데이터를 처리하는 작업을 생각해봅니다.
 a. 웹 서버에서 로그 파일이 생성되었는지를 확인하고 이를 DB에서 읽을 수 있는 위치로 복사합니다.
 b. 복사한 파일을 DB 테이블에 넣습니다. 넣다가 에러도 날 것이고 필터링도 해야 할 것이고.
 c. 데이터를 정재합니다. 거를 것 거르고, 넣을 것 넣고.
 d. 처리한 파일은 삭제하거나 압축해서 다른 곳으로 보냅니다.
 e. 데이터 처리가 끝나면 이를 집계해서 보고서를 생성하거나 결과물을 메일로 보냅니다.
이러한 기능을 구현해야 한다고 할 때, 쿼리가 할 수 있는 부분은 간단히 b, c 정도이고, a, d, e 단계를 구현하기 위해서는 별도의 프로그램이나 쉘 스크립트 등을 만들어 구현해야 합니다.
SSIS로 이를 구현한다면
 a. File 시스템 작업으로 구현
 b. 데이터 흐름 작업을 이용해서 정재, 변환을 거쳐 대상 테이블에 적재
 c. SQL 실행 작업을 이용해서 데이터 처리
 d. 프로세스 실행 작업이나 파일 시스템  작업으로 처리
 e. 메일 보내기 작업으로 구현

SSIS가 SQL Server에 포함된 기능이라고 해서 DB의 기능에만 국한해서 생각할 필요는 없습니다.

간단히 한 마디만 덧붙이자면..
우리가 쓰는 프로그램들을 VB6.0 으로도 만들 수 있고 C++로도 만들 수 있으며 C#, Java 등으로도 다 구현할 수 있듯이 SSIS로만 되는 것은 하나도 없습니다.
단지 SSIS를 이용하면 몸이 더 편할 수 있다라는 것이지요.
여러 업무들이 있을 것입니다. SSIS의 여러 기능들을 보고선 이를 구현하다가 편하다고 생각되거나 누가 편하다고 떠들면 고려해보면 되는 것이지요.

써 놓고 보니 아무 영양가도 없는 글인 것 같아 다시 읽어보기 민망하네요. 그냥 마치렵니다...^^

----------------------------------------------------------------------------



:
Posted by Elick
2009. 2. 11. 17:37

MSSQL File 정보 Work/SQL Server2009. 2. 11. 17:37

별거 아니지만...
일단 기록해 두자..

-- MSSQL 2000

SELECT @@ServerName, RTRIM(D.name), RTRIM(MF.name), RTRIM(MF.filename)
FROM master.sysaltfiles MF
    INNER JOIN master.sysdatabases D ON MF.dbid = D.dbid
ORDER BY D.dbid, MF.fileid

-- MSSQL 2005
SELECT @@ServerName, D.name, MF.name, MF.physical_name
FROM master.sys.master_files MF
    INNER JOIN master.sys.databases D ON MF.database_id = D.database_id
ORDER BY D.database_id, MF.file_id



:
Posted by Elick