MS-SQL 22

[MS-SQL] 테이블 및 컬럼 Description 추가, 수정하기

MS-SQL Table과 Column의 설명 및 정보를 추가 및 수정 해보자. 테이블 또는 컬럼의 Description을 수정할때 우선 해당 Description이 있는지 확인을 해야한다.해당 Description을 검색하는 방법은 [MS-SQL] 테이블 및 컬럼 Description 및 정보 가져오기 에서 확인 가능하다.그 이후 아래 명령어로 추가 또는 수정하면 된다.정보 추가 (AddExtendedProperty) - 정보가 Null인건 추가가 안된것정보 수정 (UpdateExtendedProperty) - 기존에 있는 Description 수정 DECLARE @DB_USER NVARCHAR(100) = 'dbo'; -- 거의 dbo일태지면 가끔 다름 소유주? ..

DBMS/MS-SQL 2019.05.15

[MS-SQL][Exception] 산술 오버플로 오류

MS-SQL Exception중 산술 오버플로 오류를 해결해보자.산술 오버플로 오류는 간단히 말해서 숫자형의 허용 범위를 넘어서 발생한 오류이다.필자는 NUMERIC를 사용할때 자주 발생한거 같다. (소수점까지의 합계나 평균등을 구할때)아래처럼 명령을 내릴경우 에러가 발생한다. SELECT CONVERT(NUMERIC(3,2), 10.1125481 / 0.3) -- 에러발생해결방법은 간단하다 범위를 늘려주면 간단히 해결된다. SELECT CONVERT(NUMERIC(5,2), 10.1125481 / 0.3) -- 정상작동INT형은 약 21억까지 가져오는데 혹 INT형에서 문제가 생기면 BIGINT로 변경해주면면 해결된다.(출력에는 21억까지 나올수가 없는데 내부에서 계산도중 21억이 넘어가..

DBMS/MS-SQL 2019.05.07

[MS-SQL] 소계 출력시 총계 대비 비율(%) 구하기 (RATIO_TO_REPORT)

ORACLE의 RATIO_TO_REPORT를 MS-SQL에서 구현해보자.오라클의 RATIO_TO_REPORT와 같은 함수가 MS-SQL에는 없지만소계를 구하면서 해당 소계가 전체 대비 비율(%)이 어떻게 되는지는 아래와 같이 구할수 있다. SELECT CNT_GROUP AS [그룹] , SUM(CNT) AS [소계] , SUM(CNT) * 100 / SUM(SUM(CNT)) OVER() AS [비율] , SUM(SUM(CNT)) OVER() AS [총계] FROM ( SELEC..

DBMS/MS-SQL 2019.05.07

[MS-SQL] 루프문(WHILE)으로 일일 집계 쿼리 일년치 한번에 돌리기

일별 집계 프로시져를 한번에 1년치를 돌려보자.집계 쿼리를 새로 만들거나 혹은 집계 방식이 변경되었을경우 해당 집계를 다시 해줄경우가 있다.몇일 안되면 그냥 복붙으로 돌릴수도 있지만 몇개월 이상 재집계 하는경우 아래처럼 루프문(WHILE)을 이용하면 간편하다. DECLARE @START_DATE DATETIME = '2018-01-01' -- 시작날짜 DECLARE @END_DATE DATETIME = '2018-12-31' -- 종료날짜 DECLARE @DATE_STRING VARCHAR(10) = NULL -- 프로시저에서 VARCHAR형태로 받기 때문에 한번 변형해주기 위한 변수 WHILE @START_DATE 관련글 ..

DBMS/MS-SQL 2019.05.02

[MS-SQL] 뷰(View)에서 해당 테이블이 사용되는지 검색해보기

해당 테이블이 뷰(VIEW)에서 사용중인지 검색해보자.뷰에 해당 단어가 있는지 검색하고 싶을때 아래명령을 통하여 검색한다.프로시저, 뷰, 트리거검색은 from만 바꿔주면 된다.(Sys.프로시저, sys.트리거, sys.뷰) DECLARE @SEARCH_TEXT NVARCHAR(MAX) = '검색텍스트'; SELECT OBJECT_NAME(OBJECT_ID) AS NAME , OBJECT_DEFINITION(OBJECT_ID) AS CONTENTS FROM SYS.VIEWS -- PROCEDURES, TRIGGERS WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%' + @SEARCH_TEXT + '%' ORDER BY..

DBMS/MS-SQL 2019.04.29

[MS-SQL] 트리거(TRIGGER)에서 해당 테이블이 사용되는지 검색해보기

해당 테이블이 트리거(Trigger)에서 사용중인지 검색해보자.트리거거에 해당 단어가 있는지 검색하고 싶을때 아래명령을 통하여 검색한다.프로시저, 뷰, 트리거검색은 from만 바꿔주면 된다.(Sys.프로시저, sys.트리거, sys.뷰) DECLARE @SEARCH_TEXT NVARCHAR(MAX) = '검색텍스트'; SELECT OBJECT_NAME(OBJECT_ID) AS NAME , OBJECT_DEFINITION(OBJECT_ID) AS CONTENTS FROM SYS.TRIGGERS -- PROCEDURES, VIEWS WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%' + @SEARCH_TEXT + '%' ..

DBMS/MS-SQL 2019.04.29

[MS-SQL] 특정문자 검색 (프로시저, 트리거, 뷰, 함수 모두 검색하기)

MS-SQL 뷰(View), 프로시져(Procedure), 트리거(Trigger), 함수(Function) 내부 단어 검색하기. 해당 테이블이 어디에서 사용하는지 한번에 검색하고 싶을때 아래명령을 통하여 검색하면된다.Function의 경우는 스칼라와 테이블반환이 구분되어 검색된다.(테스트 해본 결과 뷰(VIEW), 프로시져(SQL_STORED_PROCEDURE), 트리거(SQL_TRIGGER), 함수(SQL_SCALAR_FUNCTION & SQL_TABLE_VALUED_FUNCTION) 타입이 검색되는부분은 확인됨)DECLARE @SEARCH_TEXT NVARCHAR(MAX) = '검색텍스트'; SELECT B.NAME AS NAME -- 이름 , B.TYPE_DE..

DBMS/MS-SQL 2019.04.29

[MS-SQL] 프로시저(Procedure)에서 해당 테이블이 사용되는지 검색해보기

해당 테이블을 사용하는 프로시저가 있는지 검색하기. 보통 해당 테이블 or 해당 프로시저가 어디에서 사용되는지 검색할때 많이 사용하는 명령어이다. DECLARE @SEARCH_TEXT NVARCHAR(MAX) = '검색텍스트'; SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%' + @SEARCH_TEXT + '%' AND ROUTINE_TYPE = 'PROCEDURE' ORDER BY ROUTINE_NAME SELECT OBJECT_NAME(OBJECT_ID) AS NAME , OBJECT_DEF..

DBMS/MS-SQL 2019.04.29