달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

인덱스를 생성할 때 옵션들이 많은데요.

오늘은 이에 대해 간단하게 알아볼까 합니다.

 

대용량 데이터베이스를 관리할 때에는 특히 이러한 옵션들이 중요합니다.

 

아래 CREATE INDEX 옵션들은 2008 기준입니다. 2008 이전 버전과는 사용법의 차이가 있으니 주의하세요.

 

<relational_index_option> ::=

{

    PAD_INDEX = { ON | OFF }

  | FILLFACTOR = fillfactor

  | SORT_IN_TEMPDB = { ON | OFF }

  | IGNORE_DUP_KEY = { ON | OFF }

  | STATISTICS_NORECOMPUTE = { ON | OFF }

  | DROP_EXISTING = { ON | OFF }

  | ONLINE = { ON | OFF }

  | ALLOW_ROW_LOCKS = { ON | OFF }

  | ALLOW_PAGE_LOCKS = { ON | OFF }

  | MAXDOP = max_degree_of_parallelism

  | DATA_COMPRESSION = { NONE | ROW | PAGE}

     [ ON PARTITIONS ( { <partition_number_expression> | <range> }

     [ , ...n ] ) ]

}

 

 

1.     PAD_INDEX & FILLFACTOR

-       PAD_INDEX FILLFACTOR에서 지정한 인덱스의 채우기 비율을 사용할 것인지 여부를 결정합니다.

-       FILLFACTOR 1 100 사이를 사용합니다.

 

l  혹 어떤 분들은 FILLFACTOR를 얼마나 사용해야 하는지 물어보시는 분들이 많은데요, 이것은 분석 여부에 따라 달라질 수 있습니다. 데이터 변경이 자주 일어난다면 숫자를 낮게 주고, 그렇지 않다면 높게 주어도 될 것입니다.

l  참고로, Oracle PCT_FREE와는 정 반대의 개념입니다. PCT_FREE 는 얼마나 남겨둘 지를 결정하고, FILLFACTOR는 얼마나 채워둘 것인지를 결정합니다.

 

2.     SORT_IN_TEMPDB

-       간단히 말해서 인덱스 생성을 tempdb에서 하고 그 최종본만 실제 인덱스에 반영하는 것입니다.

-       장점은 인덱스 생성속도가 적게 걸린다는 것이고, 단점은 tempdb 가 커진다는 것입니다.

 

3.     IGNORE_DUP_KEY

-       UNIQUE INDEX를 생성할 때 키 중복(UNIQUE)에 대한 검사 여부를 지정합니다.

-       사실 이 기능을 ON으로 하면 UNIQUE하지 않은 행만 실패하게 되므로사용하시지 않는 것을 권장합니다.

 

4.     STATICS_NORECOMPUTE

-       통계를 다시 생성할 지 여부를 결정합니다. 기본값이 OFF인데요. 굳이 ON으로 해서 통계를 생성하지 않을 필요는 거의 없습니다.

 

5.     DROP_EXISTING

-       인덱스를 전체적으로 삭제하고 다시 작성할 지 여부를 결정합니다. 기본값은 OFF입니다만,  인덱스 명명 규칙이 있을 경우 이미 기존 명칭이 있을 것이므로, 삭제하고 다시 생성하기 위애 ON 으로 주어야 합니다.

 

6.     ONLINE

-       단순하게 바라보면, 인덱스 생성 중에 테이블을 사용할 수 있는지 여부를 지정하는 것이지만, 다시 말하자면, 인덱스를 작성하면서 TABLE LOCK을 걸지 않도록 합니다.

-       SQL 2005부터 지원되면서 DBA들에겐 큰 힘을 주었던 옵션이며 기본값이 OFF이므로 사용하려면 ON 으로 별도 지정해 주어야 합니다.

 

7.     ALLOW_ROW_LOCKS & ALLOW_PAGE_LOCKS

-       행이나 페이지 LOCK 여부를 결정하며 기본값이 ON입니다. 많이 사용하는 옵션은 아닙니다.

 

8.     MAXDOP

-       테이블의 크기가 클 경우 부하를 줄이기 위해 CPU 병렬작업을 수행할 지 결정하며 CPU 개수 64라는 값까지 줄 수 있습니다.

-       참고로 Standard Edition은 지원하지 않습니다. 엄밀히 따지면 평가판을 빼면 Enterprise Edition만 된다고 하는 편이 낫겠네요. ㅋ.

 

9.     DATA_COMPRESSION / ON PARTITIONS

-       DATA_COMPRESSION은 테이블을 압축하는 것과 같이 데이터 압축 여부를 선택합니다.

-       ON PARTITIONS 옵션은 DATA_COMPRESSION 옵션을 사용할 때에만 적용됩니다.

-       DATA_COMPRESSION 옵션은 NONE / ROW / PAGE 등의 옵션이 있습니다.

 

이상입니다. ^^.


출처 : http://vstarmanv.tistory.com/107

Posted by 위너즈
|

MSSQL 2005, 2008은 데이터 베이스에서 바로 메일 발송이 가능하더라..
2000때는 프로시져 만들고 머하고 복잡하게 하는걸 본적이 있었는데 승리의 MS!!!

어쨋든 간단히 설명해 본다.


1. SQL SMS 를 열어 서버에 접속 한다.
2. 관리 -> 데이터베이스 메일을 오른클릭 -> 데이터베이스 메일 구성 으로 들어갑니다.




3. 메일 구성 마법사 시작이 나오면 그냥 다음을 누르던가 이후에 페이지 표시 안함 체크하고 어쨋든 다음!!



4. 구성 태스크 -> 다음 태스크를 수행하여 데이터베이스 메일 설치 선택


5. 아래와 같은 창이 나올 경우 "예" 를 눌러 줍니다.


6. 새 프로필 구성 
 - 프로필 이름은 이후 프로시져 호출에 사용되므로 기억하기 쉽게 작성 하자(좀더 짧게 할걸 ㅡㅡ;)
 - 설명은 알아서 적자
 - SMTP 계정에 추가 를 눌러 새로운 계정을 추가 하자



7.  계정 이름 설명은 알아서 적으시면 됩니다.
 - 전자 메일 주소 : 보내는 사람의 메일 주소
 - 표시 이름 : 메일 확인 시 표시 되는 이름
 - 회신 전자 메일  : 회신을 할 경우 이 메일 주소로 갑니다.  
 - 서버 이름 : 메일 서버 이름
  인증 방법은 기본 인증을 선택한 후  위에 입력한 메일주소의 계정과 비밀번호를 입력합니다. 
  그리고 확인 -> 확인




8. 새로운 프로필이 생성 되어 있는걸 확인 할 수 있습니다.
 - 기본프로필을  예로 할경우 아마 프로시져 호출에서 프로필 이름을 Null로 사용이 가능하다고 생각합니다.
 (메일 발송 프로시져에 Null일 경우에 대한 처리가 있더군요)



9. 설정 할 부분이 있으면 설정 하고 넘어 갑니다.



10. 자신의 설정 내용을 확인 합니다.




11. 구성 작업이 진행 됩니다.



12.  쿼리창을 띄우고 아래와 같이 입력 해봤습니다.
USE msdb
GO
EXEC sp_send_dbmail @profile_name='Database_SendMail',
@recipients=bbb@mail.co.kr',
@subject='메일 발송 테스트',
@body='이 메일은
테스트 메일 입니다.
받고 
그냥 지워 버리세요'

sp_send_mail은 시스템 테이블 중 msdb에 있습니다. 그러므로 use msdb 해주세요
@Profile_name 은 처음에 작성한 프로필의 이름입니다.  기본 프로필을 예로 할경우 필요 없는 것 같네요
@recipients 는 받는 사람 메일 주소입니다.
@subject 는 메일제목 입니다.
@body는 메일 내용입니다.




13.  위와 같이 발송해서 받은 메일 주소입니다.
쿼리에서 텍스트는 줄바꿔서 적으면 동일하게 적용됩니다.

Posted by 위너즈
|

mssql에서 테이블을 생성한 후, 속성을 변경한 뒤 다시 저장하려 하니 아래와 같은 경고창이 뜬다.

"변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다. 다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다." 

 

물론, 한번 만든 테이블은 수정하지 않는 것이 좋지만, 데이터가 아무것도 없는 상태라는 둥둥... 수정해도 상관없는 상태라면 다음과 같은 방법으로 에러 메세지를 없앨 수 있습니다.

도구->옵션->디자이너->"테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함." 에 체크 해제.

Posted by 위너즈
|

mssql 에서 보통 시간을 저장할 때 'YYYY-MM-DD HH:MM:SS'와 같은 형식으로 저장하게 된다.

여기서 쿼리를 할 때 주로 날짜를 기준으로 쿼리를 하게 된다. 예를 들어

"select * from table where time >= '2005-04-20' and time < '2005-04-21'"

이런식으로 말이다. 하지만 매일 오전 10시 부터 11시 까지의 데이터만 찾고 싶으면 어떻게 할까?

그 것은 아래의 쿼리와 같이 매우 간단하다.

 

"select * from table where datename(hh, time) >= 10 and datename(hh,time) < 11"

 

datename 함수를 통하여 date type에서 시간만을 뽑아 낼 수 있다. 마찬가지로

datetime(mi, time)으로 분 단위 만을 뽑아 낼수도 있다.

이러한 것은 방법을 알면 매우 간단하지만 이 방법을 모른체 기본 쿼리만을 이용하려면

매우 짜증 나기 마련이다.

출처 :  http://blog.naver.com/yondle?Redirect=Log&logNo=40012648114

Posted by 위너즈
|

SQL Server Management Studio를 실행하자.


그러면 서버에 연결 대화상자가 나타난다. 일단 인증 항목에서 Windows 인증과 SQL Server 인증이 있는데 SQL Server 인증을 사용하기위해 (만약 SQL Server 인증 사용이 설정되어 있지 않다면...) 설정하는 것 부터 시작하자. Windows 인증에 연결 버튼을 클릭하자.


서버 항목에 (1번 항목) 마우스 오른쪽 버튼을 누르고 메뉴 항목에서 2번 항목에서 속성을 클릭한다. 그러면 서버 속성 대화상자가 나타난다. 


여기서 서버 인증 항목에서 SQL Server 및 Windows 인증 모드를 선택하고 확인을 누르자. 그러면 다음과 같이 대화상자가 나타난다.


확인을 클릭하자. 일단 서버를 다시 시작하기전에 SQL Server 인증으로 로그인 할 수 있도록 sa 로그인을 가능하도록 하자.


게체 탐색기에서 보안->로그인->sa 항목을 마우스 오른쪽 클릭하여 메뉴에서 속성을 클릭하자. 그러면 로그인 속성 - sa 대화상자가 나타난다.


만약 암호를 다시 설정하고 싶으면 1번 항목을 선택하고 2번 항목에서 암호를 다시 입력하자. 다음에 SQL Server 인증으로 로그인이 되도록 설정하자.


항목에서 1번 상태 항목을 선택하고 2번, 3번을 선택한다. 그리고 확인을 누르자.


1번 데이터베이스 항목을 마우스 오른쪽 버튼 클릭하여 메뉴에서 2번 항목 다시 시작을 선택하자.


그리고 나타난 대화상자에서 예를 선택하자. 그렇면 데이터메이스가 다시 시작된다. 자 그렇면 새로운 데이터베이스 QuadraThreeDMap을 생성해보자.


개체 탐색기에서 데이터베이스를 마우스 오른쪽 버튼을 눌러 메뉴에서 항목에서 새 데이터베이스를 선택하자. 그렇면 새 데이터베이스 대화상자가 나타난다.


일단 1번 일반 항목에서 2번 데이터베이스 이름에 QuadraThreeDMap을 입력하여 확인 버튼을 누르자. 그러면 다음과 같이 데이터베이스가 추가된다.


자 인제 Quadra 사용자를 추가하자. 


보안 항목에서 로그인 항목에 마우스 오른쪽 클릭해서 메뉴에서 새 로그인 항목을 선택한다. 그러면 로그인 - 신규 대화상자가 나타난다.


대화상자에서 일반 항목을 선택한후, 로그인 이름을 Quadra라고 입력하고, 3번 처럼 SQL Server 인증을 선택한 후 암호을 입력하고 편의를 위해 암호 만료 강제 적용 체크를 없애자. 또, 4번 항목에서 기본 데이터베이스와 기본 언어를 각각 QuadraThreeDMap과 Korean으로 하자. 



다음에 사용자 매핑 항목을 선택하고, 2번 항목처럼 db_owner를 선택하고 3번 처럼 체크를 하고 확인을 누른다. 자 사용자 추가와 데이터베이스 추가를 마쳤다. 마지막으로 사용자에게 권한을 주어야 한다.




데이터베이스 속성에서 사용 권한을 위와 같이 주면 된다. 인제 모두 마쳤으므로, 확인을 위해 다시 데이터베이스 연결을 해보자.


파일 메뉴에서 개체 탐색기 연결...을 선택하자. 


서버에 연결 대화상자에서 인증, 로그인, 암호를 입력하고 연결 버튼을 누르자.


끝... ^^ KIN 


출처 :  
http://www.mahome.net/1426
Posted by 위너즈
|