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('..