로그 테이블이
xxxxx201301
xxxxx201302
xxxxx201303
....
이런식으로 저장이 됩니다. 그래서 테이블 삭제를 위해서 프로시저를 작성해야되는데
1년치의 로그 테이블만 남겨두고 (예 : 2015년 1월 ~ 2014년 1월 까지만 보존, 나머지는 다 삭제)
모두 삭제하는 쿼리는 어떻게 작성해야될까요
감이안오네요ㅠㅠ
Comment 1
-
더따뜻한
2015.01.27 10:07
로그 테이블이
xxxxx201301
xxxxx201302
xxxxx201303
....
이런식으로 저장이 됩니다. 그래서 테이블 삭제를 위해서 프로시저를 작성해야되는데
1년치의 로그 테이블만 남겨두고 (예 : 2015년 1월 ~ 2014년 1월 까지만 보존, 나머지는 다 삭제)
모두 삭제하는 쿼리는 어떻게 작성해야될까요
감이안오네요ㅠㅠ
2015.01.27 10:07
다이나믹 쿼리와 CURSOR를 적절히 이용해서 삭제하면 어떤가여?
일년전 테이블 명을 아래와 같이 가지고 와서~ 커서로 한줄씩 읽어와서 다이나믹 쿼리로 테이블을 DROP 시키는 거죠~
일단 제 생각은 이렇네요.~ 제 코가 석자라~ 일단 요거만 참고하시라고 올려볼께요. ^^
DECLARE @YYYYMM VARCHAR(6) = CONVERT(VARCHAR(6), DATEADD(YEAR, -1, GETDATE()) , 112)
SELECT AO.NAME
, AO.CREATE_DATE
, AO.modify_date
, AO.TYPE_DESC
FROM information_schema.tables T
INNER JOIN SYS.ALL_OBJECTS AO ON (T.TABLE_NAME = AO.NAME )
INNER JOIN SYSOBJECTS P ON ( P.TYPE = 'U' AND T.TABLE_NAME = P.NAME )
WHERE RIGHT(P.NAME, 6) < @YYYYMM
ORDER BY AO.CREATE_DATE DESC