블로그 이미지
baragi76

카테고리

분류 전체보기 (115)
생활 (10)
My Story (34)
My Album (1)
HomePage (0)
Hobbies (21)
Develop (42)
Utility (1)
Project (6)
Statistics Graph
Total234,719
Today4
Yesterday22

공지사항

달력

« » 2019.12
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        

 

MS SQL 쿼리 실행 시간 체크...

SET STATISTICS TIME ON

 

 

참조~ : http://technet.microsoft.com/ko-kr/library/ms190287(v=sql.90).aspx

 

 

위 코드를 넣고 Query를 작성하면...

Query를 실행한 시간에 대한 결과치를 보여줌....

 

 SQL Server 실행 시간:
 CPU 시간 = 0밀리초, 경과 시간 = 26밀리초

이 장소를 Daum지도에서 확인해보세요.
서울특별시 중구 소공동 | 서울 중구 을지로1가
도움말 Daum 지도
Posted by baragi76

댓글을 달아 주세요

간단한 코드지만... 헷갈릴때가 많이 있다...

까먹어서 한참을 헤매일때도... ^^


/*

TB_REF 테이블의 REF_COLUMN 컬럼 데이터와 동일한 

TB_TARGET 테이블의 TARGET_COLUMN 컬름이 있으면 해당 레코드 삭제...

*/


DELETE [dbo].[TB_TARGET]

WHERE  TARGET_COLUMN IN (SELECT REF_COLUMN FROM [dbo].[TB_REF] WITH(NOLOCK))



/*

TB_REF 테이블의 모든 값을  

TB_TARGET 테이블에 동일 데이터 삽입 후 ADDFIELD 값을 'Y'로 하여 INSERT

*/


INSERT INTO [dbo].[TB_TARGET]

SELECT REF.*, ADDFIELD='Y'

FROM [dbo].[TB_REF] AS REF WITH(NOLOCK)


Posted by baragi76

댓글을 달아 주세요

컬럼 데이터중...
파일 Path같이 디렉토리 구조라던가 특정 구분자로 나눠져있는 문자열에 대해~
구분자 끝의 문자열을 잘라오고자 한다면...

REVERSE([string]) : 문자열 뒤집기
ex) reverse('012/345/678/9') --> '9/876/543/210'

CHARINDEX([string], [string]) : 문자 위치 찾기
ex) charindex('/', '012/345/678/9') --> 4

SUBSTRING ([string], [intA], [intB]) : 문자의 특정위치 문자 추출 ( [intA]번째 문자부터 [intB]개의 문자만큼 )
ex) substring('012/345/678/9', 4, 5 ) --> '/345/'

LEN([string]) : 문자수
ex) len('012/345/678/9') --> 13


위의 기본 Function을 이용하여 '012/345/678/901.doc' 파일 Path에서 파일명을 추출하면...
아래와 같은 형식인데...

DECLARE @file_path VARCHAR(100)
SET @file_path = '012/345/678/901.doc'
print SUBSTRING( @file_path , (LEN( @file_path ) - CHARINDEX('/', REVERSE@file_path ))+2), LEN( @file_path )) 


결과 : '901 .doc'

다른 더 좋은 방법이 있는지... ^^;;  
Posted by baragi76

댓글을 달아 주세요

### 참조코드...

-- 루프를 돌리기위한 기준
DECLARE DocNo CURSOR FOR
   SELECT IDX
   FROM TB_WD2_FMIT001_BUYINFOBYSTATUS WITH (NOLOCK)
   WHERE EXTENDPROCESS = '' AND SEQNO = ''
   Order by IDX
 DECLARE @docno INT

-- 루프를 돌려 처리~~
 OPEN DocNo
 FETCH DocNo INTO @docno
 WHILE (@@FETCH_STATUS = 0)
 BEGIN 
-- 뺑뺑이 돌리는 코드(시작)   
-- SeqNo 다음 번호 계산
   SET @iSeqNo = @iSeqNo + 1
     
   -- 3자리수로 처리
   SET @vSeqNo = '000' + CONVERT( VARCHAR(10), @iSeqNo)
   SET @vSeqNo = SUBSTRING( @vSeqNo, LEN(@vSeqNo)-2, LEN(@vSeqNo))
   SET @vSeqNo = @vNowMonth + '-' + @vSeqNo
   --PRINT @vSeqNo
     
   SET @tmpQuery = 'UPDATE TB_WD2_FMIT001_BUYINFOBYSTATUS
   SET SEQNO = ''' + @vSeqNo + '''
    EXTENDPROCESS = ''Yes''
   WHERE IDX = ' + CONVERT( VARCHAR, @docno )
   
   print @tmpQuery
         -- EXEC sp_executesql @tmpQuery
-- 뺑뺑이 돌리는 코드(종료)         
   FETCH DocNo INTO @docno
 END
        
 CLOSE DocNo
 DEALLOCATE DocNo

Posted by baragi76

댓글을 달아 주세요


기본적인 데이터 삭제...
DELETE FROM table_name WHERE column_name = 'xx'

만약 테이블에 IDENTITY가 정의되어 있는 상태에서 이 IDENTITY 값을 초기화 하려면?? 보통적으로
TRUNCATE TABLE table_name
으로 초기화를 하는데....
몇개의 테이블에 Relation이 걸려 있다면...
[한글 기준] "FOREIGN KEY 제약 조건에 의해 참조되므로 자를 수 없습니다." 라는 오류 메시지가 발생한다...
이런 경우 IDENTITY 값을 초기화 하려면....

DELETE FROM table1_name
DELETE FROM table2_name
DBCC CHECKIDENT('table1_name', RESEED, 0 )

위와 같이 하면 table1_name 테이블의 IDENTITY 값을 0으로 초기화 한다...

자세한 내용은
http://msdn.microsoft.com/ko-kr/library/ms176057.aspx 참조...
Posted by baragi76

댓글을 달아 주세요

# 목적

A-SQLServer SQL Server에 존재하는 Migrate 데이터베이스를 B-SQLServer SQL Server로 동일한 데이터베이스명으로 이관하고 사용자(MigDBUser)가 접근 할 수 있도록 권한 처리를 한다.

   

  • 이관하려는 데이터베이스를 백업
    • 데이터베이스 백업
      • Microsoft SQL Server Management Studio 실행
      • A-SQLServer 서버에 연결한다.
      • Migrate 데이터베이스를 좌측 개체 탐색기에서 선택 후 우측 마우스 버튼 클릭
      • [작업] - [백업] 선택
      • 데이터베이스 백업 대화상자가 열린다.
      • [일반] 페이지 - [대상] Section 의 추가, 제거 버튼을 클릭하여 백업할 위치지정 (파일명 예: Migrate.bak)
      • [확인] 버튼을 클릭

           

  • 백업 데이터베이스 확인
    • Migrate.bak 파일이 생성되었는지 확인한다.

         

  • B-SQLServer 서버에 데이터베이스 이관
    • Migrate.bak 파일을 이관 B-SQLServer가 존재하는 PC 로컬 디스크에 복사 한다
    • Microsoft SQL Server Management Studio에서 B-SQLServer 서버 연결
    • 좌측 개체 탐색기에 존재하는 DB중 아무거나 선택하고 우측 마우스 버튼을 클릭
    • [작업] - [복원] - [데이터베이스]를 선택
    • 데이터베이스 복원 대화상자가 열린다.
    • [일반] 페이지 - [복원에 사용할 원본] Section의 라디오 버튼 중(데이터베이스, 장치) 장치를 선택하고 우측의 버튼을 클릭한다.
    • 백업 지정 대화상자가 열린다.
    • 백업 위치 영역 우측의 버튼 중 "추가"(맨 위) 버튼을 클릭한다.
    • Migrate.bak 파일을 찾아 선택하고 확인 버튼을 클릭한다.
    • 백업 지정 대화상자의 확인 버튼을 클릭하여 지정을 완료한다.
    • 장치 지정이 이뤄지면 복원에 사용할 백업 세트 선택 영역에 복원 대상 목록이 표현된다.
    • 최근 버전에 해당하는 데이터베이스 좌측의 체크박스를 선택한다.
    • [일반]페이지 - [복원 대상] Section의 데이터베이스를 Migrate (생성하려는 데이터베이스명)로 지정한다.
    • [옵션]페이지 - [복원 옵션] Section의 데이터베이스 복원 위치를 지정한다.
      • Mdf(데이터베이스 파일), ldf(로그 파일) 의 위치 및 파일명을 선택한다.
    • 이전에 존재하는 데이터베이스 일 경우, [옵션] 페이지 - [복원 옵션] Section의 최상위 체크 박스인 기존 데이터베이스 덮어쓰기를 선택한다.
    • 위의 설정을 수행하고 확인 버튼을 클릭한다.
    • 데이터베이스의 용량에 따라 수초에서 수분이 걸릴 수 있다.
    • 작업이 완료되면 생성되었다는 메시지가 뜬다.

         

  • 권한 설정 (삭제)
    • 이관한 데이터베이스는 시스템이 틀리므로 이름이 동일하더라도 내부적으로 가지고 있는 SID값이 틀려 프로그램으로 접근이 불가능 하다.
      • SELECT * FROM maste..syslogins, SELECT * From Migrate..sysusers
      • 위의 쿼리를 입력하면 틀린 SID값을 확인할 수 있다.
    • 먼저 이관한 데이터베이스의 전체 권한을 제거한다.
      • 권한 제거는 다른 UI에서 처리할 수가 없으며, 쿼리를 수행하여 삭제할 수 있다.
        • sp_dropuser 'MigDBUser'
    • 좌측 개체 탐색기에서 이관한 데이터베이스를 선택하고 우측 마우스 버튼을 클릭한다.
    • [속성]을 선택한다.
    • 데이터베이스 속성대화상자가 열린다.
    • [사용 권한] 페이지 선택을 클릭한다.
    • [사용자 또는 역할] 영역에 MigDBUser가 삭제되었는지 확인하고, 기타 다른 계정도 2) 항목과 같이 삭제 처리한다.

         

  • 권한 설정 (추가)
    • 좌측 개체 탐색기에서 [보안] - [로그인]을 선택하고 우측 마우스 버튼을 클릭한다.
    • [새 로그인]을 선택한다.
    • 로그인 - 신규 대화상자가 열린다.
    • [일반] 페이지 선택을 클릭하고 로그인 이름에 MigDBUser를 입력한다.
    • SQL Server 인증으로 체크하고 암호를 입력한다.
    • 암호 정책 강제 적용 등 옵션을 선택하고 기본 데이터베이스(Migrate)를 지정, 기본 언어 선택을 한다
    • [사용자 매핑] 페이지 선택을 클릭하고 우측에 접근할 데이터베이스 체크한다.
    • [데이터베이스 역할 맴버 자격] Section에서 db_datareader, db_owner등 권한에 맞도록 체크를 한다.
    • [확인] 버튼을 클릭하여 계정 생성을 완료한다.
Posted by baragi76

댓글을 달아 주세요

CONVRT 문에 대해...

Develop/SQL / 2010. 10. 8. 19:11
[펌]
수식의 자료형을 변화시킨다.

  - CONVERT(datatype[(length)], expression[,style])

  - 수식이 허용되는 어느 곳에서도 사용 될 수 있다.

 

SELECT CONVERT (char(38), title)+"의 가격은" + CONVERT
(varchar(10), price) +"달라 입니다."
  FROM titles


흠...

다음으로 날짜를... 스타일에 따라 다양하게 보여줍니다.

 

Without
century
(yy)

With
century
(yyyy)



Standard



Input/Output**

-

0 or 100 (*)

Default

mon dd yyyy hh:miAM (or PM)

1

101

USA

mm/dd/yy

2

102

ANSI

yy.mm.dd

3

103

British/French

dd/mm/yy

4

104

German

dd.mm.yy

5

105

Italian

dd-mm-yy

6

106

-

dd mon yy

7

107

-

mon dd, yy

8

108

-

hh:mm:ss

-

9 or 109 (*)

Default + milliseconds

mon dd yyyy hh:mi:ss:mmmAM (or PM)

10

110

USA

mm-dd-yy

11

111

JAPAN

yy/mm/dd

12

112

ISO

yymmdd

-

13 or 113 (*)

Europe default + milliseconds

dd mon yyyy hh:mm:ss:mmm(24h)

14

114

-

hh:mi:ss:mmm(24h)

-

20 or 120 (*)

ODBC canonical

yyyy-mm-dd hh:mi:ss(24h)

-

21 or 121 (*)

ODBC canonical (with milliseconds)

yyyy-mm-dd hh:mi:ss.mmm(24h)

*    The default values (style 0 or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).

** Input when converting to datetime; Output when converting to character data.


잘 모르겠네요... 저역시... 그렇다면 질의를 수행해 봐야죠 ^_^


SELECT CONVERT (char(30), GETDATE(), 102)


[출처] www.sqler.pe.kr

Posted by baragi76
TAG Convert, SQL

댓글을 달아 주세요