DTS(Data Transformation Service)는 테이블이나 DB 등 각종 엔티티들을 네트워크를 통해 다른 서버로
전송하는 기능으로 Microsoft SQL Server 2005 Management Studio를 실행하면 개체탐색기를 볼 수 있는데
아래 캡쳐화면과 같이 먼저 데이터를 저장할 서버(로컬서버)에 먼저 연결하고 다음으로 원격지 서버에 접속하면
아래와 같이 된다.

사용자 삽입 이미지

사용자 삽입 이미지


사용자 삽입 이미지

원격지 서버의 company DB에 있는 테이블 car,sale,salesman이라는 테이블들을 로컬 서버에 있는 MyDatabase DB로 가져오려면 다음과 같이 로컬서버의 MyDatabase를 선택하고 오른쪽 마우스를 눌러
사용자 삽입 이미지


데이터 가져오기를 선택 클릭 그 다음은 아래의 캡쳐화면대로 따라하면 쉽게 원격지 서버의 DB 데이터들을
가져올 수 있다.
사용자 삽입 이미지

사용자 삽입 이미지

                                                            원격지서버의 정보를 입력             

사용자 삽입 이미지
                                                    데이터를 저장할 로컬서버의 정보 입력

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

이상으로 MSSQL2005 서버의 좋은 기능 중 하나인 DTS에 대해서 알아보았다.
(원에서 캡쳐해서 올리기도 쉽지는 않군요..)
아무튼 즐공들 하시길..DTS는 이외에도 좋은 기능들이 많으니 연구들을 해 보심이...
Posted by 원철연(체르니)
,

사용할 기본 테이블
사용자 삽입 이미지

전체 스크립트
사용자 삽입 이미지

실행결과
사용자 삽입 이미지

이상으로 문장트리거의 예를 다루어 보았습니다.
보다 향상된 기능을 하는 트리거를 만들어보는 것은 독자들의 몫으로 남겨둡니다.
편안한 밤들 되시길...
Posted by 원철연(체르니)
,
사용자 삽입 이미지

여기서 CAST()함수는 형변환함수이다.
Posted by 원철연(체르니)
,

사용자 삽입 이미지

MSSQL2000에서처럼 쿼리분석기를 사용하기 위해서는 위의 새쿼리를 클릭하면 됩니다.

사용자 삽입 이미지

다음으로 데이터 파일을 추가하고 그 결과를 봅니다.
사용자 삽입 이미지

자세히 보면 알겠지만 size,growth,maxsize등이 생성시 설정한 대로 잘 생성된 것을 알 수 있습니다.
그럼 다음으로 테이블을 생성해 볼까요?
사용자 삽입 이미지

사용자 삽입 이미지

이상으로 쿼리분석기를 이용한 DB생성, 데이터파일 추가, 테이블생성 등에 대해서 알아보았습니다.
모두들 즐공하시길..














Posted by 원철연(체르니)
,

오늘 다시 학원에서 MSSQL2005 수업을 받기 시작했다.
지난 주까지 3주 동안 오라클 강의를 들었었는데 조금 더 배웠으면 하는
아쉬움을 뒤로 하고 2005를 시작하였다.
MSSQL2000보다 어떤 면이 좋아졌는지 궁금증을 가지고 처음 접하는 MSSQL2005
처음 시작은 MSSQL2005 Server Management Studio 였다.
접해보니 SQL2000때의 EM+쿼리분석기의 통합판의 느낌이 들었다.
자 이제 이제 새로운 툴에 대해서 알아 보자.

시작메뉴->프로그램->Microsoft SQL Server 2005를 열어서 아래의 SQL Server Management Studio 선택
사용자 삽입 이미지


실행하면
사용자 삽입 이미지

여기서 새로운 데이터베이스(DB)를 생성해 보자.
사용자 삽입 이미지

생성된 데이터 베이스 확인
사용자 삽입 이미지

다음으로 새로운 사용자를 추가해 보자.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

생성된 사용자로 로그인해보기
사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

새로운 사용자로 테이블 생성하기
사용자 삽입 이미지

마지막으로 OLE DB 연결을 위한 정보를 생성해보도록 하자.
사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

최종적으로 생성된 정보
사용자 삽입 이미지

위에서 생성된 정보들은 SQL서버에 접속하는 C/S 응용 프로그램을 만들 때 사용되거나,
 웹 DB와 연동을 위해 사용된다.

마지막으로 그림이 많이 깨졌는데 이해를 바라며 그림이 안깨지게 할 수 있는 방법을 아시는 분은 좀
알려주시면 다음 자료 작성시 참고하도록 하겠습니다.




















Posted by 원철연(체르니)
,

트리거(Trigger)

트리거는 프로시저, 함수와 같이 그 블록구조가 유사하지만 프로시저, 함수는 외부적인 실행명령으로 실행되는 반면에 트리거의 실행은 DML문이 발생할 때 시행된다. INSERT, UPDATE, DELETE문이 실행될 때 정의된 트리거도 실행된다.


트리거의 용도

1. 데이터 베이스 테이블 생성시에 참조 무결성과 데이터 무결성 그 밖의 조약조건으로
 
정의할 수 없는 복잡한 요구사항에 대한 조건을 생성

 

2. 테이블 데이터 작업에 대한 감시, 보안 용도

 

3. 테이블에 생기는 변화에 따라 필요한 다른 프로그램을 실행시킬 수 있음

 

트리거 형식

CREATE [OR REPLACE] TRIGGER 트리거 이름 BEFORE|AFTER

트리거 이벤트  ON 테이블이름
[FOR EACH Row]

[WHEN (condition)]

PL/SQL 블록

 

트리거의 종류

문장트리거(Statement-Level Trigger)와 행트리거(Row-Level Trigger)가 있으며 FOR EACH ROW 옵션을 사용하면 행트리거, 사용하지 않으면 문장트리거가 된다.

문장트리거는 단 한번 실행되며 컬럼의 데이터 값에 상관없이 그 칼럼의 변화가 일어남을 감지하여 실행되는 트리거 반면에 행트리거는 컬럼의 각각의 데이터행에 변화가 생길때마다 실행되며 그 데이터 행의 실제값을 제어할 수 있다.

 

예제) 업데이트문을 이용한 BEFORE UPDATE 행트리거를 보자.

사용자 삽입 이미지

실행 결과
사용자 삽입 이미지


[참고] 생성된 트리거 보는 법
          SQL>SELECT * FROM all_objects WHERE OBJECT_TYPE='TRIGGER';
Posted by 원철연(체르니)
,
사용자 삽입 이미지
실행 결과
사용자 삽입 이미지

여기서 대상 테이블은 SCOTT으로 SQLPLUS에 접속하면 뜨는 EMP 테이블을 기본으로 하였고
이 테이블에 있는 월급 상위 5명에 대하여 각각 월급,이름,사원번호만을 포함하는 간이 테이블,
여기서는 clone_emp에 데이터가 저장하는 과정입니다.
위와 같은 결과를 받을 수 있는 clone_emp 같은 테이블을 먼저 생성한 후 위의 과정을
차례로 처리해야 하는 것은 알고 계시리라 믿으며 오늘의 커서 예제는 마칩니다.
Posted by 원철연(체르니)
,

date_format 함수 만들기

 

날짜 데이터를 입력받아 TO_CHAR 함수를 이용하여 입력받은 날짜 데이터를

문자열 데이터로 변환하는 함수


사용자 삽입 이미지

이렇게 하여 함수를 생성한 후
SQL>SELECT empno, date_format(HIREDATE) FROM EMP; 하면
사용자 삽입 이미지

[참고] 생성된 함수의 입출력인자 보기 및 스크립보기
사용자 삽입 이미지
사용자 삽입 이미지

이상으로 간단한 함수를 하나 만들어 DATE형 데이터를 문자형으로 변환하는 함수를 만들어 보았다.
응용해서 다른 것도 만들어 보시길..

Posted by 원철연(체르니)
,


비주얼 베이직(VB)를 공부하는 것은 다른 언어를 접근하는데 좋은 바탕이 된다고
개인적으로 생각한다. 왜냐하면 갈수록 비주얼 베이직.닷넷의 사용방법이나 응용처가
C#이나 C++의 고유의 영역으로 넓혀져가는 느낌이 들기 때문이다.

아무튼 비주얼 베이직을 시작하는 분들 힘내시길 바라며..그럼 시작해 볼까요?
사용자 삽입 이미지

처음 VB2005를 시작하면 위와 같은 화면을 접하게 될 것인데 여기서 새프로젝트를 선택해야 합니다.
CTRL+ N 을 누르거나 아래와 같이 파일메뉴에서 새프로젝트를 선택
사용자 삽입 이미지

위에서 새프로젝트를 선택하면 아래와 같은 어떤 프로젝트를 만들 것인지 선택을 해야합니다.
여기서 여러가지가 있지만 가장 기본이 되는 콘솔(Console) 응용프로그램 선택
사용자 삽입 이미지

그다음 이름(N)란에 자신이 원하는 이름을 입력(나는 firstconsole로...)
이렇게 한 후 확인을 누르면 아래와 같은 기본적인 환경이 보입니다.(캡쳐를 위해서 솔루션탐색기와 속성창을
움직였습니다.)
사용자 삽입 이미지

이제 실제 코딩을 해볼까요?
콘솔 화면에 "처음으로 VB.NET 콘솔화면에 출력합니다." 라고 나타나도록 프로그램을 작성합니다.
아래를 참조하세요.
사용자 삽입 이미지

위와 같이 표준 출력(콘솔창)에 문자열을 표시해주기 위해
Console.WriteLine() 함수를 사용
그리고 Console.ReadLine() 함수는 컴퓨터의 입력부분(예를 들면 키보드)으로부터 입력받기 위해서 사용
이렇게 한 후 F5키를 누르거나 빌드메뉴에서 firstconsole빌드를 누릅니다.
사용자 삽입 이미지

 이렇게 하면 아래와 같은 출력 화면을 볼 수 있습니다. 여기서 EXIT를 입력하면 실행종료가 됩니다.
사용자 삽입 이미지

이상으로 VB2005 처음시작하기.. 간단한 콘솔 프로그램을 마칩니다.
Posted by 원철연(체르니)
,

P/L SQL PACKAGE

오라클 데이터베이스에 저장되어 있는 프로시저, 함수들의 집합체이며 패키지의 구성은

선언부(Specification)과 본문(Body)로 구성됨.

 

1. 형식

 

--Specification 부분

CREATE [OR REPLACE] PACKAGE package_name

[AUTHID {CURRENT_USER | DEFINER}]

{IS | AS }

[PRAGMA SERIALLY_REUSABLE;]

[collection_type_definition …]

[record_type-definition …]

[subtype_definition …]

[collection_declaration …]

[constant_declaration …]

[exception_declaration …]

[object_declaration …]

[record_declaration …]

[variable_declaration …]

[cursor_spec …]

[function_spec …]

[procedure_spec …]

[call_spec …]

[PRAGMA RESTRICT_REFERENCES (assertions) …]

END [package_name];

 

--Body 부분

[CREATE [OR REPLACE] PACKAGE BODY package_name {IS | AS}

[PRAGMA SERIALLY_REUSABLE;]

[collection_type_definition …]

[record_type-definition …]

[subtype_definition …]

[collection_declaration …]

[constant_declaration …]

[exception_declaration …]

[object_declaration …]

[record_declaration …]

[variable_declaration …]

[cursor_body …]

[function_spec …]

[procedure_spec …]

[call_spec …]

[BEGIN

  squence_of_statements]

END [package_name]; ]

 

여기서 패키지 선언부(Specification)은 패키지에 포함될 PL/SQL 프로시저 및 함수 외에 퍼블릭(Public) 변수 선언과 커서(Cursor) 및 예외절 등을 포함한다.

여기서 퍼블릭 변수는 패키지 전체에 적용되는 변수임을 기억하자.

다음으로 패키지 본문(Body)는 패키지 선언부에서 선언된 변수들, 프로시저, 함수 들을 정의하는 부분이다.

 

실제 EMP 테이블의 클론인 EMP_BACK 테이블을 가지고 알아보자.

 

사용자 삽입 이미지

2. 패키지 선언과 본문 스크립

--패키지 선언(Specification)

CREATE OR REPLACE PACKAGE emp_back_pack

IS

  v_counter NUMBER :=0;

  PROCEDURE empno_out;

  PROCEDURE ename_out;

  PROCEDURE job_out;

  PROCEDURE hiredate_out; 

  PROCEDURE deptno_out;

  PROCEDURE salary_out;

END emp_back_pack;

/

 

 

--패키지 본문(BODY)

CREATE OR REPLACE PACKAGE BODY emp_back_pack

IS

  -- emp_back_cursor 생성

  CURSOR emp_back_cursor IS

    SELECT * FROM EMP_BACK;

 

  -- emp_back_procedure

  PROCEDURE empno_out IS

  BEGIN

               DBMS_OUTPUT.ENABLE;

                DBMS_OUTPUT.PUT_LINE('직원번호');

                DBMS_OUTPUT.PUT_LINE('--------------');

               

                FOR crec IN emp_back_cursor LOOP

                            DBMS_OUTPUT.PUT_LINE('       ' || TO_CHAR(crec.empno));

                END LOOP;

  END empno_out;

 

  -- emp_back_ename_out 

  PROCEDURE ename_out IS 

  BEGIN

               DBMS_OUTPUT.ENABLE;

                DBMS_OUTPUT.PUT_LINE('직원이름');

                DBMS_OUTPUT.PUT_LINE('--------------');         

 

                FOR crec IN emp_back_cursor LOOP

                            DBMS_OUTPUT.PUT_LINE('       ' || crec.ename);

                END LOOP;

  END ename_out;  

 

  -- emp_back_job_out 

  PROCEDURE job_out IS 

  BEGIN

               DBMS_OUTPUT.ENABLE;

                DBMS_OUTPUT.PUT_LINE('업무 직함');

                DBMS_OUTPUT.PUT_LINE('--------------');         

 

                FOR crec IN emp_back_cursor LOOP

                            DBMS_OUTPUT.PUT_LINE('       ' || crec.job);

                END LOOP;

  END job_out;

 

  -- emp_back_hiredate_out 

  PROCEDURE hiredate_out IS 

  BEGIN

               DBMS_OUTPUT.ENABLE;

                DBMS_OUTPUT.PUT_LINE('입사일');

                DBMS_OUTPUT.PUT_LINE('--------------');         

 

                FOR crec IN emp_back_cursor LOOP

                            DBMS_OUTPUT.PUT_LINE('       ' || crec.hiredate);

                END LOOP;

  END hiredate_out;

 

  -- emp_back_deptno_out 

  PROCEDURE deptno_out IS 

  BEGIN

               DBMS_OUTPUT.ENABLE;

                DBMS_OUTPUT.PUT_LINE('부서번호');

                DBMS_OUTPUT.PUT_LINE('--------------');         

 

                FOR crec IN emp_back_cursor LOOP

                            DBMS_OUTPUT.PUT_LINE('       ' || TO_CHAR(crec.deptno));

                END LOOP;

  END deptno_out;  

 

  -- emp_back_salary_out 

  PROCEDURE salary_out IS 

  BEGIN

               DBMS_OUTPUT.ENABLE;

                DBMS_OUTPUT.PUT_LINE('월급');

                DBMS_OUTPUT.PUT_LINE('--------------');         

 

                FOR crec IN emp_back_cursor LOOP

                            DBMS_OUTPUT.PUT_LINE('       ' || TO_CHAR(crec.sal));

                END LOOP;

  END salary_out;  

END emp_back_pack;

/

 

3. 실행 결과

패키지 선언부 생성


사용자 삽입 이미지

                         
패키지 본문 생성
사용자 삽입 이미지
사용자 삽입 이미지
실행결과
사용자 삽입 이미지

SQL>SET SERVEROUTPUT ON 을 실행한 후 위와 같이 EXECUTE 문을 써서 실행하면
원하는 결과를 얻을 수 있음.
추가적인 기능들이나 응용을 배우는 것은 독자들에게 남겨둡니다.
그럼 이만.



Posted by 원철연(체르니)
,