블로그 이미지
baragi76

카테고리

분류 전체보기 (115)
생활 (10)
My Story (34)
My Album (1)
HomePage (0)
Hobbies (21)
Develop (42)
Utility (1)
Project (6)
07-09 20:19
Total239,669
Today16
Yesterday12

공지사항

달력

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

안정적인 DNS서비스 DNSEver

 

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

댓글을 달아 주세요