728x90

'수동 트랜잭션 모드 또는 분산 트랜잭션 모드에 있기 때문에 연결을 새로 만들 수 없습니다.'

라고 에러메세지가 뜬다.

 ==< 우선 에러난 구문 >=================================

sql="select 어쩌구..."

set rs=conn.execute(sql)

 if not rs.eof or not rs.bof then

  while not rs.eof 

      subsql="update 저쩌구..."

      set subrs=conn.execute(subsql)

    rs.movenext

  wend

end if

 =======================================================

 ==< 해결 구문 >========================================

 set rs = server.createobject("adodb.recordset")

sql="selet 어쩌구 ..."

rs.open sql, conn, 1, 1

 이하... 위와 동일...

 =======================================================

728x90

'프로그래밍 > asp' 카테고리의 다른 글

ASP CDO로 메일 보내기  (0) 2012.04.16
asp DOM 파서  (0) 2011.12.13
Edit plus ftp upload 안 될때 해결 법  (0) 2011.10.05
SMTP, POP3로 메일 서버 구축하기  (0) 2011.09.16
windows 2003 ftp 설정  (0) 2011.09.05
728x90


"에디트 플러스" 웹 개발자라면 누구나 한번은 접해본 툴이라 생각됩니다.
이 프로그램에는 치명적인 버그가 있는데
프로그램 자체 버그인지 네트워크나 윈도우상의 문제와 혼합되어 발생되는 문제인지는 모르겠으나
FTP 파일 전송중 멈추는 현상입니다.
보통은 수초 내에 연결 끊김, 기타 오류 등 메시지를 뿜어내면서  취소되지만
아주 가끔은 아무 반응이 없이 멈춘상태가 지속되는 경우가 있습니다.
작업관리자를 열어서 강제종료하면 멈춘파일은 백지상태가 되어버리죠...
쓰다보니 더이상 길어지면 보시는분들 귀찮아지실것 같아서 결론 내리겠습니다.

C:\Documents and Settings\윈도우계정\Local Settings\Temp
위 디렉토리에 가보시면 윈도우에서 사용하는 각종 임시파일들이 있습니다.
에디트 플러스에서 FTP연결한 파일들도 여기 저장되더군요.
파일명은 rmt*.tmp 입니다. rmt 로 시작하는 파일이구요. 수정한 날짜 최근순으로 정렬해보시면
방금 저장하다 멈춘 파일을 찾으실 수 있을겁니다.
파일을 저장하는 순간 임시파일을 저장한 후 업로드를 시도하는 파일이라
작업하신 최신 소스로 복구가 가능합니다.

728x90

'프로그래밍 > asp' 카테고리의 다른 글

asp DOM 파서  (0) 2011.12.13
수동 트랜잭션 모드 연결 오류  (0) 2011.10.06
SMTP, POP3로 메일 서버 구축하기  (0) 2011.09.16
windows 2003 ftp 설정  (0) 2011.09.05
winhttp 사용법  (0) 2011.08.22
728x90

방화벽 로그를 메일로 받아보시기 위해 작업을 진행하시는게 맞는지요..? 일단 전 그렇게 이해하고 내용을 좀 정리해봤습니다. 만약 제가 제대로(?) 이해한거라면 구지 메일 서버를 별도로 구축하지 않으셔도 가능할 수도 있어 보이긴 하지만 제가 자세한 상황에 대해서는 모르니깐요.., 그냥 제가 이해한 대로 방향을 잡고 간략하게나마 말씀드리도록 하겠습니다.

 

초간단(?) 메일 서버 구축 방법을 알려드리려고 하는데요.., 당연히 Windows Server 2003에 기본 제공되는 메일 서버 역할을 구성하는 방법에 대한 내용입죠. 단, 제가 테스트 환경은 영문으로 구축해놓기 때문에 그림은 영문 화면이니 양해 바랍니다. ^^;

 

참고로 다음 내용은 이전에 POP3 서비스나 IIS 같은 구성 요소들을 설치하지 않은 상태를 가정하고 진행하는 것입니당.., 당연히 다음 내용대로 따라하시려면 초기 상태, 즉 기본 OS만 설치돼있는 상태로 가정하고 작업을 진행하시면 되겠죠.., 방화벽 관련 로그를 메일로 쏘겠다고 하신 것으로 봐서는 DNS를 별도로 구성하실 필요는 없을 듯 합니다.., 방화벽에서 로그 발송할 때 mail.nwtraders.msft 과 같은 형식이 아닌 10.10.10.10 과 같은 IP로 설정하시면 되니까요.., 그리고 또 한가지.., 마찬가지 이유로  구지 Active Directory를 구성하실 필요도 없어 보입니다.

 

암튼 방화벽에서 SMTP 서버를 IP 주소로 설정한다는 가정 하에서 메일 서버 구축 작업은 다음과 같이 진행하시면 되겠습니다.

 

1. 먼저 다음과 같이 "시작 > 관리 도구 > 서버 구성 마법사(?)"를 클릭합니다.

 

2. 그리고 나서 다음 그림과 같이 "Mail server" 항목을 선택한 후 다음 버튼을 클릭하시구요..,

3. 다음 그림과 같은 화면에서 중요한 것은 "E-mail domain name:" 항목이구요.., 여기엔 그냥 임의의 도메인 이름을 입력하시면 되겠슴다. 뭐 알기 쉽게 nwtraders.msft 뭐 이렇게 하셔도 될테구요.., 그냥 단순히 방화벽 로그 보내는 용도로 회사 내부에서만 받아보시는 용도일테니까요..,

 

4. 이제 이후 작업은 그냥 다음, 다음 이렇게 쭉쭉 넘어가시면 자동으로 지가 알아서 IIS도 추가해주고 SMTP 구성도 다 해줍니다. 중간에 OS 시디 요구하면 뭐 넣어주면 되는거구요..,

 

이게 끝입니다..?

 

그리고 나서는 관리 도구 에서 "POP3 서비스" 관리 도구를 통해서 메일박스 만들어주고.. 뭐 그러면 되는거죠.., 글구 질문 하신 내용 중에 서버에 오피스 아웃룩 같은 것이 깔려있어야 하는지 물어보셨는데.., 그런거 필요없슴다.. 클라이언트에만 그런 프로그램이 설치돼있으면 되는거죠뭐.., 오피스 아웃룩이 아니더라도 OS에 기본 탑재된 아웃룩 익스프레스를 이용하셔도 되는거고 말입죠.., 다만 아웃룩에서 메일 서버 설정하는 부분에서는 IP 주소로 입력을 해주시면 되겠고요.., 나머지는 머 그냥 기본 설정대로 내버려 두셔도 될겁니다.

 

"POP3 서비스" 관리 도구를 통해 메일 박스 만들 때 메일 계정도 같이 만들 수 있으니까.., 머 그건 그렇게 작업하시면 될겁니다. 아웃룩 설정을 완료하신 후 메일 서버 접속할 때 아이디는 경우에 따라서 mailuser@nwtraders.msft 와 같은 형식으로 입력해주셔야 할 수도 있구요..,

 

글구.., DNS를 별도로 구성하실 필요도 없고, 따라서 DNS의 역방향 영역 같은 것도 신경쓰실 필요도 없습니다.., 앞서 말씀드린대로 지금 사용하시려는 용도가 단순히(?) 방화벽 로그를 보내는 용도로만 구성하실거니까요.., 단, 서두에도 말씀드렸듯이 방화벽에서 로그를 보낼 SMTP 서버를 mail.nwtraders.msft 와 같은 형식이 아닌 구성한 메일 서버의 IP 주소로 설정해주시기만 하면 되기 때문에 DNS도 필요없고 그에 따른 역방향 영역이라던가 MX 레코드 뭐 이런 것도 필요없는 것이죠. 방화벽에서 SMTP 서버를 지정할 때 IP로 직접 입력해줬기 때문에 DNS가 필요없는 것임다. 방화벽에서 SMTP 서버 설정을 mail.nwtraders.msft 과 같은 FQDN 형식으로 설정했을 때나 DNS가 있어야 하고 또 MX 레코드도 있어야 하고 머 그런 것이죠. 경우에 따라서는 역방향 영역까지도 구성하셔야 할 수도 있구요..,

 

머 어쨌든 당연한거지만.., 방화벽에서 메일 수신자 설정 시에는 앞서 메일 서버 구성시 입력한 도메인에 해당하는 수신자 정보(예: mailuser@nwtraders.msft)로 설정하시면 될테구요..,

 

글구, 릴레이 관련해서도 걱정하실 필요는 없을 듯 하네요. 왜냐면 구성한 메일 서버가 nwtraders.msft 도메인에 대한 메일 서버 역할을 수행하니깐요.., 이 도메인이 아닌 다른 도메인 메일 주소로 현재 구성된 메일 서버를 통해서 전달할 필요가 있을 때에나 릴레이 설정이 필요한겁니다. 일반적으로 회사 내부에 메일 서버도 여러 대이고 또 메일 관련 도메인 역시 여러 개 있거나 하는 머 그런 식의 구성이 아닌 담에야 릴레이 구성을 하실 필요는 없습니다.

 

한가지 혼돈하지 마실 것은.., 메일 수신자가 mailuser@nwtraders.msft 이니까 당연히 nwtraders.msft 라는 도메인이 있어야 하고 해당 DNS 서버도 구성해줘야 하는 것이 아니냐고 의문이 드실 수도 있겠는데요.., 그렇지 않다는 것을 알아두시기 바랍니다. 메일 수신자가 어떤 놈이 됐든.., 방화벽에 SMTP 서버를 IP 주소로 박아줬기 때문에 무조건 해당 SMTP 서버로 보내버리거든요..., mailuser@nwtraders.msft 와 같은 메일 수신자 정보를 가지고 DNS 조회를 수행하는 등의 작업은 메일 서버간에 수행되는 작업입니다.

 

머.., 암튼... 전 일단 제가 판단하는 현 상황을 기준으로 해서 간략하게(?) 말씀드리긴 했습니다만.., 이게 정확히 원하시는 내용일지에 대해서는 확신하긴 좀 어렵네요... ^^;

 

암튼.., 방화벽 로그를 메일로 받으시려는 생각으로 지금 작업을 진행하고 계신 것이라 판단해서 말씀드렸습니다..,

 

728x90

'프로그래밍 > asp' 카테고리의 다른 글

수동 트랜잭션 모드 연결 오류  (0) 2011.10.06
Edit plus ftp upload 안 될때 해결 법  (0) 2011.10.05
windows 2003 ftp 설정  (0) 2011.09.05
winhttp 사용법  (0) 2011.08.22
ASP에서 UTF-8로 저장하기  (0) 2011.08.03
728x90

2009/11/23 14:58 컴퓨터이야기/Server

넋두리 - 내가 알고 있는 지식은 대부분 책에서 보았거나, 누구에게 들었거나, 아니면 인터넷에서 얻은 것들이다.
고로 태여나면서 부터 알고 있었던 것은 없으며, 그렇게 얻은 정보들은 공유하여야 한다고 생각한다. ㅋㅋ ^^

요즘 네이버 블로그나 까페가 강력하게 복사 금지를 하는 것이 좀 못 마땅합니다. 처음부터 그렇게 알고 있던 정보가 아니라면 공부한다는 생각으로 다같이 공유좀 합시다~!!! ㅋㅋ(물론 출처를 밝히지 않고 자기가 쓴 글인냥 하는 것도 문제가 많습니다.)



윈 2003 서버에서 FTP 설정 사용자 격리 모드


FTP 설치는 생략 합니다. 2003서버를 설치할때 대부분 자동 설치 됩니다.

1. IIS 를 열어봅시다.(시작-모든프로그램-관리도구-인터넷정보서비스(IIS)관리)



2. [FTP 사이트]에서 오른쪽 마우스를 눌러 [새로만들기]-[FTP사이트] 클릭



3. 그럼 마법사가 뜹니다.

설명란에 test.com 이러고 적었습니다. 각자 사이트 도메인에 맞게 설정하세요



4. IP 주소와 포트 설정
IP주소란에 서버 컴퓨터의 아이피를 입력 합니다.
포트는 기본으로 21번 포트를 사용하나 제가 임의로 2010 변경 하였습니다.(변경하셔도 되고 안하셔도 됩니다.)
보안을 생각한다면 변경하고 편리를 생각한다면 그대로 사용 ^^


5. 사용자 격리 이건 이전 버전에 없던 것인데 사용자별로 FTP 사용 권한을 주기 위한 것입니다.

이전 버전에서는 각 폴더에 권한을 별도로 지정하여야 했는데 2003서버에서 조금 편리해진 기능이라고 해야 할까요?
암튼 여기서 2번째 O 에 체크를 해서 [사용자격리]로 셋팅을 해봅시다.


6. 사이트 홈디렉토리 만들기 저는 C:\ftptest 라는 폴더를 만들어서 지정 하였습니다.

혹시 폴더를 못만드시는 분은 없으시겠죠?


7. 권한 설정 읽기만 체크되어 있는데 쓰기까지 체크를 하고 다음을 눌러서 마법사를 종료 합니다.


8.  FTP 사이트가 만들어 지면 오른쪽 마우스를 눌러 속성 을 클릭


9. FTP 사이트 탭에서 보면 설정 했던 내용들이 보입니다.
제한에 기본 100,000명으로 되어 있는 것 FTP 사용자에 맞게 수정하면 되겠네요


10. 보안 계정 - 이곳이 조금 헤깔리는 곳입니다. 익명 연결을 허용하면 아무나 막 들어 올수가 있습니다. 그래서 보안에 문제가 될꺼라 생각했는데 그 반대라고들 얘기하네요~ 음...

익명 연결 허용 체크 해제하면 관리자 계정으로만 접속이 가능하기 때문에 보안에 취약하다고 합니다. 암튼 기본 체크 되어 있는 그대로 이용하겠습니다.





11. 메시지 탭은 그냥 보시면 아실테고 특별히 세팅 안해도 되어서 ...

그 다음 홈 디렉토리 입니다. 세팅 되어 있는 것들이 보입니다. 그럼 확인을 눌러서 마칩니다.

 

12. 탐색기에서 FTP 홈디렉토리(저는 c:\ftptest 가 되겠네요) 들어가서

[LocalUser] 라는 폴더를 만듭니다. 

그리고 그안에 [testuser] 라는 폴더를 만듭니다.


13. 유저 계정을 추가하겠습니다. 유저계정은 폴더 이름과 동일해야 합니다.
[시작]-[관리도구]-[컴퓨터관리] 로 들어갑니다.


14. 컴퓨터 관리에서 [로컬 사용자 및 그룹]을 클릭하고 [사용자]를 클릭합니다.
그리고 오른쪽 창에서 오른쪽 마우스를 눌러 [새 사용자]를 등록 합니다.


15. 새사용자 이름은 testuser 라고 하고 암호를 입력하시고, 암호 사용 기간 제한 없음에 체크하였습니다.



16. FTP가 잘 되는 지 확인 해봅시다.
저는 알FTP를 사용했는데 다른걸 사용해도 됩니다.
FTP 주소에 서버 IP 주소를 입력하고 사용자 아이디와 비밀번호 그리고 포트번호 (저는 2010번)을 설정한 후에 확인


17. 서버 메세지는 설정을 안했기 때문에 그냥 나오는 거구요 오른쪽 하단에 보시면
Transfer Complete 라는 문구가 보이면 성공입니다.











아래의 참고사이트 김영삼 님의 블로그(http://youngsam.kr) 와 http://ntfaq.co.kr 의 내용를 보고서 새롭게 구성한 내용입니다.

저 보단 훨씬 내공이 깊은 분들 인듯 합니다. 참조하여 보시길~ ^^




참고 사이트 1 : http://youngsam.kr/entry/Windows-2003-FTP-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B2%A9%EB%A6%AC-%EB%B0%8F-IIS-%EC%84%A4%EC%A0%95-%EC%9B%B9%ED%98%B8%EC%8A%A4%ED%8C%85%EC%9A%A9?category=26


1. 우선 IIS-FTP 를 설치한다.

2. FTP 루트디렉토리를 만든다. 여기서 난 D:\Web-Hosting\   으로 만들어따.

3. 사용자 추가 하기  새사용자를 추가한다. nforce, koojoo 두개의 계정을 만든다.테스트로.

4. D:\Web-Hosting\ 디렉토리밑에 LocalUser 를 만들고 만든디렉토리 하단에 사용자를 추가한 디렉토리를 만든다.

   이디렉토리는 ftp접속시 사용자 루트 디렉토리이다.

        D:\Web-Hosting\LocalUser\nforce

        D:\Web-Hosting\LocalUser\koojoo


만들고 나서 사용자 디렉토리 밑에 www 란 디렉토리를 만든다.

이디렉토리는 웹서비스 루트 디렉토리이다.

        D:\Web-Hosting\LocalUser\nforce\www

        D:\Web-Hosting\LocalUser\koojoo\www


5. D:\Web-Hosting\LocalUser\nforce 폴더 보안설정에서    Administrators 그룹은 그냥두고 nforce 사용자를 추가하고나서

 두계정에 [모든권한] 을 준다.  koojoo 계정도 마찬가지이다.


6. 이제 알ftp나 다른프로그램을 사용해서 접속해본다. nforce로 접속해보니 잘된다. 테스트로 파일업로드도 해보고 다운로드도 해보자.


7. 웹서비스 설정은 도메인과 ftp 유저에 맞게  D:\Web-Hosting\LocalUser\nforce\www     www 디렉토리를 지정해주면된다.ㅋ



*참고 익명 디렉토리는 D:\Web-Hosting\LocalUser\Public 식으로 지정해주면된다.


참고 사이트 2 : http://ntfaq.co.kr/3383

윈도우 서버 2003에서 추가된 “FTP 사용자 격리 모드”는 기존 운영체제(윈도우 2000)에서 제공 되지 않았던 기능을 포함 하고 있다. 그러한 추가 된 기능에 대해서 서술 하도록 하겠다.

단, 아래 기능은 윈도우 서버 2003에서만 제공되는 기능입니다.
그러한 기능은 아래 표1에서 자세하게 설명 하고 있다. 

사용자 삽입 이미지

윈도우 서버 2003에서는 사용자에 대한 격리모드 작업으로 개별 사용자에게 별도의 권한 설정 작업을 따로 NTFS 작업을 통하지 않고도 가능하도록 제공한다. 이를 통한 활용 방안으로 디스크 할당량을 통해서 웹 호스팅 사용자에게 200Mb 씩 제공하고자 할 경우에도 적당하게 사용 할 수 있다. (적용 사례: 웹 호스팅 및 FTP 서비스)

단 한번 적용 하게 되면 다른 모드로 변경은 새롭게 작업 해야만 한다.
그 외 다른 모드는 아래 표를 참고 하기를 바란다.
사용자 삽입 이미지

 

1. FTP 사용자 격리 모드 작업 방법
  1. 새로운 가상 FTP 사이트 생성 작업 한다.
  2. 사용할 이름과 포트 등을 생성 한다.
  3. 그림1에서 “사용자 격리” 부분을 체크 후 다음을 클릭한다. 


    사용자 삽입 이미지
    [그림1] FTP 사이트 마법사 시 서비스 할 모드 선택 화면

  4. 사용자 격리 할 새로운 디렉터리를 선택 한다.
  5. FTP 홈 디렉터리 밑에 꼭 “LocalUser” 디렉터리를 만든 후 그 밑에 사용자 계정과 동일한 폴더를 추가적으로 생성 한다.(sshong는 username입니다.)
    예 : D:FTP 사용자 격리모드LocalUsersshong 


    사용자 삽입 이미지
    [그림2] FTP 사이트 디렉터리

  6. 보안 설정 부분에서는 아래 그림과 같이 작업 진행을 한다. 


    사용자 삽입 이미지
    [그림3] 익명 연결만 허용 하도록 설정된 화면

  7. 위와 같이 ftp 프로그램을 통해서 접속해 본다.


만약 작업 시 아래와 같은 에러가 발생 했다면:
“530 User test cannot log in, home directory inaccessible.
Login failed. “
이런 경우는 실제 접근할 홈 디렉터리가 접근 할 수가 없어서 나타나는 에러메시지이다. 홈 디렉터리를 만들지 않을 경우도 나타남(예: LocalUserUsername)


2. 웹 호스팅 사용자에게 200Mb 씩 제공하고자 할 경우

웹 호스팅(FTP 서비스 시)을 사용하게 될 경우 회원 분들에게 용량을 제한을 두고자 한다면 잘 지켜지지 않고 사용하는 경우가 많다. 그러한 경우 관리적인 부분에서는 다소 문제가 되기 때문에 사전에 이러한 규칙을 만들어서 시스템에 적용 시키는 것도 하나의 방법이다.
  • 1단계, FTP 사용자 격리 서비스 만든다.
  • 2단계, 디스크 할당량 서비스를 제공한다.
  • 3단계, 웹사이트 관리메뉴에서 각각의 웹사이트 구성한다.

필독, 3단계 작업 진행 후 FTP 사용자 격리모드인 경우는 CREATOR OWNER 권한이기 때문에 Everyone 권한을 추가해야 웹 서비스를 사용을 할 수 있을 것이다. 


사용자 삽입 이미지
[그림4] FTP 사용자 격리모드에 사용자 권한 제어 화면

3단계 자료는 “IIS 5.0 에서 하나의 IP로 여러 개의 웹사이트 운영하기”을 참고자료를 참고 요망

위 단계에서 FTP 사용자 격리모드 작업을 통해서 사전 작업을 마친 후에 아래와 같은 작업 진행을 하도록 한다.
  1. FTP 격리모드 홈 디렉터리를 선택 후 속성모드에서 할당량 작업을 진행한다.
  2. 새 할당량 항목을 추가 후 필요한 사용자만 적용 시킨다. 


    사용자 삽입 이미지
    [그림5]할당량에서 사용자 선택 화면

  3. 확인을 클릭 후에는 이름과 사용된 용량 등을 검색하는 작업을 잠시 하게 되며 바로 아래와 같은 화면으로 사용된 용량들을 표시 하게 된다. 


    사용자 삽입 이미지
    [그림6]사용자 할당량 표시 정보 화면

  4. 설정 전에 할당량 구성 화면 


    사용자 삽입 이미지
    [그림7] 할당량 작업 시 체크 할 항목들


용량이 초과 된 사용자를 관리하고자 할 경우 :
  • 특정한 사용자가 디스크 용량이 초과 시 시스템에서는 이벤트가 나타나게 되는데 내용은 “드라이브 사용자 할당량 제한에 도달했습니다.” 등과 같은 메시지가 나타난다.
  • 그림7에서 볼 수 있는 할당량 항목을 체크 해도 사용자 별 할당량을 체크 할 수 있다.
  • 사전에 할당량 한도를 넘는 사용자에게 디스크 공간 주지 않음이나 경고메시지를 제공하는 것도 하나의 방법이다.

이와 같은 방법은 각각의 회원 분들에게 적당하게 사용 할 수 있도록 권유 할 수 있다.

728x90

'프로그래밍 > asp' 카테고리의 다른 글

Edit plus ftp upload 안 될때 해결 법  (0) 2011.10.05
SMTP, POP3로 메일 서버 구축하기  (0) 2011.09.16
winhttp 사용법  (0) 2011.08.22
ASP에서 UTF-8로 저장하기  (0) 2011.08.03
ASP에서 CSV 파일 생성하기  (0) 2011.08.03
728x90
2010/03/15 19:43

DBCC SHRINKFILE 트랜잭션 로그파일 축소


SQL Server 2005에서 DBCC SHRINKFILE 문을 사용하여 트랜잭션 로그 파일을 축소하는 방법

SQL Server 2005에서는 축소 작업(DBCC SHRINKFILE)이 지정한 트랜잭션 로그 파일을 요청된 크기로 즉시 축소하려고 합니다. 전체 복구 모델에서 트랜잭션 로그 파일을 수동으로 축소하려면 먼저 트랜잭션 로그 파일을 백업한 다음 DBCC SHRINKFILE 문을 사용하여 트랜잭션 로그 파일을 축소하십시오.

일반적으로 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것은 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 것보다 빠릅니다. 이는 SQL Server 2005 로그 관리자가 실제 디스크 저장 장치 순서에 따라 비활성 가상 로그 파일을 만들거나 다시 사용하기 때문입니다. 따라서 트랜잭션 로그 파일의 비활성 부분은 대개 파일의 끝에 있습니다.

예를 들어, 트랜잭션 로그 파일에 100개의 가상 로그 파일이 있을 수 있고 2개의 가상 로그 파일만 사용되는 경우 SQL Server 2000은 첫 번째로 사용된 가상 로그 파일을 트랜잭션 로그 파일의 시작 부분에 저장하고 두 번째로 사용된 가상 로그 파일을 트랜잭션 로그 파일의 중간 부분에 저장합니다. 트랜잭션 로그 파일을 두 개의 가상 로그 파일로만 축소하기 위해 SQL Server는 더미 로그 항목을 사용하여 두 번째 가상 로그 파일의 나머지 부분을 채웁니다. SQL Server는 논리 로그의 시작 부분을 로그 관리자가 지정하는 사용 가능한 다음 가상 로그 파일로 이동합니다. 로그 관리자는 마지막 활성 가상 로그 파일 바로 앞에 있는 트랜잭션 로그 파일의 중간 부분에 가상 로그 파일을 만들 수 있습니다. 이 경우 트랜잭션 로그 파일을 두 개의 가상 로그 파일로 축소하기 위해 여러 개의 로그 백업 작업과 로그 축소 작업을 사용해야 합니다. 최악의 경우 트랜잭션 로그 파일을 두 개의 가상 로그 파일로 축소하기 위해 각각 50개씩의 로그 백업 작업과 로그 축소 작업을 사용해야 할 수도 있습니다.

그러나 SQL Server 2005에서는 하나의 DBCC SHRINKFILE 문을 사용하여 트랜잭션 로그 파일을 즉시 두 개의 가상 로그 파일로 축소할 수 있습니다. 이는 SQL Server 2005 로그 관리자가 실제 디스크 저장 장치 순서에 따라 두 개의 가상 로그 파일을 만들기 때문입니다. 이 두 개의 가상 로그 파일은 모두 트랜잭션 로그 파일의 시작 부분에 저장됩니다.

SQL Server 2005에서 여유 공간이 거의 없는 트랜잭션 로그 파일을 축소하려는 경우 추가 로그 백업 작업을 수행해야 할 수 있습니다. 추가 로그 백업 작업을 수행하면 트랜잭션 로그 파일이 더 작은 크기로 잘립니다. 이 로그 백업 작업은 SQL Server 2000에서 트랜잭션 로그 파일의 축소를 위해 수행하는 세 단계 이외에 추가로 수행하는 작업입니다. 자세한 내용은 "소개" 절에서 언급한 Microsoft 기술 자료 문서를 참조하십시오. SQL Server 2005에서 여유 공간이 거의 없는 트랜잭션 로그 파일을 축소하려면 다음과 같이 하십시오.
  1. 트랜잭션 로그 파일을 백업하여 대부분의 활성 가상 로그 파일을 비활성화합니다. 이렇게 하면 나중에 비활성 가상 로그 파일을 제거할 수 있습니다. 이렇게 하려면 다음 Transact-SQL 문과 유사한 Transact-SQL 문을 실행하십시오.
    BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'
    참고 이 문에서 <DatabaseName>은 백업할 데이터베이스 이름의 자리 표시자이고, <BackupFile>은 백업 파일의 전체 경로에 대한 자리 표시자입니다.

    예를 들어, 다음 Transact-SQL 문을 실행하십시오.
    BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
  2. 트랜잭션 로그 파일을 축소합니다. 이렇게 하려면 다음 Transact-SQL 문과 유사한 Transact-SQL 문을 실행하십시오.
    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
    참고 이 문에서 <FileName>은 트랜잭션 로그 파일 이름의 자리 표시자이고, <TargetSize>는 트랜잭션 로그 파일의 대상 크기에 대한 자리 표시자입니다. 대상 크기는 합리적이어야 합니다. 예를 들어, 두 개의 가상 로그 파일보다 작은 크기로 트랜잭션 로그 파일을 축소할 수는 없습니다.
  3. DBCC SHRINKFILE 문이 트랜잭션 로그 파일을 대상 크기로 축소하지 않을 경우 1단계에서 언급한 BACKUP LOG 문을 실행하여 가상 로그 파일을 추가로 비활성화합니다.
  4. 2단계에서 언급한 DBCC SHRINKFILE 문을 실행합니다. 이 작업을 수행하고 나면 트랜잭션 로그 파일이 대상 크기와 비슷해집니다.
요약하면 SQL Server 2005에서는 다음 가상 로그 파일을 선택하는 로그 관리자의 알고리즘이 변경되었습니다. 따라서 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 방법이 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 방법과 다를 수 있습니다.
  • 로그 파일에 여유 공간이 많으면 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것이 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 것보다 빠릅니다.
  • 로그 파일에 여유 공간이 없으면 SQL Server 2005에서 트랜잭션 로그 파일을 축소하는 것과 SQL Server 2000에서 트랜잭션 로그 파일을 축소하는 것이 같습니다.
  • 로그 파일에 여유 공간이 거의 없으면 SQL Server 2000에서 수행해야 하는 것보다 더 많은 추가 로그 백업 작업을 SQL Server 2005에서 수행해야 합니다.

SQL Server 2000에서 DBCC SHRINKFILE을 사용하여 트랜잭션 로그를 축소하는 방법

DBCC SHRINKFILE을 실행할 때 SQL Server는 먼저 가상 로그 파일을 제거하여 로그 파일을 축소합니다. 대상 파일 크기로 축소되지 않았으면 SQL Server는 가상 로그가 채워질 때까지 마지막 가상 로그 파일에 더미(Dummy) 로그 항목을 넣고 로그의 윗 부분을 파일의 시작 위치로 옮깁니다. 그런 다음 트랜잭션 로그를 축소하는 작업을 완료하기 위해 아래와 같은 작업이 필요합니다.

  • 로그의 활성 부분을 비우기 위해 BACKUP LOG 문을 실행합니다.
  • 로그 파일이 대상 크기로 줄어들 때까지 원하는 대상 크기를 사용하여 DBCC SHRINKFILE을 다시 실행합니다.
아래 예제에서는 pubs 데이터베이스를 사용할 때 이 방법을 사용하여 pubs_log 파일을 2MB로 축소하는 단계를 보여줍니다.
  1. DBCC SHRINKFILE(pubs_log, 2)을 실행합니다.
  2. 대상 크기로 축소되지 않고 아래와 같은 메시지가 반환됩니다.
    모든 논리 로그 파일이 사용 중이므로 로그 파일 2(Pubs_log)을(를) 축소할 수 없습니다.
    DbId  FileId  CurrentSize  MinimumSize UsedPages     EstimatedPages 
    ----- ------- ------------ ----------- ------------- ------------------ 
    6     2       3048         128         3048          128  <- 여기 있는 모든 값은 변할 수 있습니다.
     
    (1개 행 적용됨)
     
    DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.
    
  3. BACKUP LOG pubs WITH TRUNCATE_ONLY를 실행합니다.
  4. DBCC SHRINKFILE(pubs_log,2)을 실행합니다.
  5. 이제 트랜잭션 로그가 대상 크기로 줄어듭니다.

자세한 내용은 SQL Server 2000 Books Online에서 "Shrinking the Transaction Log" 항목과 "DBCC SHRINKFILE" 항목을 참조하십시오.


SQL Server 7.0 트랜잭션 로그를 줄이는 방법

  • Microsoft SQL Server 7.0에서 SHRINKFILE 및 SHRINKDATABASE 명령은 줄이려는 목표 크기를 설정합니다. 각 로그 파일은 이들 명령에 의해 표시되지만, 실제로 파일을 줄이기 위해 로그 백업이나 로그 자르기를 시도하지는 않습니다. 따라서 SHRINKFILE 또는 SHRINKDATABASE 명령을 사용한 후에는 로그 자르기 명령을 통해 파일을 줄이기 전에 로그를 자르는 명령을 실행해야 합니다.
  • 아래의 기준에서 허용하는 크기보다 작은 크기로 로그를 줄일 수 없습니다.

    • 원래 크기보다 로그를 작게 줄이려면 개별 파일을 DBCC SHRINKFILE을 사용하여 줄여야 합니다. DBCC SHRINKDATABASE를 사용하면 로그를 원래 크기나 명시적으로 정의한 크기보다 작게 줄일 수 없습니다. CREATE DATABASE에 모든 명시적 ALTER DATABASE 명령이 더해지므로 원래 크기는 로그의 크기로 정의됩니다. 로그의 자동 증가는 원래 크기에 포함되지 않습니다.

    • 실제 로그 파일은 해당 로그 파일 내에서 현재 사용되고 있는 공간의 양보다 작을 수 없습니다. DBCC SQLPERF (LOGSPACE) 명령을 사용하면 사용된 공간의 양을 모니터 할 수 있습니다.

    • Model 데이터베이스 로그의 현재 크기는 해당 서버에 있는 모든 데이터베이스 로그의 최소 크기입니다. 기본적으로 Model 데이터베이스의 로그는 1MB보다 작습니다.

    • 로그를 가상 로그 파일(VLF) 경계까지만 줄일 수 있으므로 공간을 사용하고 있지 않은 경우에도 로그 파일을 VLF보다 작은 크기로 줄이는 것은 불가능합니다. 마찬가지로 VLF의 일부를 사용 중인 경우 해당 VLF에서 사용 중인 공간은 줄일 수 없습니다. 자세한 내용은 SQL Server Books Online의 "Virtual Log Files" 및 "Transaction Log Physical Architecture" 항목을 참조하십시오

  • 트랜잭션 로그는 "랩어라운드" 로그입니다. 이는 특정 시간에 로그 시작 부분 및/또는 끝 부분에 "여유" 또는 "재사용 가능" 공간이 있는 VLF가 있을 수 있음을 의미합니다. 로그를 줄이려면 해당 로그의 여러 곳에 여유 공간이 있어야 하는 것이 아니라 해당 로그의 끝 부분에 "여유" 공간이 있어야 합니다. 또한, 전체 VLF를 줄일 수만 있습니다. 트랜잭션 로그를 줄이려면 로그 파일의 끝에 있는 VLF가 비활성화되어 잘려야 합니다. 자세한 내용은 SQL Server Books Online의 "Truncating the Transaction Log" 항목을 참조하십시오.
다음 몇 가지 사항에 유의하십시오.
  • 시스템에 영향을 미치는 변경 작업을 수행하기 전이나 후에 항상 시스템 데이터베이스 및 사용자 데이터베이스 백업을 수행하십시오. DBCC SHRINKFILE 및 DBCC SHRINKDATABASE는 로깅되는 작업이 아니며, 이들을 실행하면 향후 트랜잭션 로그 백업도 무효화됩니다. DBCC SHRINKFILE 명령이나 DBCC SHRINKDATABASE 명령 중 하나를 실행한 후에는 반드시 전체 데이터베이스 백업을 수행해야 합니다.

  • 축소가 진행될 시간에 예약된 백업이 없는지 확인하십시오.

  • 오래되거나, 장기간 실행하거나 또는 복제되지 않은 트랜잭션이 없는지 확인하십시오. 이렇게 확인하려면 다음과 유사한 코드를 사용하십시오.
    DBCC OPENTRAN (database_name)
  • DBCC SHRINKFILE 명령이나 DBCC SHRINKDATABASE 명령을 실행하여 축소 지점을 표시하십시오. DBCC SHRINKFILE 및 DBCC SHRINKDATABASE 사용 권한은 sysadmin 고정 서버 역할이나 db_owner 고정 데이터베이스 역할의 멤버에 기본적으로 제공되며, 권한 전가는 불가능합니다. 이들 명령의 차이점에 대한 자세한 내용은 SQL Books Online의 다음 항목을 참조하십시오. 매개 변수가 다름에 유의하십시오.

    DBCC SHRINKFILE     (file_name, target_size)
    DBCC SHRINKDATABASE (database_name, target_percent)
  • 더미(dummy) 트랜잭션을 몇 개 만들어 로그를 겹치게 만든 후 BACKUP 명령을 실행하여 로그를 자르십시오. BACKUP 문은 실제로 표시된 목표 크기로 로그를 줄이고자 시도합니다.

    다음은 줄일 수 있도록 단일 논리 로그 파일에 대해 로그를 겹치고 로그가 잘리게 하는 더미 트랜잭션을 만드는 방법의 샘플입니다. 필요하면 사용자 환경에 맞게 샘플을 수정하십시오.
    SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
            @MaxMinutes INT,
            @NewSize INT
     
    -- *** MAKE SURE TO CHANGE THE NEXT 3 LINES WITH YOUR CRITERIA. ***
    USE     Your_Database_Name              -- This is the name of the database 
    for which the log will be shrunk.
    SELECT  @LogicalFileName = 'Your_log',  -- Use sp_helpfile to identify the logical file name that you want to shrink.
            @MaxMinutes = 10,               -- Limit on time allowed to wrap log.
            @NewSize = 100                  -- in MB
     
    -- Setup / initialize
    DECLARE @OriginalSize int
    SELECT @OriginalSize = size -- in 8K pages
      FROM sysfiles
      WHERE name = @LogicalFileName
    SELECT 'Original Size of ' + db_name() + ' LOG is ' + 
            CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + 
            CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
      FROM sysfiles
      WHERE name = @LogicalFileName
    CREATE TABLE DummyTrans
      (DummyColumn char (8000) not null)
     
     
    -- Wrap log and truncate it.
    DECLARE @Counter   INT,
            @StartTime DATETIME,
            @TruncLog  VARCHAR(255)
    SELECT  @StartTime = GETDATE(),
            @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
    -- Try an initial shrink.
    DBCC SHRINKFILE (@LogicalFileName, @NewSize)
    EXEC (@TruncLog)
    -- Wrap the log if necessary.
    WHILE     @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
          AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  -- the log has not shrunk    
          AND (@OriginalSize * 8 /1024) > @NewSize  -- The value passed in for new size is smaller than the current size.
      BEGIN -- Outer loop.
        SELECT @Counter = 0
        WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
          BEGIN -- update
            INSERT DummyTrans VALUES ('Fill Log')  -- Because it is a char field it inserts 8000 bytes.
            DELETE DummyTrans
            SELECT @Counter = @Counter + 1
          END   -- update
        EXEC (@TruncLog)  -- See if a trunc of the log shrinks it.
      END   -- outer loop
    SELECT 'Final Size of ' + db_name() + ' LOG is ' +
            CONVERT(VARCHAR(30),size) + ' 8K pages or ' + 
            CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
      FROM sysfiles 
      WHERE name = @LogicalFileName
    DROP TABLE DummyTrans
    PRINT '*** Perform a full database backup ***'
    SET NOCOUNT OFF
    로그가 원래 크기에서 줄여졌는지 확인하십시오.필요한 경우 앞의 단계를 반복하십시오. 로그가 줄여지지 않을 경우 본 문서의 시작 부분에 나와 있는 요약 정보를 점검하여 로그를 줄이는 데 문제가 있는지 확인하십시오.
로그를 줄였으면 다음을 수행하십시오.
  1. 마스터 데이터베이스를 전체 데이터베이스 백업합니다.
  2. 사용자 데이터베이스를 전체 데이터베이스 백업합니다. SHRINK 명령이 로깅되지 않고, 전체 데이터베이스 백업을 완료하지 않으면 향후 트랜잭션 로그 백업이 무효화되기 때문에 이러한 작업이 필요합니다.

로그가 커지는 이유를 확인하려면 열린 트랜잭션, 장기간 실행되는 트랜잭션, 복제되지 않은 트랜잭션 또는 많은 양의 데이터를 사용하는 트랜잭션을 점검하면 됩니다.


데이터베이스 파일명 찾기

sp_helpfile
GO

위의 쿼리를 실행하면 트랜잭션 로그명을 알수 있습니다.


원문:
http://support.microsoft.com/kb/907511/ko
http://support.microsoft.com/kb/272318/
http://support.microsoft.com/kb/256650/KO/

728x90

'프로그래밍 > MS_SQL' 카테고리의 다른 글

MSSQL 테이블 소유자 변경  (0) 2012.09.05
트랜젝션 고립화 수준  (0) 2012.06.25
MSSQL identity 값 초기화  (0) 2012.04.04
Foreign key 설정  (0) 2012.03.14
인터넷서점 모델링  (0) 2012.03.08
728x90

http://msdn.microsoft.com/en-us/library/aa384106(VS.85).aspx
Status : http://msdn.microsoft.com/en-us/library/aa383887(VS.85).aspx

Public WithEvents WinHttp As WinHttpRequest
Dim DownSize as Long

Private Sub WinHttp_OnResponseStart(ByVal Status As Long, ByVal ContentType As String)
'Start
DownSize = CLng(WinHttp.GetResponseHeader("Content-Length"))
If Not Dir(App.Path & "\" & App.EXEName & "-Old.exe") = vbNullString Then
  Kill App.Path & "\" & App.EXEName & "-Old.exe"
End If
Name App.Path & "\" & App.EXEName & ".exe" As App.Path & "\" & App.EXEName & "-Old.exe"
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
End Sub

Private Sub WinHttp_OnResponseDataAvailable(Data() As Byte)
If DownSize > 0& Then
  Put #1, , Data()
End If
DoEvents
End Sub

Private Sub WinHttp_OnError(ByVal ErrorNumber As Long, ByVal ErrorDescription As String)
'Err
End Sub

Private Sub WinHttp_OnResponseFinished()
'End
Close #1
End Sub

파일 다운로드 예를 이벤트에 첨가 해두었습니다.
WinHttp COM 객체는 대용량 파일 다운로드에는 적합하지 못합니다.
제공되는 관련 API 를 이용하세요.

'적절한 곳에 넣어줍니다.
'Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
Set WinHttp = New WinHttpRequest

WinHttp.Open "GET", "http://주소", True
WinHttp.Send "PARAM=1000"
WinHttp.WaitForResponse //완료까지 기다림
msgbox WinHttp.ResponseText
msgbox WinHttp.ResponseBody

728x90

'프로그래밍 > asp' 카테고리의 다른 글

SMTP, POP3로 메일 서버 구축하기  (0) 2011.09.16
windows 2003 ftp 설정  (0) 2011.09.05
ASP에서 UTF-8로 저장하기  (0) 2011.08.03
ASP에서 CSV 파일 생성하기  (0) 2011.08.03
ON Error Resume Next  (0) 2011.06.24
728x90

1. http://www.taeyo.pe.kr/Lecture/20_TIps/Danny02.asp 참고
 
1. 모든 ASP 코드 페이지 첫줄에 다음과 같은 코드를 추가합니다
<% @LANGUAGE='VBSCRIPT' CODEPAGE='65001' %>
 
2. Meta 테그를 다음과 같이 추가 합니다.
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
 
3. 에디트플러스나 울트라 에디터에서 수정후 저장할 때 반드시 Encoding 방식을 UTF-8 로 저장합니다
 
4.DB Insert/Update 시 숫자 타입을 제외한 모든 대상에 N을 추가 합니다
Insert [into] table_name [(column_list)] Value N[data_value]
 
5.DB like 검색시 N 추가
 
6. 파일 첨부 DEXT Upload사용(영문으로 설치)
 SET uploadform = Server.CreateObject("DEXT.FileUpload")
 uploadform.DefaultPath = Server.MapPath(ESP_BBS_DATA)
 uploadform.CodePage = 65001
 wFileSize = 0
 rAttachment = uploadform("txtAttachFile")
 
 If Len(rAttachment) > 0 Then
  wFileName =  uploadform("txtAttachFile").FileName
  wFileSize =  uploadform("txtAttachFile").FileLen
 
  response.write uploadform.DefaultPath
  rAttachment = uploadform.SaveAs(uploadform.DefaultPath & "" & wFileName , False)
  rAttachment = UploadForm.LastSavedFileName
 End If
 
7. 파일 다운로드
 
<% @LANGUAGE='VBSCRIPT!' CODEPAGE='65001' %>
<%
 'Response.Charset = "UTF-8"
 filepath = Request.QueryString("txtFilepath") '// form으로 파라메터 전달해야 함.
 filename = Request.QueryString("txtFilename")'// form으로 파라메터 전달해야 함.
 
 If filepath = "" Then
  filepath=server.MapPath( Request.QueryString("txtFilename"))
  filename = Mid(filepath, InStrRev(filepath, "")+1)
 Else
  filepath=server.MapPath(filepath)
  filename =  Request.QueryString("txtFilename")
  If filename = "" Then
   filename = Request.QueryString("txtattachment")
  End If
 End If

 filepath = filepath &"" & filename
Call FileDown
%>
 
<%
Sub FileDown
' 참고http://www.taeyo.pe.kr/Lecture/20_TIps/Danny03.asp
 
 Response.Buffer = False
 Response.ContentType = "application/x-msdownload"
 'ContentType 를 선언합니다.
 'server.HTMLEncode
 'server.URLPathEncode
 Response.AddHeader "Content-Disposition","attachment; filename=" & server.URLPathEncode(filename) '//server.URLPathEncode 사용해야만 파일명 재대로 출력
 '헤더값이 첨부파일을 선언합니다.
 Set objStream = Server.CreateObject("ADODB.Stream")
 'Stream 을 이용합니다.
 objStream.Open
 '무엇이든 Set 으로 정의했으면 열어야 겠지요^^
 objStream.Type = 1
 objStream.LoadFromFile filepath
 '절대경로 입니다.
 download = objStream.Read
 Response.BinaryWrite download
 '이게 보통 Response.Redirect 로 파일로 연결시켜주는 부분을 대신하여 사용된 것입니다.
 Set objstream = nothing
 '초기화시키구요.
End Sub
%>
 
<%
Sub DEXTDown   ' DEXT.FileDownload 는 일본어 OS에 영문으로 설치시 한글파일 찾지 못함.(DextUpload 2.0까지는 그랬음)
 'On Error Resume Next
 Response.Buffer = False
 Response.AddHeader "Content-Disposition","inline;filename=" &  server.URLPathEncode(filename)
 set objFS = Server.CreateObject("Scripting.FileSystemObject")

 set objF = objFS.GetFile(filepath)
 
 Response.AddHeader "Content-Length", objF.Size
 set objF = nothing
 set objFS = nothing
 Response.ContentType = "application/x-msdownload"
 Response.CacheControl = "public"
 Set objDownload = Server.CreateObject("DEXT.FileDownload")
 objDownload.Download filepath
 Set uploadform = Nothing
End Sub
%>
 
8. CDO Mail발송
Dim iMsg
Dim iConf
Dim Flds
Dim strHTML
Const cdoSendUsingPort = 2 '1:로컬, 2:외부 smtp
set iMsg = CreateObject("CDO.Message")
set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
Flds.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  '포트번호
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") =  "" 'ID
Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") =  "" '암호

Flds.Update
Set iMsg.Configuration = iConf
iMsg.To = "xxxx@xxx.ccx" 'ToDo: Enter a valid email address.
iMsg.From = "xxxx@xxx.ccx"  'ToDo: Enter a valid email address.
iMsg.Subject = "This is a test CDOSYS message (Sent via Port 25)"
 
'iMsg..TextBody = strHTMLMsg '// 텍스트
iMsg.HTMLBody = strHTML  '// HTML 제목 깨짐 발생..

iMsg.BodyPart.Charset="UTF-8" '/// 한글을 위해선 꼭 넣어 주어야 합니다.
iMsg.HTMLBodyPart.Charset="UTF-8" '/// 한글을 위해선 꼭 넣어 주어야 합니다.
iMsg.Send
End With
Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing
 
 
9. ASP에서 배달 확인/ 읽음 확인 구현 방법 http://tong.nate.com/windeo/5767827

http://support.microsoft.com/default.aspx?scid=kb;ko;286430

<%
Set oMsg = CreateObject("CDO.Message")
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
‘ 생성되는 메시지가 SMTP pickup 디렉터리가 아닌 SMTP 서비스로 전송되게 합니다.
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "이름"
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxxx"
oMsg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "seo-msg-01"
‘ 생성되는 메시지의 서버, 사서함 및 암호
oMsg.Configuration.Fields.Update

oMsg.From = "smpark@microsoft.com"
oMsg.To = "smpark@microsoft.com"

oMsg.Subject = "읽음 확인 및 배달 확인"
oMsg.DSNOptions = 14
‘ 이 메시지의 배달 상태 확인(delivery status notification:DSN)값으로 14는 배달 성공, 실패 및 지연시
‘ 확인메시지 생성
oMsg.Fields("urn:schemas:mailheader:return-receipt-to") = smpark@microsoft.com <mailto:smpark@microsoft.com>
‘ 받는 사람이 이 메시지를 열었을 때 읽음 확인 메시지가 여기에서 지정된 사람에게 보내집니다.
oMsg.Fields("urn:schemas:mailheader:disposition-notification-to") = smpark@microsoft.com <mailto:smpark@microsoft.com>
‘ MDN(Message Disposition Notification)은 이 메시지의 확인 메시지가 리턴 될 수신자를 지정합니다.
‘ MDN에 대하여는 Request for Comments (RFC) 2298에 자세히 설명됩니다.
oMsg.TextBody = " SMTP 서버를 통한 읽음 확인 및 배달 확인 메시지"
oMsg.Fields.Update
oMsg.Send

Set oMsg = Nothing
%>
 

728x90

'프로그래밍 > asp' 카테고리의 다른 글

windows 2003 ftp 설정  (0) 2011.09.05
winhttp 사용법  (0) 2011.08.22
ASP에서 CSV 파일 생성하기  (0) 2011.08.03
ON Error Resume Next  (0) 2011.06.24
ASP 오류 'ASP 0115'  (0) 2011.06.15
728x90

<%
' 여기서 엑셀 파일명 지정
filename = "apply_plt_excel"

Response.Buffer = TRUE
Response.ContentType = "application/vnd.ms-excel"

Response.AddHeader "Content-disposition","attachment;filename=" & filename & ".xls"
%>

 

<!-- METADATA TYPE="typelib" FILE="C:\Program Files\common files\system\ado\msado15.dll" -->

<%
filename = "list"
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition","attachment; filename=" & filename & ".csv"
%>


<!-- METADATA TYPE="typelib" FILE="C:\Program Files\common files\system\ado\msado15.dll" -->
맨위 상단에 선언하시구여..

해드 부분에 밑에 처럼.. 하시면 됩니다.
Response.ContentType="application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename="&date()&".csv"

그리고 이 이하로는 html로.. 디잔 만드시고.. 데이타 뿌릴내용 일반 게시판 짜듯이 하셔서 하심 됩니다.

참고로 위에 보심 data()이기 때문에 파일이름이 현재날짜.csv로 저장되겟네요...

 

 

 

<script language = "javascript">
function Save()
{
Some.document.open("csv","replace")
// Some.document.write(document.documentElement.outerHTML )
// Some.document.close()
// Some.focus()
Some.document.execCommand('SaveAs','csv')
}
</script>

<iframe id="Some" name="Some" style="display:none" src="statistics.asp"></iframe>
<input type="button" value="저장" onClick="javascript:Save()"></p>

 

 


부탁드립니다...
우선 아래 소스코드는 웹사이트에서 찾았구요...
직접 csv파일을 생성해보려구 데이터베이스, 테이블 설계와 데이터입력후
아래 코드와 같이 작성후 웹브라우저를 이용해 테스트해보았는데,,
아래와 같은 오류가 나오던데,,, 혹시 아시면 도움말좀 부탁드리겠습니다.
############################################################
오류 형식:
ADODB.Recordset (0x800A0BB9)
잘못된 형식이거나 올바른 범위 밖에 있거나 서로 충돌하는 인수입니다.
/asp테스트/csv.asp, line 16
############################################################

<%
Response.Buffer = True
Response.Expires = 0
dim strSQL '변수 정의
dim strFile
<!--#include file=adovbs.inc-->


set dbobj = server.createobject("adodb.connection") 'DB오브젝트
dbobj.open "dsn=lock;uid=lock;pwd=12345;" 'DSN을 이용한 DB open
Set oRS = Server.CreateObject("ADODB.Recordset")

strSQL = "SELECT field1, field2 , field3, field4, field5"
strSQL = trSQL & " FROM csv_test"
strSQL = strSQL & " WHERE field1 = 'condition'"
oRS.Open strSQL, dbobj, adOpenForwardOnly, adLockReadOnly, adCmdText '상수로 선언
된 부분 필요

%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>EXCEL 파일 생성</title>
</head>
<body>
<%
CreateCSVFile() 'EXCEL 파일 생성 함수화

Set oRS = Nothing
Set oConn = Nothing
Response.Flush
%>
</body>
</html>

<SCRIPT LANGUAGE=vbscript RUNAT=Server>
Function GenFileName() '파일 이름을 만드는 부분
dim fname
fname = "fileheader"
GenFileName = fname
End Function

Function CreateCSVFile() '실제 엑셀파일을 생성 하는 부분
'파일 시스템 오브젝트를 이용한 파일 생성
strFile = GenFileName() ' FILE이름 생성(함수 호출)
Set fs = Server.CreateObject("Scripting.FileSystemObject") '해당 경로에 파일 확장
명이 csv인 파일을 생성한다.
Set a = fs.CreateTextFile("d:/test" & "\" & strFile & ".csv",True)
If Not oRS.EOF Then
strtext = chr(34) & "컬럼1" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼2" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼3" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼4" & chr(34) & ","
strtext = strtext & chr(34) & "컬럼5" & chr(34) & ","
a.WriteLine(strtext)
Do Until oRS.EOF '조건에 맞는 레코드가 있을 때까지 파일에 input
For i = 0 To oRS.fields.Count-1
strtext = oRS.fields(i) & chr(34) & ","
a.Write(strtext)
Next
a.Writeline()
oRS.MoveNext
Loop
End If
a.Close
Set fs=Nothing
End Function

</SCRIPT>

 

728x90

'프로그래밍 > asp' 카테고리의 다른 글

winhttp 사용법  (0) 2011.08.22
ASP에서 UTF-8로 저장하기  (0) 2011.08.03
ON Error Resume Next  (0) 2011.06.24
ASP 오류 'ASP 0115'  (0) 2011.06.15
asp 함수 정리  (0) 2011.06.08

+ Recent posts