SP4를 설치하고, 아래에서 핫픽스를 설치하여 더욱 안전한 데이터베이스로 유지 하자.
http://support.microsoft.com/?kbid=894905
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')SQL 2000
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
SELECT @@VERSION
쿼리문은 다음과 같다.
--1단계위의 쿼리를 실행시키면 아래와 같은 결과값을 볼 수 있다.
Restore FileListOnly
from Disk = 'c:\GOSLDW'
go
--2단계
restore database GOSLDW
from disk = 'c:\GOSLDW'
with move 'GOSLDW_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\GOSLDW_Data.MDF',
MOVE 'GOSLDW_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\GOSLDW_Log.ldf',
stats = 10
go
--3단계
sp_helpdb GOSLDW
go
EXEC sp_dbcmptlevel 'GOSLDW', '90'
go
sp_helpdb GOSLDW
go
하나의 테이블에 부모와 자식 값이 있다. 이것을 조인을 사용하여 부모와 자식 값을 연결 해준다. 그리고 결과값은 아래와 같이 나와야 한다.
--------------------------------------
PIDX | LORDER | TITLE
---------------------------------------
null 1 T1
1 1 T1-1
1 2 T1-2
1 3 T1-3
null 2 T2
2 1 T2-1
2 2 T2-2
그럼 PIDX와 LORDER을 기준으로 정렬을 하고 가상의 컬럼을 하나 추가해 PIDX와 같은 겂으로 넣어주고 NULL일때만 LORDER 값을 넣어 주면 된다.
CREATE TABLE TEST1 (
[IDX] [int] IDENTITY (1, 1) NOT NULL primary key clustered,
[PIDX] [INT]NULL , ------ 부모 IDX
[LORDER] [TINYINT] NOT NULL , ----------- 동일 부모의 자식들간의 출력순서
[TITLE] [varchar] (50) NOT NULL
)
go
INSERT INTO TEST1 values(null, 1, 'T1')
INSERT INTO TEST1 values(null, 2, 'T2')
INSERT INTO TEST1 values(1, 1, 'T1-1')
INSERT INTO TEST1 values(1, 2, 'T1-2')
INSERT INTO TEST1 values(1, 3, 'T1-3')
INSERT INTO TEST1 values(2, 1, 'T2-1')
INSERT INTO TEST1 values(2, 2, 'T2-2')
go
방법
select distinct a.pidx , a.lorder, a.title, order_IDX = case a.pidx when null then a.lorder else a.pidx end
from test a
left outer join test b on b.pidx = a.lorder
order by order_idx , lorder asc
그래픽 실행 계획 표시
http://technet.microsoft.com/ko-kr/library/ms178071.aspx
실행 계획을 만드는 T-SQL
http://technet.microsoft.com/ko-kr/library/ms187886.aspx
웹캐스트: Microsoft SQL Server 2000: SQL Server 2000에서 실행 계획 읽기
오늘은 데이터를 A에서 B로 옮길 때 자동 증가값을 생성하는 방법을 살펴 보겠다.
A라는 테이블은 고객 테이블이다. 현재 주민등록번호가 기본키 값으로 잡혀있지만 새로운 데이터베이스로 옮길때는 주민번호를 기본 키값으로 사용할수 없게 되었다면 어떻게 해야하겠는가? 물론 Surrogate key(대체키)를 생성해야 한다.
그럼 데이터를 다 옮긴 다음에 키 값을 생성할 것인가? 아니다. SSMS 작업 중 데이터 내보내기 또는 데이터 가져오기 기능 내에서도 가능하다.
오늘은 이 기능을 살펴 보겠다.
우선 SSMS를 실행 한다. 하고 데이터를 옮길 대상 데이터베이스에서 마우스 오른쪽을 클릭하고 작업에서 데이터 가져오기를 선택한다.
데이터 원본을 선택한다.
데이터를 내 보낼 대상을 선택한다.
우리는 하나 이상의 테이블 또는 뷰에서 데이터 복사를 선택한다. 쿼리에 자신 있거나 복잡한 쿼리를 만들어야 한다면 전송 데이터를 저장할 쿼리 작성을 선택해도 된다.
원본 테이블에서 옮김 대상 테이블을 선택하고 매핑 편집 버튼을 클릭한다.
열 매핑에서 원본 컬럼의 유형, 크기 등의 특성을 알맞게 조절하고 SQL 편집 버튼을 클릭한다.
여기에서 우리는 지금까지 설정한 방식에 맞춰진 Create Table 쿼리문을 볼 수 있다. 그럼 쿼리의 Create Table 뒤에 자동 증가값 컬럼인 IDX를 추가한다.
IDX를 추가하면 아래와 같다.
두번째 줄을 보면 아래의 쿼리가 추가 되었다. 그리고 확인을 클릭한다.
[IDX] IDENTITY(1,1) PRIMARY KEY
즉시 실행을 체크하고 다음을 클릭한다.
마침을 클릭하면 데이터가 옮겨지능 과정이 보이고, 해당 데이터베이스를 확인하면 자동 증가값이 추가된 테이블을 볼 수 있다.
테이블을 만들다 보면 똑같은 키 값이지만 입력된 날짜 순으로 데이터가 들어 갈 수 있다. 나중에 다른 테이블과 조인을 하려고 하는데 중복되는 최신 값 중에 최신 값을 기준으로 하고 싶다면 아래와 같은 쿼리를 사용하여 max와 Group by를 이용하면 된다.
select B.stitle,A.sdate,sflag from (select stitle,max(sdate) sdate from test01 group by
stitle) A inner join
test02 B ON A.stitle = B.stitle