CategoryMSSQL (4)

[MS-SQL] DB 백업과 복원 (DB BackUp, DB Restore - DB Copy)

데이터베이스 복원(카피) 유지보수중인 서비스의 요청사항이 들어왔습니다. 서비스의 장기 미 접속 유저에 대한 잠금설정 기능추가가 필요하다는 겁니다. 일사천리로 진행되나 싶더니.. 작업 중.. 손가락이 미끄러져서 잠금값을 바꾼다는게 그만 삭제값을 True로 바꿔버렸습니다!! 히힛! 뭐 일반 유저 데이터면 큰 문제일테지만 장기 미 접속 유저 아니겠습니까? 매일 데이터를 백업하고 있었기 때문에 백업한 DB를 다른 이름으로 복구해서 해당 값들을 원상복구하면 되겠구나~ 하는 가벼운 생각으로 복구 작업을 시작했습니다. MSSQL을 사용하기 때문에 GUI에서 작업하는 경우가 많아서 SQL Server Management Studio에서 복원을 시작했는데 복구가 잘 되지 않습니다! 정상적인 .BAK파일 일텐데? 오류 번..

[MS-SQL] 커서(Cursor) 사용하기

커서(Cursor)란?행 단위 작업을 추가로 제어해야 할 경우 사용되는 기능입니다.행 단위 작업이란 예를들면 특정 테이블에서 SELECT한 Email 별로 작업을 해야 하는 경우를 말합니다.즉 Email 별로 특정 값을 변경 시킬 때, 반복으로 노가다 할 필요 없이 한번에 처리하는 쿼리를 만들 수 있습니다. 커서를 이용해서 말이죠커서 선언--커서 생성 DECLARE CursorEmail CURSOR FOR SELECT Email from tblUserTable where IsDelete = 'False' 커서 열기--커서 열기 Open CursorEmail; 불러온 데이터를 이용한 작업-- 맨처음 결과 데이터로 이동 Fetch Next From CursorEmail Into @email WHILE(@@F..

[MSSQL] JOIN의 방식 - Nested loop Join / Merge Join / Hash Join

Join의 방식에 관하여Join의 종류는 5가지가 있습니다.INNER JoinOUTER JoinCROSS JoinFULL OUTER JoinSELF JoinJoin의 방식은 3가지가 있습니다.Nested Loop Join - 중첩반복Merge Join - 정렬병합Hash Join - 해시매치Join의 종류는 논리적 Join이라고 합니다. Join의 방식은 물리적 Join이라고 합니다. 이 포스트에서는 JOIN의 방식에 대해서 알아보겠습니다.중첩반복(Nested Loops) 조인바깥 테이블의 처리 범위를 하나씩 액세스하면서 그 추출된 값으로 안쪽 테이블을 조인하는 방식순차적으로 처리된다.바깥 테이블과 일치하는 값을 안쪽 테이블에서 찾아야 하므로 안쪽 테이블의 해당 열에 인덱스가 필요하다.메모리 사용량은 가..

[MSSQL] 여러 ROW를 하나의 ROW로 합치기

MSSQL Tips여러가지 ROW를 하나의 ROW로 만들기IDTitle1가1나1다1라2마2바2사2아3자 위와같은 테이블이 있습니다. ID를 기준으로 Title의 텍스트를 comma(,)로 구분지어서 하나의 ROW로 합치고 싶을때 아래 쿼리를 사용합니다.SELECT DISTINCT ID, STUFF(( SELECT ',' + Title FROM TB_Data b WHERE b.ID = a.ID FOR XML PATH('') ),1,1,'') AS NAME FROM TB_Data a 아래와 같은 결과가 출력됩니다.IDTitle1가,나,다,라2마,바,사,아,자STUFF?? FOR XML PATH??STUFF함수SUTFF함수는 문자열에서 특정 시작위치에서 지정된 길이만큼 문자를 바꿔줍니다.SELECT STUFF..