cursor를 사용해서 원래 있는 컬럼을 암호화를 하려고 합니다. 하지만 cursor가 너무 느리네요..
아무래도 while문을 써서 해야 할 것 같은데 , identity컬럼이나 시퀀션할 데이터가 없어 cursor처럼 어떤것을 기준으로
update를 쳐야 할지 잘 모르겠습니다.. 컬럼을 binary로 정렬하여 update쳐도 결국 cursor처럼 한건씩 fetch를
해야 하는 것인데 update구문을 어떻게 작성해야 할까요..고수분들의 도움을 부탁드립니다..
Comment 1
-
열이
2013.04.26 09:59
-- 커서방식
DECLARE @mNo INT
SET @mNo = 0
DECLARE myCur CURSOR FAST_FORWARD
FOR
SELECT mNo FROM big
OPEN myCur
FETCH NEXT FROM myCur INTO @mNo
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- 반복처리루틴
PRINT @mNo
FETCH NEXT FROM myCur INTO @mNo
END
CLOSE myCur
DEALLOCATE myCur
----------------------------------------------------------------
-- 테이블 방식
DECLARE @mMaxIdx INT
, @mIdx INT
, @mGuid INT
SELECT @mIdx = 0, @mGuid = 0
DECLARE @myCur TABLE ( mNo INT IDENTITY(1,1) PRIMARY KEY, mGuid INT )
INSERT INTO @myCur ( mGuid )
SELECT mNo FROM big
SELECT @mMaxIdx = MAX(mNo) FROM @myCur
SET @mIdx = 1
WHILE @mIdx <= @mMaxIdx
BEGIN
-- 반복처리루틴
SELECT @mGuid = mNo FROM @myCur WHERE mNo = @mIdx
PRINT @mGuid
SET @mIdx = @mIdx+1
END
GO
----------------------------------------------------------------
-- 일괄 양방향 암호화
OPEN SYMMETRIC KEY UserKey DECRYPTION BY CERTIFICATE CertKeyProtection
UPDATE dbo.MyTable SET var_jumin = EncryptByKey(Key_GUID('UserKey'),CAST(juminnumber AS NVARCHAR(50)) )
CLOSE SYMMETRIC KEY UserKey