'MSsql'에 해당되는 글 7건

  1. 2012.07.12 MS-SQL UPDATE - SELECT문 사용
  2. 2011.12.21 MS-SQL 버전확인
  3. 2011.02.28 MS-SQL 함수
  4. 2010.11.10 MS-SQL 2005(2008)에 필드 암호화 하기
  5. 2010.07.20 MS SQL SUBSTRING
  6. 2010.06.08 MS SQL 데이터베이스 백업 및 복원 방법
  7. 2010.04.02 MS SQL DateTime 비교
2012.07.12 13:54

MS-SQL UPDATE - SELECT문 사용

UPDATE A
SET A.JobTitle = B.UserJobTitle
FROM BackDatabase.dbo.DATTACHINFO A, Appro.dbo.ATTACHINFO B
WHERE A.DocID=B.DocID AND A.FileSN=B.FileSN 


[출처] [MSSQL] UPDATE~SELECT 문의 사용

Trackback 0 Comment 0
2011.12.21 16:51

MS-SQL 버전확인

SQL Server 2008/2005/2000
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

2008 반환 결과 예
  • 제품 버전(예: 10.0.1600.22)
  • 제품 수준(예: RTM)
  • 에디션(예: Enterprise)

2005 반환 결과 예
  • 제품 버전(예: 9.00.1399.06)
  • 제품 수준(예: RTM)
  • 에디션(예: Enterprise Edition)

2000 반환 결과 예
  • 제품 버전(예: 8.00.534)
  • 제품 수준(예: "RTM" 또는 "SP2")
  • 에디션(예: "Standard Edition") 예를 들면 결과는 다음과 비슷합니다.


[출처]
SQL Server 버전과 에디션을 확인하는 방법
Trackback 0 Comment 0
2011.02.28 20:15

MS-SQL 함수

숫자함수
ABS
ABS함수는 절대값을 나타낸다.
형식: ABS(숫자값)

POWER
POWER함수는 제곱근을 표현해 준다.
형식: POWER(숫자값, 승수값)

SQRT
SQRT는 루트값을 표현해준다.
형식: SQRT(숫자값)

RAND
RAND는 0 에서 1사이의 난수를 발생시킨다.
형식: RAND(초기값)

ROUND
ROUND는 반올림 함수이다.
형식: ROUND(숫자, 자릿수)
ROUND는 자릿수만 조심하면 된다. 2번째 결과는 8을 반올림하여 그 앞의 9에 1이 더해진것이고 3번째 결과는 9가 반올림된것이다.

CEILING, FLOOR
CEILING은 소수점 첫번째 값을 기준으로 올림을 하고 FLOOR는 소수점 첫번째 값을 기준으로 내림을 한다.
형식: CEILING(숫자) ... FLOOR도 동일
CEILING과 FLOOR는 소수 첫번째값이 5 이상이든 이하든간에 무조건 올림, 내림을 수행한다.


문자함수
LEFT, RIGHT
LEFT는 지정해준 자릿수만큼 왼쪽에서부터 문자열을 반환한다.
당연히 RIGHT는 반대이다.
형식 : LEFT(문자, 자릿수)

LTRIM, RTRIM
LTRIM은 문자열의 왼쪽 공백을 제거한다. 역시 RTRIM은 반대일 경우 사용된다.
형식: LTRIM(문자)

LEN
LEN함수는 문자열에서 문자의 갯수를 추출한다.
형식: LEN(문자)
Len함수는 문자 뒤쪽의 공백은 문자로 계산하지 않는다.

UPPER, LOWER
UPPER는 소문자를 대문자로, LOWER는 대문자를 소문자로 바꾼다.
형식: UPPER(문자)

REVERSE
REVERSE는 문자열을 반대로 표시한다.
형식: REVERSE(문자열)

REPLACE
REPLACE함수는 지정한 문자열을 다른 문자열로 바꾸어준다.
형식: REPLACE(문자, 타겟문자, 바꿀문자)

REPLICATE
REPLICATE함수는 문자열을 지정된 횟수만큼 반복한다.
형식: REPLICATE(문자, 횟수)

STUFF
STUFF함수는 문자열에서 특정 시작위치에서 지정된 길이만큼 문자를 바꾸어준다.
형식: STUFF(문자, 시작위치, 길이, 바꿀문자)

SUBSTRING
SUBSTRING은 STUFF와 비슷하지만 문자를 바꾸는 것이 아니라 그 문자를 반환한다.
형식: SUBSTRING(문자, 시작위치, 길이)

PATINDEX, CHARINDEX
PATINDEX와 CHARINDEX는 문자열에서 지정한 패턴이 시작되는 위치를 뽑아준다.
형식: PATINDEX(문자패턴, 문자) - 문자패턴은 Like 사용과 같다.
형식: CHARINDEX(문자패턴, 문자) - 문자패턴은 일반형식을 사용한다.

SPACE
SPACE함수는 지정한 수 만큼 공백을 추가한다.
형식: SPACE(횟수)


시간 및 날짜 함수
GETDATE()
GETDATE()는 현재 시간을 표시해준다.
DATEADD
DATEADD함수는 날자에 지정한 만큼을 더한다.
형식: DATEADD(날자형식, 더할 값, 날자)
DATEDIFF
DATEDIFF함수는 두 날자사이의 날자형식에 지정된 부분을 돌려준다.
형식: DATEDIFF(날자형식, 시작 날자, 끝 날자)
DATENAME
DATENAME함수는 지정한 날자의 날자형식의 이름을 돌려준다.
형식: DATENAME(날자형식, 날자)
DATEPART
DATEPART함수는 날자에서 지정한 날자형식부분만 추출해줍니다.
형식: DATEPART(날자형식, 날자)
주일은 일요일부터 1로 시작해서 토요일날 7로 끝나게 된다.

NULL 함수
ISNULL
ISNULL은 NULL값을 대체값으로 바꾼다.
형식: ISNULL(NULL값, 대체값)

NULLIF
NULLIF함수는 두개의 표현식을 비교하여 같으면 NULL을 반환한다.
형식: NULLIF(표현식1, 표현식2)

COALESCE
COALESCE함수는 NULL이 아닌 첫번째 표현식이 반환된다.
형식: COALESCE(표현식)

GETANSINULL
GETANSINULL은 데이터베이스의 기본 NULL 상태를 표시해준다.
형식: GETANSINULL(데이터베이스 이름)


AVG, MAX, MIN, SUM, COUNT
MAX
최대값을 구한다.

MIN
최소값을 구한다.

SUM
값갑의 합을 구한다.

AVG
평균을 구한다.

COUNT
값의 갯수를 구한다.



[출처] MS-SQL 함수모음
Trackback 0 Comment 0
2010.11.10 13:33

MS-SQL 2005(2008)에 필드 암호화 하기

mysql에는 password()라는 내장함수가 있다.
하지만 mssql에는 다른 함수가 있다.

암호화 하여 튜플 삽입하기

INSERT INTO table_name VALUES(PWDENCRYPT('value'))

예)INSERT INTO MEMBERSHIP values('rE', pwdencrypt('1234'))


암호화된 튜플 검색하기

SELECT UID FROM MEMBERSHIP WHERE 1 = PWDENCRYPT('1111', PASSWORD)
// Return one more UID or nothing

SELECT pwdcompare('1111', PASSWORD) FROM MEMBERSHIP WHERE UID = 'rE'
// Return [0 | 1]


[출처] MSSQL 2005에 필드 암호화 하기

Trackback 0 Comment 0
2010.07.20 16:03

MS SQL SUBSTRING

MS SQL의 SUBSTRING은 Java의 String.subString이나 C#의 String.SubString과 동일한 기능을 수행한다.

사용법은

SUBSTRING(target_string, start_index, length)

단, 여기서 주의할 점은 start_index는 0이 아닌 1이상이 되어야 한다는 것!!

즉, MS SQL에서 문자열의 시작 인덱스는 0이 아닌 1이다.
Trackback 0 Comment 0
2010.06.08 17:04

MS SQL 데이터베이스 백업 및 복원 방법

-05백업
백업시 참고 사항
- 기본적으로 model, northwind, Pubs, tempdb는 백업하지 않아도 됨.
- master테이블은 권한과 같은 정보들이 있고, msdb테이블은 스케쥴이나 패키지 작업이 저장되어 있습니다. 필요한 데이터일 경우에만 백업하면 됩니다.


전체 백업
- 전체 백업은 데이터의 변경 유무에 관여하지 않고 전체 데이터의 복사본을 만드는 백업 방식입니다.
- 전체 백업은 복구 과정이 다른 백업 방식보다 간편하고 다른 백업 방식보다 복구 시간이 적게 소요됩니다.

쿼리
Backup Database DB이름
To Disk='경로\파일명.bak'


차등 백업
- 차등 백업은 마지막 전체 백업 이후 변경된 모든 데이터를 백업하는 방식입니다. 이는 증분 백업과는 다르게 전체 백업 이후 파일이 변경될 경우 다음 전체 백업까지 계속 백업하는 방식입니다.
- 전체 백업 이미지와 가장 최근의 차등 이미지만 복구하면 되기 때문에 복구 시점에 따라 다르긴 하지만 대개 증분 백업보다 복구 속도가 빠릅니다.
- 파일이 변경될 때마다 파일 크기가 증가하게 되며, 다음 전체 백업 때까지 파일 크기가 점점 커지게 된다는 단점이 있습니다.

쿼리
Backup Database DB이름
To Disk='경로\파일명.bak' With Differential

로그 백업
- 로그 백업은, 데이터베이스를 백업 받는게 아니고 그동안 발생했던 트랜잭션 로그(지금까지 이루어졌던 모든 동작들의 로그)를 백업 받는 방법입니다.
- 전체 백업시에도 로그 백업은 삭제 되지 않습니다. 그렇기 때문에 전체 백업을 하기 전에 로그 백업을 모두 삭제하고 전체 백업을 하는 것이 좋습니다.
- 로그 백업은 시간 단위로 복원이 가능하다는 장점이있습니다. (부분 롤백 가능)
- 트랜잭션 로그 백업을 받으면 백업받은 로그가 제거되어 로그 파일의 사이즈를 줄여 줄 수 있게 됩니다. (증분 백업의 개념으로 사용 가능)

쿼리
Backup Log DB이름 To Disk = '경로\파일명.bak' GO

백업시 옵션
- Init (Overwrite) : 덮어 쓰기 모드
Backup Log DB이름 To Disk = '경로\파일명.bak'
With Init

- NoInit (Append) : 뒤에 이어 붙이는 모드. (Default)
Backup Log DB이름 To Disk = '경로\파일명.bak'
With NoInit


- No_Truncate : 로그 백업을 하고나서, 로그를 지우지 말라는 뜻. (데이터 베이스가 비정상적인 상태에서도 가능)
Backup Log DB이름 To Disk = '경로\파일명.bak'
With No_Truncate GO -- 로그 백업후 로그를 지우지 말라는 의미.


백업 받은 파일 검사
한 파일에 여러번 백업할 수도 있고, 한 파일당 한번 백업할 수도 있다.
백업 받은 파일에 백업이 정상적으로 이루어졌는지 등의 정보를 확인하려면 아래와 같은 쿼리로 확인하면 된다.

- 백업 디바이스 헤더 검사
Restore HeaderOnly From Disk = '경로\파일명.bak' GO

- 백업시 파일 리스트 검사
Restore FileListOnly From Disk = '경로\파일명.bak' GO

- 백업 미디어 정보 검사
Restore LabelOnly From Disk = '경로\파일명.bak' GO

- 백업 안정성 검사
Restore VerifyOnly From Disk = '경로\파일명.bak' GO


복원
- 백업한 데이터를 복구하는 것을 말한다.

쿼리
Restore Database DB이름 From Disk='경로\파일명.bak'

복원시 옵션
1) 일반 옵션
- File : 한 파일 내에 여러개의 백업 존재 시, 백업 디바이스 헤더 검사에서의 Position 값을 넘겨주면 해당 백업만 복원합니다.
Restore Database DB이름 From Disk='경로\파일명.bak'
With File = 3 -- 해당 파일의 3번 Position의 백업만 복원

- DBO_ONLY : 복원 이후 권한을 db_owner 에게만 준다
Restore Database DB이름 From Disk='경로\파일명.bak'
With Dbo_Only

2) 복구 이후 상태 설정용 옵션
- Recovery : 복원이 끝났으니 사용하게 하라는 의미.
Restore Database DB이름 From Disk='경로\파일명.bak'
With Recovery -- 복원을 끝내고 사용할 수 있도록 설정

- NoRecovery : 추가적인 복구 작업이 있을 것이기에 사용하게 하지 말라는 의미.
Restore Database DB이름 From Disk='경로\파일명.bak'
With Recovery -- 복원을 끝내도 사용은 할 수 없게 설정

- Standby : 추가적인 복구가 있을 예정이지만, 사용은 하고 싶기에 읽기 전용 상태로 설정.
Restore Database DB이름 From Disk='경로\파일명.bak'
With Standby -- 복원을 끝내고 읽기 전용으로 설정

 

3) 범위 지정 복구 관련 옵션
- StopAt : 복원 시점을 시간으로 지정
Restore Database DB이름 From Disk='경로\파일명.bak'
StopAt = '2001-11-19 01:09' --2001년 11월 19일 1시 9분 데이터까지 복원

4) 마크 이용 복구 관련 옵션
- 트랜잭션에 마크 설정
Begin Tran myTran With Mark --트랜잭션에 마크를 설정
-- 여러가지 처리
Commit

- StopAtMark : 지정한 마크의 트랜잭션까지 복원
Restore Database DB이름 From Disk='경로\파일명.bak'
StopAtMark = 'myTran' -- myTran 이라는 Transaction 까지 복원

- StopBeforeMark : 해당 트랜잭션 직전(해당 트랜잭션을 포함하지 않음.) 에서 복원을 중지한다.
Restore Database DB이름 From Disk='경로\파일명.bak'
StopBeforeMark = 'myTran' --myTran 이전 까지의 Transaction 까지 복원

- After : 날짜 지정 기능 (StopAtMark나, StopAtBeforeMark 과 함께 사용 가능)
Restore Database DB이름 From Disk='경로\파일명.bak'
StopAtMark = 'myTran'
AFTER '2001-11-19 01:09' --2001년 11월 19일 1시 9분 데이터까지 복원


5) 현재 상태를 파일로 저장시 옵션
- MOVE A TO B : 복원시 현재 상태를 파일로 저장할 파일 경로 재정의 명령
Restore Database DB이름 From Disk='경로\파일명.bak'
With Move '논리 파일 이름' To '경로\파일명.mdf' -- 해당 논리 파일을 지정한 곳으로 옮겨라

- Replace : 복원시 현재 상태를 저장할 때 같은 파일 존재시 덮어 써라. (Move 명령과 함께 옵션 지정 가능)
Restore Database DB이름 From Disk='경로\파일명.bak'
With Replace-- 파일명.bak이 이미 있을 경우 덮어 쓰게 설정


복구 모델
1) 전체 복구 모델 (FULL)
- 데이터 백업과 로그 백업을 사용하여, 손실 없이 복구하는 모델.
- 시간 지정 복구가 가능하다.
- 전체, 차등, 로그, 파일 백업을 할 수 있음.

2) 대량 로그 복구 모델 (Bulk_Logged)
- 최소의 로그와 데이터 페이지를 저장하고 복구하는 모델.
- 지정된 시점까지의 복구(Stopat 옵션)는 허락 안된다.
- 전체, 차등, 로그, 파일 백업을 할 수 있음.

3) 단순 모델 (Simple)
- 로그를 가장 적게 사용한다. trunc.log on chkpt. 데이터 베이스 옵션과 동일.
- 로그를 주기적으로 비우기때문에 로그가 가득 차지 않는다.
- 지정된 시점까지의 복구(Stopat 옵션)는 허락 안된다.
- 전체, 차등 백업만 할 수 있음.

[출처] MS-SQL 백업

Trackback 0 Comment 0
2010.04.02 17:55

MS SQL DateTime 비교

select * from table_name where condition_1
and
(cast(sd_date as smalldatetime) >=  cast('2006-05-02 00:00:01' as smalldatetime)
and
cast(sd_date as smalldatetime) <= cast('2006-05-02 23:59:59' as smalldatetime))

[출처] MS-SQL DateTime 크기 비교하기

Trackback 0 Comment 0