안녕하세요.
이번에 인터넷나야나 사건으로 백업의 중요성을 절실하게 느끼게 되었습니다.
스케줄러에 매주 풀백업을 하게 하고... 매일 로그백업을 하고 있습니다.
매주 월요일에 제가 bak 를 다운받고, 1~2일 간격으로 로그백업파일을 다운받고 있습니다.
참고로 회원테이블의 비번은 varbinary 타입이고, 비번은 암호화되어 저장이 되게끔 되어 있습니다.
만일 문제가 생기면 서버 포맷하고, bak, trn 파일로 restore 는 되는데...
문제는 하루 이틀 사이에 변경된 것에 대해서 복구를 못한다는 겁니다.
그래서 중요한 몇 몇 테이블(회원테이블과 주문테이블)에 대해 매일 퇴근 전에 텍스트 파일로 저장한 후 개인 PC 로 내려받아 저장해 두고
문제가 생겼을 때 Restore 하는 방법을 생각 해 보았는데...
이 저장하는 작업은 항상 사무실에서 근무하는 여직원에게 시켜야 하는데... sql 에 대해 아무것도 모른다는 겁니다.
짧은 지식으로...
저희 홈페이지(asp 로 제작된) 관리자 페이지 메인에서 "회원백업", "주문서백업" 버튼 누르면 table_backup.asp 가 동작을 하여 서버에 xxx.txt 로 저장을 우선 하고, 다운로드 되게끔 프로그램을 짜고 있는데...
varbinary 타입때문인지 아래와 같은 에러가 납니다.
Microsoft VBScript 런타임 오류 오류 '800a0005'
프로시저 호출 또는 인수가 잘못되었습니다.
/admin/download_table_data/txt_down_process.asp, 줄 289
위 에러 라인의 코드는 다음과 같습니다.
Objfs.write(Make_str)
즉 Make_str 에 insert 문을 담고 filesystem object 를 이용하여 텍스트 파일로 저장하는 부분에서의 에러입니다.
그런데... 이 방법으로 저장이 되더라도... 복구시에 insert 문에 varbinary 에 값이 있으면 또 에러가 나더라구요...
결론은 제가 하는 방법으로는 불가하다는 것을 느꼈습니다.
고수님들... 조언 좀 부탁 드립니다. 어떤 방법이 있을 런지요? 버튼 한 두 개 눌러서 직원이 쉽게 백업할 수 있는...
읽어 주셔서 감사합니다.
Comment 1
-
핵냥이
2017.06.16 14:46
-- 참고하세요 : https://msdn.microsoft.com/ko-kr/library/ms187928.aspx
DECLARE @BIN VARBINARY(256) = 0X1024
,@CHAR VARCHAR(514) -- 256 * 2 + 2
SET @CHAR = @BIN -- 2진값이 그대로 대입됨
SELECT @BIN, @CHAR
SET @CHAR = CONVERT(VARCHAR, @BIN, 1) -- 2진값을 텍스트로 변환
SELECT @BIN, @CHAR
SET @BIN = NULL
SELECT @BIN, @CHAR
-- SET @BIN = @CHAR -- 오류!
SET @BIN = CONVERT(VARBINARY(256), @CHAR, 1) -- 다시 2진값으로
SELECT @BIN, @CHAR