본문 바로가기

SQL/도움말 팁들!

대기타입의 정의 (wait_type) 동적 관리 뷰 중 특정 리소스에서 대기 중인 태스크의 대기 큐에 대한 정보를 반환하는 DM_OS_WAITING_TASKS 를 조회하면 아래와 같은 결과가 나타납니다. SELECT * FROM SYS.DM_OS_WAITING_TASKS WHERE SESSION_ID > 50 여기에서 우리는 wait_type 이라는 컬럼을 볼 수 있는데 여기에 나올 수 있는 항목에 대한 내용을 짚어보고자 합니다.MSDN에 나와있는 설명은 단지 "대기 유형의 이름" 이라고만 정의되어 있습니다. 더보기
SQL Server 주요 성능 카운터 해당 XML 파일을 내려 받아서 성능카운터 템플릿으로 불러오기 하면 편합니다. Processor\%Processor Time : % Processor Time은 프로세서가 비유휴 스레드를 실행하는 데 소비하는 시간의 백분율입니다. 이것은 프로세서가 각 샘플 간격 동안 유휴 스레드를 실행하는 데 소비한 시간을 측정하여 간격 기간에서 그 값을 뺀 것입니다. 각 프로세서에는 유휴 스레드가 있는데 이것은 다른 어떤 스레드도 실행되지 않을 때 사이클을 소비하는 스레드입니다. 이 카운터는 프로세서 동작의 주요 표시기이며 샘플 간격 동안 관찰되는 사용 시간의 평균 백분율을 표시합니다. 이것은 서비스가 비활성인 시간을 모니터링하여 100%에서 그 값을 뺀 것입니다. 즉 쉽게 말해서, 1시간 동안 CPU상태를 관찰하였고.. 더보기
Oracle START WITH ~ CONNECT BY 절 MSSQL로 처리하기 굉장히 정리가 잘된 START WITH ~ CONNECT BY 예제 * Oracle START WITH ~ CONNECT BY 절 MSSQL로 처리하기. # OracleSELECT LEVEL, CATE_ID, LTRIM (SYS_CONNECT_BY_PATH (CATE_NAME, ' > '), ' > ') || ' > ' AS CATE_NAME FROM TBL_CATEGORYSTART WITH CATE_ID = 1CONNECT BY PRIOR CATE_ID = PARENT_CATE_ID # SQL ServerWITH CTE_TABLEAS( SELECT 1 AS LEVEL, A.CATE_ID, PARENT_CATE_ID, CATE_NAME, CONVERT(VARCHAR(100),CAST(A.CATE_NAME.. 더보기
[MSSQL] CREATE TABLE 쿼리문 일괄로 쉽게 만들기 테이블 스키마를 보고 싶을 때 흔히들 EXEC SP_HELP '테이블명' 요렇게 많이 할 것이다. 난 요럿게 내 입맛에 맞게 바꿔서 사용한다. 그리고 아래 쿼리를 잘 이용하면 특정 DB내의 모든 테이블 CREATE 문을 자동 생성할 수도 있다. CREATE PROC DBO.USP_GET_TABLE_SCHEMA @TBLNAME VARCHAR(100) /************************************************************************ 1> 내 용: 내입맛대로테이블스키마뽑기 2> 입력내용: @TBLNAME = 테이블명(ex. DBO.F_SALES_ORDERS) 3> 출력내용: 변경된테이블스키마 4> 작성자명: 민경태 5> 작성일자: 2011-11-25 6> 수정.. 더보기
[MSSQL] 0으로나누기오류가발생했습니다. SELECT 100 / 0 AS 결과 메시지8134, 수준16, 상태1, 줄1 0으로나누기오류가발생했습니다. 위와같은경우 나누는 숫자가 0일때 오류가 발생합니다. SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF SELECT 100 / 0 AS 결과 해당 결과값은 오류없이 NULL로 얻을수 있습니다. 더보기
MSDN 링크 도움말 시스템 저장 프로시저 http://msdn.microsoft.com/KO-KR/library/ms187961(v=sql.105) 변경 데이터 캡처 http://msdn.microsoft.com/ko-kr/library/bb522489(v=sql.105) DB롤 별 권한 http://msdn.microsoft.com/en-us/library/ms189612(v=sql.90).aspx 더보기
[MSSQL] 문자열 자르는 함수 여러 아이디 값이나 변수를 배열처럼 넘겨서 사용하고 싶을 때가 간혹 있다. 뭐 이런 형태로 변수를 넘겨서 받아 사용하고 싶을 때 유용한 함수이다. (ex. 100,90,88,105,300,412,938,... ) CREATE FUNCTION [dbo].[UF_TEXT_SPLIT] ( @TEXT VARCHAR(8000) ,@DELIMITER CHAR(1) ) RETURNS @STRINGS TABLE ( POSITION INT IDENTITY(1,1) PRIMARY KEY, VALUE NVARCHAR(MAX) ) AS BEGIN DECLARE @INDEX INT SET @INDEX = -1 WHILE (LEN(@text) > 0) BEGIN SET @INDEX = CHARINDEX(@DELIMITER , @.. 더보기
[MSSQL] SQL SERVER 2005 사용자 추가 및 계정 권한 컨트롤 데이터 모델을 만들어 DB를 관리하는 경우 이런 고민이 있을 것이다.운영 SQL Server 에 개발자들이 무분별하게 접속하여 작업을 하게 되면 DB모델에는 반영되지 않은 사항이 물리DB에는 반영되어, 모델 관리가 어렵게 될 수 있다. 그리고 시간이 지나면 동기화가 되지 않아 모델 자체를 신뢰할 수 없게 되는 상황까지 갈 것이다. 아니면 다시 리버스 하여 모델을 다시 그리던지.. 이런 문제를 애초에 잡고자, 개발DB는 개발자가 마음데로 작업할 수 있지만, 운영DB에서는 조회만 가능하게 권한을 막아보자 그럴려면, 각 개발자별로 아이디를 부여하고, 해당 아이디가 사용하는 DB들을 정의 한 후에 dbo 스키마를 기본으로 적용해주고, 해당 아이디의 권한을 명시적으로 부여하면 된다. (처음에는 Role을 사용하여.. 더보기
[MSSQL] 특정 컬럼명을 포함하는 테이블 목록보기 특정 컬럼명을 포함하고 있는 테이블명을 알고 싶을 때 유용하다.가령, 수리날짜(RepairDate) 라는 데이터가 있는 이 컬럼을 가지고 있는 테이블이 뭔지 찾으려면 테이블을 하나 하나 열어봐야 하는데 귀찮으므로, 한방에 찾아보자 ALTER PROC DBO.컬럼찾기 @COLNMAE VARCHAR(200) /***************************** 1> 컬럼명으로테이블찾기 2> 특정컬럼명을사용하는테이블이뭐가있는지궁금할때 3> 2012.07.03 4> KTMIN5> EX) EXEC 컬럼찾기 'repacost' *****************************/ AS SELECT B.NAME AS 테이블명 ,A.NAME AS 컬럼명 ,TYPE_NAME(USER_TYPE_ID) AS 데이타타입 .. 더보기
FK 설정시 충돌이 발생했다? 무슨 이야기지? 테이블 설계 후 Foreign Key 제약사항을 정의 하고, 물리적 DB에 반영하려고 ALTER 문들을 실행하고 있는데 희안한 에러가 나오는 것이다. 메시지547, 수준16, 상태0, 줄1 ALTER TABLE 문이FOREIGN KEY 제약조건"FK_TABLE_COLUMN"과(와) 충돌했습니다. 데이터베이스" ", 테이블"dbo. ", column ' '에서충돌이발생했습니다. 이건 뭔가 싶어 두 테이블을 비교해봤더니 둘다 데이터형도 똑같고 제약사항도 NOT NULL 로 동일한 것을 확인하였다. 구글링 결과 제약조건을 잡을 때 기존에 테이블에 들어있는 데이터들을 비교하여 부모 테이블의 PK를 잘못 참조하여 이미 기존에 들어간 값이 있다면 저렇게 충돌 메시지를 던져준단다. 부모-자식 간 기존 데이터가 충돌이.. 더보기