프로그래밍/DB 78

[DB] MSSQL 개체/테이블/인덱스 생성정보 확인방법(sys.objects)

데이터베이스의 개체들이 생성된 시점을 확인하고 싶은 경우가 있습니다. sys.objects시스템테이블정보를 조회하면 관련정보를 확인할수 있습니다. 1. 개체생성(저장프로시저,뷰,제약조건등) 1 2 3 4 /* 개체 생성시간 (제약 조건, 기본값, 로그, 규칙, 저장 프로시저) */ SELECT * FROM sys.objects order by create_date desc 쿼리결과. create_date , modify_date로 해당개체의 생성일과 변경일을 확인할수 있습니다. type필드정보 타입정보는 아래와 같으며 해당부분을 where 조건으로하면 테이블,뷰,저장프로시저등의 만들어진시간을 확인할수 있습니다. 2. 테이블 생성시간확인 1 2 3 4 5 /* 테이블 생성시간 */ SELECT * FROM..

프로그래밍/DB 2020.12.26

[DB] MSSQL Lock걸린 쿼리확인방법 dbcc inputbuffer(spid)

데이터베이스 lock걸린 쿼리를 찾아서 해당세션을 종료시키는 방법에 대하여 알아보도록 하겠습니다. lock이 걸리게 되면 해당 작업이 끝날때까지 해당테이블 insert/update/delete/select가 되지 않기때문에 성능에 문제가 생기게됩니다. 처리순서요약 처리순서 쿼리문 1. 락걸렸는지 유무확인 sp_lock 2. 락걸린 세션소유자확인 sp_who 3. 쿼리문확인 dbcc inputbuffer(spid) 4. 락걸린세션 삭제 kill spid 강제로 members테이블에 lock이 걸리도록 트랜잭션을 걸은후 commit을 하지 않아 보도록 하겠습니다. 테이블이 lock이 걸렸기때문에 select문으로 조회해서 결과값을 얻어올수 없습니다. 1. sp_lock (락걸렸는지 유무확인) sp_lock문..

프로그래밍/DB 2020.12.26

[DB] MSSQL ROW_NUMBER()를 이용한 임의의 열번호 표시방법

쿼리결과의 레코드번호를 임의로 지정하고 싶을 경우가 있습니다. 이때 ROW_NUMBER()함수를 사용하여 일련번호를 임의로 만들어 표시할수 있습니다. 아래와 같이 사용하면되고 정렬하고자하는 필드값을 지정후 정렬옵션을 기입하면됩니다. ROW_NUMBER() OVER (ORDER BY ModifiedDate ASC) 오름차순으로 일련번호 ROW_NUMBER() OVER (ORDER BY ModifiedDate DESC) 내림차순으로 일련번호 ROW_NUMBER() OVER (PARTITION BY ProductID ORDER BY ModifiedDate ASC) 특정필드에 대한 그룹을 두어 레코드번호를 부여 조회쿼리 1 2 3 4 5 6 7 8 USE AdventureWorks2014 GO /* Produc..

프로그래밍/DB 2020.12.23

[DB] MSSQL datetime to yyyymmddhhmmss

MSSQL에서 날짜형을 특정문자열 포멧으로 변경하는 방법입니다. 날짜형을 문자열로 변경할때는 Format문을 사용해서 변환이 가능하며 프로그램언어와 같이 사용자가 원하는 포멧으로 변경할수 있습니다. 일반적으로 가장 많이 사용하는 yyyyMMddHHmmss형태로 변환하는 방법입니다. 1 2 3 4 5 6 SELECT FORMAT(cast('2020-12-21 11:22:00:123' as datetime), 'yyyyMMddHHmmssffff') 'yyyyMMddHHmmssffff', FORMAT(cast('2020-12-21 11:22:00' as datetime), 'yyyyMMddHHmmss') 'yyyyMMddHHmmss', FORMAT(cast('2020-12-21 11:22:00' as date..

프로그래밍/DB 2020.12.21

[DB] MSSQL Sleep처리방법(waitfor delay)

프로시저,트리거등 쿼리문작업이 Sleep을 주고 싶은경우가 있습이다. 프로그램에서는 sleep을 사용하지만 mssql에서는 waitfor delay명령을 사용하여 특정시간동안 대기시킬수 있습니다. msdn으로 검색해보면 아래와 같은 구문으로 사용하하는법을 알수있습니다. 1. 특정시간 딜레이 : WAITFOR DELAY 밀리세컨드단위와 초단위로 딜레이를 줘보겠습니다. waitfor dealy '0:0:0:100' 으로 실행한것을 볼수 있는데 '시:분:초:밀리세컨드' 형식으로 딜레이를 주는것을 볼수있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /* 100m/s대기 */ print convert(varchar(30),getdate(),126) waitfor delay '0:0:0:..

프로그래밍/DB 2020.12.20

[DB] MSSQL Union,Union all 차이점 및 사용이유

UNION은 언제 사용할까요? 일반적으로 테이블을 연결시키기 위해서는 JOIN문을 많이 사용합니다. 정규화되지 않은 테이블을 서로 합치기 위해서 UNION을 사용합니다. 하나의 테이블을 성능향상을 위하여 두개이상으로 나누어서 설계하는 경우가 있습니다. 회원정보가 1000만명이 있다고 가정을 하고 그중에 거의 최초가입후 사용하지 않는 계정이 800만명이 있다고 가정해보겠습니다. 이럴경우 사용하지 않는 휴먼계정을 별도 테이블로 구분을 하여 저장하고 실제 사용되는 200만명에 대하여 서비스를 하면 서비스의 성능이 올라갈겁니다. 물론 테이블을 파티셔닝하여 구분하는 방법도 있으나 DB버전에 따라 지원이 되지 않는경우도 있고, 이미 서비스가 위와같이 테이블을 분리하여 사용을 하고 있는 경우에는 UNION을 이용하여..

프로그래밍/DB 2020.11.17

[DB] MSSQL 추적단위. Cpu(밀리세컨드), Duration(마이크로세컨드)

MSSQL의 프로필러로 추적을 할경우 열의 항목에서 나타내는 부분은 아래와 같습니다. 그중에 처리시간과 cpu시간에 대하여 표현하는 단위가 아래와 같습니다. CPU 단위 : 밀리세컨드 Duration 단위 : 마이크로세컨드 아래프로필러로 추적한 정보에서 CPU 5754인경우는 CPU시간량이 5.7초이며 Duration이 19593인경우는 마이크로세컨드 단위이기 때문에 19.5m/s로 처리된것을 나타냅니다. 보다 세부적인 항목을 확인하고 싶으시면 아래 MSDN URL링크를 참고하시기 바랍니다. 출처) docs.microsoft.com/ko-kr/sql/relational-databases/sql-trace/sql-trace?view=sql-server-ver15

프로그래밍/DB 2020.11.16

[DB] MSSQL sa계정 대체할 시스템 관리자계정 생성방법

MSSQL서버에서 sa계정을 사용할경우 알려진 계정이다보니 보안에 취약합니다. sa계정을 대체하는 시스템관리자(sysadimn) 계정 생성방법에 대하여 알아보도록 하겠습니다. 먼저 보안 -> 로그인 -> 새로그인항목을 선택합니다. 로그인 이름에 신규 생성할 계정명을 입력합니다. 서버역할 항목을 선택합니다. 해당항목을 선택하면 아래 그림과 같이 나타나며 sysadmin 항목을 체크합니다. 이제 해당계정을 관리자 계정으로 사용할수 있으며 기존 sa계정은 삭제하면됩니다.

프로그래밍/DB 2020.11.15

[DB] MSSQL DB접속포트 두개이상 지정하기 (다중포트사용)

MSSQL서버에서 동시에 두개의 포트를 지정하여 사용하는 방법에 대해 알아보도록 하겠습니다. 기본적으로는 하나의 포트를 사용하겠지만 상황에 따라 두개포트를 사용해야 하는 경우에 유용하게 사용할수있습니다. 1433,14330 포트에 연결하는 방법에 대해 알아보겠습니다. 먼저 SQL구성관리자를 실행후 네트워크 구성 -> TCP/IP부분을 선택합니다. TCP/IP속성에 TCP포트에 1433, 14330 이렇게 두개를 지정합니다. 콤마로 구분하여 여러개 포트를 지정할수 있습니다. 포트를 설정 후 서비스를 재 시작하여 두개의 포트로 서버스가 동작되는것을 확인할수 있습니다. 커맨드창에서 포트가 열린것을 확인해보면 1433, 14330포트가 열린것을 확인할수 있습니다. SQL Management로 1443, 1433..

프로그래밍/DB 2020.11.15

[DB] MSSQL 반올림,올림,버림 방법(ROUND,CELLING,FLOOR)

데이터베이스상에서 반올림,올림,버림하는 방법에 대하여 알아보도록 하겠습니다. 반올림을 하는경우에는 ROUND함수를 사용하고 올림은 CELLING함수 버림은 FLOOR함수를 사용합니다. 1. CELLING함수 이 함수는 지정한 숫자 식보다 크거나 같은 최소 정수를 반환합니다. 소수점 올림처리를 하겠다는 애기이며 소수점단위에 대해서만 처리가 가능합니다. 2. FLOOR 지정된 숫자 식보다 작거나 같은 최대 정수를 반환합니다.소수점 버림처리를 하겠다는 애기이며 소수점단위에 대해서만 처리가 가능합니다. 3. ROUND함수 특정 길이나 전체 자릿수로 반올림한 숫자 값을 반환합니다. MSDN에 설명된 구문을 보면 다음과 같습니다. 설명보다 실제 데이터를 보면 이해가 빠르실겁니다. 소수점단위 올림,버림,반올림을 해보..

프로그래밍/DB 2020.11.06
1 2 3 4 5 6 7 8