1. 노턴 안티바이러스가 설치되있는 경우 스크립트 차단기능 때문에 FSO 사용시 Hang 발생한다.

해결법 : 노턴 안티바이러스 환경설정-옵션에서 스크립트 차단기능 해제하고 재부팅 하라는 내용.

PRB: Antivirus Software Causes FileSystemObject Calls to Hang IIS (Q295375)

--------------------------------------------------------------------------------
The information in this article applies to:


Microsoft Active Server Pages


--------------------------------------------------------------------------------


SYMPTOMS
When you browse an Active Server Pages (ASP) page that contains FileSystemObject calls, the request
for that page stops responding (hangs) and eventually times out in the browser.



CAUSE
This problem occurs because the Script Blocking feature in Norton AntiVirus software blocks
scripting operations that access the file system, such as FileSystemObject . Although this problem
is prevalent in Active Server Pages (ASP) Web applications, it can also occur in other
technologies, such as Windows Scripting.

NOTE: This problem occurs even if Norton AntiVirus has been disabled.



RESOLUTION
To resolve this problem, contact Norton AntiVirus Software Support. The following Symantec Web site
describes how to remove the Script Blocking feature:

http://service1.symantec.com/SUPPORT/nav.nsf/aab56492973adccd8825694500552355/399a443be88ce25788256a
0e0068e180?OpenDocument
NOTE : You may have to reboot the server after you make the above-mentioned changes to the Norton
AntiVirus software.

The third-party contact information included in this article is provided to help you find the
technical support you need. This contact information is subject to change without notice. Microsoft
in no way guarantees the accuracy of this third-party contact information.



--------------------------------------------------------------------------------
Published Apr 10 2001 8:10AM Issue Type kbprb
Last Modifed Oct 30 2001 10:35AM Additional Query Words hang fail Anti-Virus iis 5
Keywords kbASP kbScript kbSecurity kbWebServer kbGrpDSASP kbDSupport kbFSO


Posted by Gu Youn
,
1. smalldatetime 타입 컬럼에 인서트 하기

ms-sql server의 smalldatetime에 인서트 하기 위해서는 YYYY-MM-DD HH:II:SS으로 변환해야 한다.

'asp 예제..
'YYYY-MM-DD HH:II:SS 형식으로 변환
end_time = Year(now)&"-"&Month(now)&"-"&Day(Now)&" "&FormatDateTime(now, 4)

2. 같은 이름의 form 요소 배열로 처리하기
  html에 파일의 인풋폼들의 이름이 같은경우 asp의 Request("schedule_id")에 ","를 구분기호로 해서 들어가 있다. 각 요소마다 접근하기 위해서는 아래 예처럼 하면 됨.
  -html-
  <input type="text" name="schedule_id" >
  <input type="text" name="schedule_id" >
  <input type="text" name="schedule_id" >

  -asp-
  Dim i ,strWhere
  i = 0

        for i = 1 to Request("schedule_id").Count
    if i = 1 then
      strWhere = "WHERE schedule_id="&trim(Request("schedule_id")(i))
                else
      strWhere = strWhere & " Or schedule_id="&trim(Request("schedule_id")(i))
    end if
        next


3. 웹 서버 이름
-asp 코드-
<%
  Dim strSName    : strSName = Request.ServerVariables("SERVER_NAME")
%>
<script language="javascript">
<!--
alert("<%= strSName %>");
-->
</script>

-결과-
사용자가 브라우져 주소창에 www.youngu.info를 입력해서 접속한 경우 strSName은 www.youngu.info가 된다.

4. 사용자 아이피 및 HTTP 헤더
request.servervariables("remote_addr")

Response.Write request.servervariables(1) 'http 모든 헤더를 화면에 출력한다.

5. ASP 페이지 내에서 에러(Error) 처리

SQL = "DELETE FROM test_cont_info_tbl "&strWhere
AdoDb.Execute(sql)
Select Case Err.Number
  Case 0
  Case 1
     ' 에러코드 1일 경우 처리
  Case Else
     ' 그밖의 에러 처리
     AdoDb.Close
     Set AdoDb = nothing
     Response.End
End Select

6. Transaction 처리
          On Error Resume Next        
         
          Dbcon.Execute SQL,LngRecs,adCmdText + adExecuteNoRecords
         
          Dim errCount
          errCount = Dbcon.Errors.Count

                If errCount = 0 Then
             DbCon.CommitTrans
             Response.Write "총 " & LngRecs & " 건의 레코드가 반영되었습니다..."
                Else
             DbCon.RollbackTrans        
             response.write "에러가 발생했습니다...따라서 DB에 반영되지 않았습니다....<br>"
             response.write "원인 : " & Err.Description
             Err.clear
                End If        
       
          Dbcon.Close
          Set Dbcon = nothing
Posted by Gu Youn
,
1. 디렉토리 크기 알아보기
du -s -h [directory name]

2. 설치된 rpm 알아보기
모든 설치된 패키지 리스트 : rpm -qa
특정 패키지 검색 : rpm -qa [package_name]
                    rpm -qa | grep [search_string]

3. 한 스크린에 출력할 수 없는 경우 (윈도우의 dir /p)
ls -al | more

4. 커널 버젼(kernel Version)
uname -a

5. 설치된 OS 종류
cat /etc/*release

6. CPU 정보
cat /proc/cpuinfo

7. 사용자(계정) 추가하기
그룹을 추가한다. :  groupadd -g 1000 user
사용자를 추가한다 : adduser -g 1000 -G user -d /home/happy -m -s /bin/bash happy

8. 파일 찾기
updatedb
locate [search_word]

9. 파일이름 일괄 변경
현재 디렉토리 .jsp를 .old로 변경
ls -1 *.jsp | sed "s/(.*).jsp$/mv '&' '1.old' /" | sh

서브디렉토리 포함 .jsp를 .old로 변경
find . -name "*.jsp" | sed "s/(.*).jsp$/mv '&' '1.old' /" | sh

(홈페이지에 2002-11-08 10:55:20에 올렸던 것을 옮김)
Posted by Gu Youn
,
  Dim arrList
  if Rs.Eof or Rs.Bof then
                arrList = ""
        else
          arrList = Rs.getString()
        end if
       
        if arrList <> "" then
    Dim arrRecord, arrColumn, inum
    arrRecord = Split(arrList,chr(13))
        else
                Response.end
        end if

        'arrRecord(Ubound(arrRecord))에는 마지막 vbCrLf뒤의 널값이 들어가므로 arrColumn으로 나누면 에러남
        '예를 들어 Ubound(arrRecord)값이 6이라면 arrRecord(6)은 NULL이므로 arrRecord(0)~arrRecord(5)까지만 사용한다
        for inum=0 to Ubound(arrRecord)-1
    arrColumn = Split(arrRecord(inum), Chr(9))
  next
Posted by Gu Youn
,
1. MS-SQL 의 두개 이상의 인스턴스가 설치된 컴퓨터와 같은 네트웍에 있는 경우에는 설치된 컴퓨터 이름에 인스턴스명을 붙여서 등록을 하면 된다.  
ex) SQLSERVERInstance1 , SQLSERVERInstance2

2. 같은 네트웍에 있지 않은 경우
클라이언트네트웍 유틸리티(Client Network Utility)를 이용해서 별명(Alias)를 만들어서 등록할때 사용한다. 이후 과정은 1번과 비슷하게 이루어진다. 별명을 만들때 Dynamically determine port 옵션을 해제하고 직접 포트 번호를 적어준다. 포트 번호는 SQL이 설치된 서버의 EM에서 등록정보 일반탭의 네트웍 구성(Network Configuration)을 살펴보면 포트번호를 알 수 있다.

'Computer > Database' 카테고리의 다른 글

MySQL 팁  (0) 2005.07.10
MS-SQL - ConnectionString 샘플  (0) 2005.07.10
MS-SQL - 패치및 서비스팩 적용에 따른 버전 정보  (0) 2005.07.10
데이터 베이스 잡담...  (0) 2003.05.23
Oracle 기본 정리  (0) 2003.03.26
MS-SQL 기본 정리  (0) 2002.10.07
Posted by Gu Youn
,
JoinProvision.html에서 동의하면 JoinMember.asp로 넘어가며 JoinMember.asp 주소를 직접 치고 들어오는 요청을 약관 동의 페이지로 넘겨버리는 소스

Request.ServerVariables ("HTTP_REFERER")를 사용하는 경우 주소창이나 locaiton.href를 이용해 이동하면 NULL값이 되므로 form의 action을 이용해서 JoinMember.asp로 이동해야함(정확한건지는 잘 모르겠음 http헤더 확인 필요)

-JoinProvisioin.html-
<script language="javascript">
function agree()
{
        document.provision.action = "JoinMember.asp";
        document.provision.submit();
        return false;
}

</script>
-회원 약관 페이지-<br>
<form name="provision">
<input type="hidden" name="agree" value="ok">
</form>
<a href="#" onClick="agree()">동의</a>    <a href="../index.html">동의안함</a>

-JoinMember.asp-
<%
        Option Explicit
       
        dim PrevUrl , pos
        PrevUrl = Request.ServerVariables ("HTTP_REFERER")
        pos = InStr(PrevUrl,"JoinProvision.html")
       
        if pos < 1 then
                Response.Write "<Script language='javascript'>"
                Response.Write "alert('약관에 동의하셔야 합니다.');"
                Response.Write "location.href='JoinProvision.html';"
                Response.Write "location.go();"
                Response.Write "</Script>"
        end if
%>

Posted by Gu Youn
,
1. 테이블 구조 보기(DESC)
    Exec sp_help [UserTableName]

2. Stored Procedure 목록 보기 / 검색
SELECT * FROM sysobjects

3. Stored Procedure에서 select후의 레코드셋의 개수를 알고 싶은 경우
SELECT @@rowcount

4.Stored Procedure 삭제 하기
(1) 일반 삭제
     Drop Proc [StoredProcedureName]
 (2) 존재 검사후 삭제
    IF exists (select * from sysobjects where name='sp_extract_rand_problem')
    Begin
        Drop Proc sp_extract_rand_problem
    End
    Go

5. Stored Procedre 작성중 쿼리에 변수 사용 못하는 경우
varchar형 변수에 쿼리 저장한후 EXEC함수로 실행한다
 
예)
  Declare @sql Varchar(200)
       
  SET @sql = 'SELECT TOP ' + CONVERT(varchar(5),@pagesize) + ' * FROM MyBoard '
  SET @sql = @sql + 'WHERE board_idx not in (SELECT TOP ' + CONVERT(varchar(5),(@GotoPage-1) *@pagesize)  
  SET @sql = @sql + ' board_idx FROM MyBoard ORDER BY b_ref desc, b_step) order by b_ref desc, b_step'
  --print @sql
  EXEC (@sql)

6. Query Analyzer 에서 sql문 실행하면 메시지 텝에 (30 row(s) affected) 같은 메시지가 나오지 못하게 하기 #

set NoCount On

7. Local Variable로 Text 타입을 사용 못하므로 varchar형으로 대체해서 사용함

8. Stored Procedure 내에서 동적 쿼리 사용하는 예
Create Proc sp_dynamic_sql
        @strTableName varchar(20) ,
        @intBoard_Idx int ,
        @prev_idx int OUtput
As
Begin
--꼭 nvarchar 이어야 함
declare @stmt as nvarchar(400)
declare @params as nvarchar(500)

--stmt와 paranms에 임시 output 변수를 사용하면 됨, 여러개의 파라미터 경우는 "," 로 구분한다.
set @stmt = 'Select @idx = Min(board_idx) from ' + @strTableName + ' where board_idx > ' + CONVERT(VARCHAR(10),@intBoard_idx)
set @params = '@idx  as int OUTPUT' -- OUTPUT 키워드에 주의
exec sp_executesql @stmt, @params, @idx = @prev_idx OUTPUT
End

9. 테이블 목록(MySql의 show tables기능)
exec sp_tables

10. 데이타 베이스 목록및 정보(MySql의 show database 기능)
exec sp_databases / exec SP_HELPDB

11. FK 관계가 설정된 값 변경하기(참고: http://www.sqler.pe.kr/sql2k/63.asp )
참조받는 쪽의 값을 변경하는 경우 참조하는쪽 테이블에 CASCADE 설정 필요함
--ex(sql.pe.kr에서 발췌)- --tempdb를 사용한다. USE tempdb GO


--학과 테이블을 생성한다. CREATE TABLE 학과( 학과ID varchar(5) primary key , 학과명 varchar(10) not null ) GO

--학생 테이블을 생성한다. --UPDATE는 새로운 CASCADE 옵션으로, --DELETE는 아무 처리도 하지않게(기본 옵션)으로 처리 한다. CREATE TABLE 학생( 학번 int primary key , 이름 varchar(12) not null , 학과ID varchar(5) FOREIGN KEY REFERENCES 학과 (학과ID) ON UPDATE CASCADE ON DELETE NO ACTION ) GO

--학과에 정보를 삽입 한다. INSERT 학과 VALUES ('ITE', '정보통신') INSERT 학과 VALUES ('EC', '전자계산') GO

--학생 테이블에 참조하는 학과(학과ID)컬럼의 값으로 삽입한다. INSERT 학생 VALUES (941234, '코난', 'ITE') INSERT 학생 VALUES (950083, '세린', 'EC') GO

--데이터를 조회한다. SELECT * FROM 학과 SELECT * FROM 학생

--참조제이 걸려 있는 학과(학과ID) 에 --CASCADE 옵션이 걸려 있는 UPDATE를 수행한다. UPDATE 학과 SET 학과ID = 'AAA' WHERE 학과ID = 'ITE' GO

--데이터를 조회한다. CASCADE 옵션이 잘 동작한다. SELECT * FROM 학생 SELECT * FROM 학과

--삭제를 해 보자. DELETE 학과 WHERE 학과ID = 'EC' --참조 제약으로 삭제가 불가 하다는 에러메세지가 나온다.


12. 커서 이용하기(참고: http://www.sqler.pe.kr mssql2000강좌)
dbo.student_tbl에 있는 데이타를 jls.member_tbl에 인서트 하는 루틴

 declare cur_test CURSOR
 For select student_id,pwd,'S'  from dbo.student_tbl        
 --For select teacher_id ,pwd,'T'  from dbo.teacher_tbl

 Open cur_test

 declare @member_id varchar(20),
            @passwd varchar(20),
            @member_type varchar(1),
            @sql varchar(200)
 FETCH NEXT FROM cur_test INTO @member_id, @passwd,@member_type

 WHILE (@@FETCH_STATUS = 0)
 BEGIN
  -- Set @member_id  = 't'+cast(@member_id as varchar(20))
   set @sql = 'insert into jls.member_tbl (member_id,passwd,member_type)values ('''+@member_id+''', '''+@passwd+''','''+@member_type+''' )'
   EXEC (@sql)
 
   FETCH NEXT FROM cur_test INTO @member_id, @passwd,@member_type
  END


  close cur_Test
  deallocate cur_test

ps) 커서 선언시 테이블 조건에 사용할 값에 변수를 직접 사용할 수는 있으나 테이블 명에 직접 변수 사용은 불가능 하므로 다음처럼 해서 커서를 선언 할 수 있다.
  Declare @SQL VARCHAR(400)  
  SET @SQL = 'declare cur_problem CURSOR '
  SET @SQL = @SQL + 'For SELECT problem_num,a.test_cont_info_id FROM '+@strTestTableName+' As a, test_cont_info_tbl As B WHERE course_code='+@strCourseCode
  EXEC(@SQL)

13. 데이터 베이스 계정 정보
exec sp_helplogins <--- 데이타베이스에 상관없이 로긴할 수 있는 넘들 다 보여준다.
exec sp_helpuser <--- 현재 데이타베이스의 유저들을 보여준다.

14. Procedure 에서 변수에 SELECT 결과 할당하기
(변수 이용하는 동적 쿼리는 5, 8 번 참고)
Declare @name VARCHAR(30)
SELECT @name FROM member WHERE id='user_id' Print @name

15. 컬럼 이름 변경(column name)
test테이블의 name 컬럼명을 user_name으로 변경

EXEC   sp_rename 'test.name', 'user_name', 'COLUMN'

16. column이 null이면 기본 값을 주는 함수
ISNULL ( check_expression , replacement_value )

17. sp 작성시 유의점
sp 작성시에는 상황에 따라서 적당한 return 값을 갖도록 한다. 그래야 sp 사용시 발생하는 문제점을 빨리 알 수 있다.

18. IDENTITY 초기화
DBCC CHECKIDENT (t_mark_histw_tbl, RESEED, 0)//table_name, RESEED, 초기값

19. ALTER문 정리
ㄱ. column 속성 변경 : ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL


20. Index에 따르지 않고 정렬하기
상황 : study_contents_id가 93,92,94인 레코드를 조회 하는데 결과의 정렬이 93,92,94로 되기를 원하지만 study_contents_id가 index여서 92,93,94 순으로 오름차순 정렬이 된다.
해결책 : study_contents_id 값에 따라서 정렬하고자 하는 순서를 order_seq에 부여한다. 그리고 order_seq를 정렬조건으로 사용한다.
SELECT study_contents_id ,
CASE study_contents_id
       WHEN 93  THEN 1
       WHEN 92  THEN 2
       WHEN 94  THEN 3
       END AS order_seq
,course_code, FROM study_contents_tbl WHERE study_contents_id IN (93,92,94,) ORDER BY order_seq ASC

21. 로그인 이름이 비어있는 사용자 정보 수정하기.이상하게 EM에서는 수정이 안됨
(1). 로그인 계정(로그인 이름) 생성 : sp_addlogin 생성할유저명, 비빌번호, 디폴트DB
   예) EXEC sp_addlogin 'con_user', 'con_pass', 'test_db'

  (2). 데이터 베이스 로그인 계정 변경 : sp_change_users_login 액션, 데이터베이스의사용자이름
   예) EXEC sp_change_users_login 'Update_One', 'con_user', 'con_user'

  관련 게시물 : http://sqler.pe.kr/web_board/view_list.asp?id=45680&read=45&pagec=&found=is&part=myboard1&ser=yes

22. 객체 생성 스크립트
sp_helptext 함수를 이용하거나 syscomments 시스템 테이블을 이용하면 됨.

ㄱ.프로시져
  select text from syscomments where id in (select id from sysobjects where xtype='p' and name NOT LIKE 'dt%')

ㄴ.트리거
  select text from syscomments where id in (select id from sysobjects where xtype='tr' and name NOT LIKE 'dt%')

ㄷ.뷰
  select text from syscomments where id in (select id from sysobjects where xtype='v' and name NOT LIKE 'sys%')

23. 서버에 생성된 데이터 베이스 정보
--서버단위
--데이터베이스 서버 정보
 select srvname, srvproduct, providername, datasource from master..sysservers
--데이터베이스 로그 공간
 DBCC sqlperf(logspace) /*각 데이터 베이스의 트랜젹션 로그 공간 */

--각 데이터베이스 정보(데위터베이스명, 생성일, 파일)
 select  name, crdate, filename from master..sysdatabases

--데이터베이스 단위
--sp_spaceused , DBCC sqlperf(logspace)를 이용

declare cur_name CURSOR
For select name from master..sysdatabases

Open cur_name

declare @name varchar(100)
declare @command varchar(200)

Fetch Next From cur_Name Into @name

while(@@FETCH_STATUS =0)
begin
        print @name
          set @command = 'use ['+ @name+'] exec sp_spaceused' --use구문과 프로시져가 동일한exec에서 실행 되도록 해야함
        exec(@command)
        /*sp_spaceused  각 데이터 베이스의 사용 공간*/

        FETCH NEXT FROM cur_name INTO @name
end
close cur_name
deallocate cur_name

--데이터베이스 단위
--테이블 목록
--exec sp_tables [dbname]
select * from INFORMATION_SCHEMA.TABLES

--테이블 단위
--컬럼 목록 및 자료형
--exec sp_columns [tablename]
select * from INFORMATION_SCHEMA.COLUMNS where table_name = 'blog_data'

24. 데이터베이스 풀 백업
--pubs데이터 베이스를 e:\backup\backup-file로 백업하는 명령
--백업 파일 경로 지정시 드라이브의 루트를 설정하면 장치 오류가 발생하여 백업이 되지 않음으로
--임의의 디렉토리를 만들어서 사용한다.
BACKUP DATABASE pubs TO DISK = 'e:\backup\backup-file' WITH INIT

'Computer > Database' 카테고리의 다른 글

MySQL 팁  (0) 2005.07.10
MS-SQL - ConnectionString 샘플  (0) 2005.07.10
MS-SQL - 패치및 서비스팩 적용에 따른 버전 정보  (0) 2005.07.10
데이터 베이스 잡담...  (0) 2003.05.23
Oracle 기본 정리  (0) 2003.03.26
두개 이상의 인스턴스 EM에 등록하기  (0) 2002.11.04
Posted by Gu Youn
,

폼에 리스트 박스 하나 추가하고 테스트한다.
gethostbyaddr의 타임아웃 문제는 고려하지 않았다.

WSAData wsadata;

  if(WSAStartup (MAKEWORD(1,1), &wsadata) != 0 )
  {
    ShowMessage("에러");
  }
 
  char ip[16];
  in_addr addr;
  hostent *host = 0;
  String errorcode;
   
  for(int i=0;i<255;i++)
  {

    sprintf(ip,"211.178.64.%d",i);
    addr.S_un.S_addr =  inet_addr(ip);
    host = gethostbyaddr ( (char *)(&addr.S_un.S_addr),        sizeof(addr.S_un.S_addr),        AF_INET);       

    int error = WSAGetLastError(); 


    switch(error)
    {
      case  WSANOTINITIALISED :
        errorcode = "WSANOTINITIALISED";
        break;
      case         WSAENETDOWN :
        errorcode = "WSAENETDOWN";
        break;
      case  WSAHOST_NOT_FOUND :
        errorcode = "WSAHOST_NOT_FOUND";
        break;
      case  WSATRY_AGAIN        :
        errorcode = "WSATRY_AGAIN";
        break;
      case  WSANO_RECOVERY  :
        errorcode = "WSANO_RECOVERY";
        break;
      case  WSANO_DATA :
        errorcode = "WSANO_DATA";
        break;
      case  WSAEINPROGRESS :
        errorcode = "WSAEINPROGRESS";
        break;
      case  WSAEAFNOSUPPORT :
        errorcode = "WSAEAFNOSUPPORT";
        break;
      case  WSAEFAULT        :
        errorcode = "WSAEFAULT";
        break;   
    }

    if(host != NULL)
      ListBox1->Items->Add( host->h_name); 
    else
    {
      ListBox1->Items->Add(errorcode); 
    }   
   
  }

  String msg  = "테스트가 끝났습니다.";
  ShowMessage(msg);

Posted by Gu Youn
,