DataBase
-
프로젝트 진행시 DB상의 쿼리를 자동으로 처리해주어야 하는 경우(배치 작업)가 발생합니다. 이때 MSSQL SERVER에는 작업 스케줄러를 등록하고 실행하는 에이전트가 존재합니다. 먼저 개체탐색기 > SQL Server 에이전트 > 작업 에서 오른쪽 마우스를 클릭하신 후 새 작업을 눌러줍니다. 해당 스케줄러 작업명을 기입합니다. 단계> 새로만들기를 클릭합니다. 해당 작업 단계 이름 / 데이터베이스/ 명령을 실행할 쿼리문을 입력한뒤 확인을 누릅니다. 아래 그림과 같이 작업 단계 목록이 생성이 되었다면 정상적으로 처리가 된 것 입니다. 만약 아래와 같은 창이 발생시 단계가 하나만 존재할 경우는 예/ 추가 단계를 입력할 경우 아니오 일정 > 새로만들기를 클릭합니다. 이제 작업 일정을 설정하시면 됩니다. 빈도 ..
[MSSQL] 스케줄러(scheduler)를 통해 쿼리문 자동 반복하기프로젝트 진행시 DB상의 쿼리를 자동으로 처리해주어야 하는 경우(배치 작업)가 발생합니다. 이때 MSSQL SERVER에는 작업 스케줄러를 등록하고 실행하는 에이전트가 존재합니다. 먼저 개체탐색기 > SQL Server 에이전트 > 작업 에서 오른쪽 마우스를 클릭하신 후 새 작업을 눌러줍니다. 해당 스케줄러 작업명을 기입합니다. 단계> 새로만들기를 클릭합니다. 해당 작업 단계 이름 / 데이터베이스/ 명령을 실행할 쿼리문을 입력한뒤 확인을 누릅니다. 아래 그림과 같이 작업 단계 목록이 생성이 되었다면 정상적으로 처리가 된 것 입니다. 만약 아래와 같은 창이 발생시 단계가 하나만 존재할 경우는 예/ 추가 단계를 입력할 경우 아니오 일정 > 새로만들기를 클릭합니다. 이제 작업 일정을 설정하시면 됩니다. 빈도 ..
2020.04.07 -
쿼리를 실행하다 보면 간단한 쿼리인데도 실행되지 않는 경우가 종종 발생하곤 합니다. 이럴때 가장먼저 확인해야 하는것이 해당 쿼리에 대해 Lock의 발생 여부입니다. Lock이 걸린 spid를 확인 EXEC SP_LOCK Mode가 X로 되어있는 spid를 확인합니다. Lock이 걸린 쿼리내용 확인 DBCC inputbeffer(spid) 위에서 식별된 spid를 넣고 Lock이 걸린 쿼리 내용을 확인합니다. Lock이 발생한 host 찾기 EXEC SP_WHO spid spid를 넣고 어떤 host에서 Lock이 발생한지 확인합니다. Lock 제거 EXEC KILL spid Lock이 발생한 경우 일부 테이블에 대한 액세스가 불가하기 때문에 꼭 제거하도록 합시다. 트랜잭션이 필요없는 대량의 데이터를 조회..
[MSSQL] Lock 걸린 쿼리 확인하고 해제 및 방지하기쿼리를 실행하다 보면 간단한 쿼리인데도 실행되지 않는 경우가 종종 발생하곤 합니다. 이럴때 가장먼저 확인해야 하는것이 해당 쿼리에 대해 Lock의 발생 여부입니다. Lock이 걸린 spid를 확인 EXEC SP_LOCK Mode가 X로 되어있는 spid를 확인합니다. Lock이 걸린 쿼리내용 확인 DBCC inputbeffer(spid) 위에서 식별된 spid를 넣고 Lock이 걸린 쿼리 내용을 확인합니다. Lock이 발생한 host 찾기 EXEC SP_WHO spid spid를 넣고 어떤 host에서 Lock이 발생한지 확인합니다. Lock 제거 EXEC KILL spid Lock이 발생한 경우 일부 테이블에 대한 액세스가 불가하기 때문에 꼭 제거하도록 합시다. 트랜잭션이 필요없는 대량의 데이터를 조회..
2020.04.07 -
MSSQL에서 특정 테이블에서 사용되는 테이블 및 프로시저를 검색하거나 특정 테이블이 사용되는 프로시저를 검색하는 방법이 있습니다. 기존에는 sys.sysobjects 와 sys.syscomments를 조인하여 탐색을 했었는데 SQL SERVER에서 제공하는 시스템 테이블을 활용하면 보다 빠른 검색이 가능합니다. 바로 sys.dm_sql_referencing_entities 테이블 입니다. 간단하게 설명하자면 두 Entity 간의 (참조된 Entity, 참조한 Entity) 간에 SQL 문에 표시가 된 경우 해당 테이블에 데이터가 생성됩니다. 예를 들어 저장 프로시저가 지정된 참조 엔터티인 경우 이 함수는 테이블, 뷰, UDT(사용자 정의 형식), 또는 다른 저장 프로시저 등 이 저장 프로시저에서 참조되..
[MSSQL] 특정 테이블을 사용하는 프로시저 찾기MSSQL에서 특정 테이블에서 사용되는 테이블 및 프로시저를 검색하거나 특정 테이블이 사용되는 프로시저를 검색하는 방법이 있습니다. 기존에는 sys.sysobjects 와 sys.syscomments를 조인하여 탐색을 했었는데 SQL SERVER에서 제공하는 시스템 테이블을 활용하면 보다 빠른 검색이 가능합니다. 바로 sys.dm_sql_referencing_entities 테이블 입니다. 간단하게 설명하자면 두 Entity 간의 (참조된 Entity, 참조한 Entity) 간에 SQL 문에 표시가 된 경우 해당 테이블에 데이터가 생성됩니다. 예를 들어 저장 프로시저가 지정된 참조 엔터티인 경우 이 함수는 테이블, 뷰, UDT(사용자 정의 형식), 또는 다른 저장 프로시저 등 이 저장 프로시저에서 참조되..
2020.03.24 -
SSMS 텍스트 입력기에서 SQL문을 작성할 때 코드가 너무 길어 어느 포인트에서 처리가 잘 못 되는지 확인 하기 좋은 기능이 존재합니다. 바로 책갈피라는 기능입니다! 책갈피를 사용하면 지정한 위치로 한번에 이동할 수 있으며 또 여러 위치를 지정해 놓고 한 눈에 확인 할 수 있어 각 지점마다 CheckPoint를 잡고 오류 지점을 확인할 수 있습니다. 더보기 메뉴에서 보기> 책갈피창 을 클릭하시면 아래의 SSMS 하단에 아래 그림 처럼 책갈피라는 창이 추가가 됩니다. 그리고 책갈피로 설정한 행에 대해서는 빨간 박스처럼 책갈피 모양이 표시가 됩니다. 해당 로우를 책갈피로 설정하는 방법은 편집 > 책갈피 > 책갈피 설정/해제를 클릭하는 방법도 있지만 이렇게 번거롭게 하면 생산성 향상이 아니겠죠?? SSMS ..
[SSMS 생산성향상 -2] SQL문에서 지정해 놓은 위치로 이동하기SSMS 텍스트 입력기에서 SQL문을 작성할 때 코드가 너무 길어 어느 포인트에서 처리가 잘 못 되는지 확인 하기 좋은 기능이 존재합니다. 바로 책갈피라는 기능입니다! 책갈피를 사용하면 지정한 위치로 한번에 이동할 수 있으며 또 여러 위치를 지정해 놓고 한 눈에 확인 할 수 있어 각 지점마다 CheckPoint를 잡고 오류 지점을 확인할 수 있습니다. 더보기 메뉴에서 보기> 책갈피창 을 클릭하시면 아래의 SSMS 하단에 아래 그림 처럼 책갈피라는 창이 추가가 됩니다. 그리고 책갈피로 설정한 행에 대해서는 빨간 박스처럼 책갈피 모양이 표시가 됩니다. 해당 로우를 책갈피로 설정하는 방법은 편집 > 책갈피 > 책갈피 설정/해제를 클릭하는 방법도 있지만 이렇게 번거롭게 하면 생산성 향상이 아니겠죠?? SSMS ..
2020.03.18 -
SSMS를 사용할때 자주 사용하는 쿼리문 및 프로시저, 테이블 작성 템플릿을 불러오는 방법이 있습니다~!! 그것은 바로 코드 조각 관리자!!! 코드 조각관리자는 SSMS에서 제공하는 기능으로 미리 정의된 코드 조각을 삽입하거나 고유의 코드 조각을 만들 수 있도록 도와줍니다. 저도 여태까지 따로 메모장이나 Sql 파일에다 템플릿 및 쿼리문을 저장해서 보관했었는데 이 기능을 알고 나니 생산성이 눈에 띄게 높아졌습니다. 자!! 본론으로 들어가서 어떻게 코드 조각을 불러오는 지 또 어떻게 내가 불러올 코드 조각을 저장하는지 알아보도록 하겠습니다. 코드 조각 불러오기 먼저 텍스트 입력창에서 오른쪽 마우스 클릭시 코드 조각 삽입을 확인 할 수 있습니다. 이를 클릭하게 되면 Index, Table, Stored Pr..
[SSMS 생산성 향상 -1] 자주 사용하는 SQL문 불러오기SSMS를 사용할때 자주 사용하는 쿼리문 및 프로시저, 테이블 작성 템플릿을 불러오는 방법이 있습니다~!! 그것은 바로 코드 조각 관리자!!! 코드 조각관리자는 SSMS에서 제공하는 기능으로 미리 정의된 코드 조각을 삽입하거나 고유의 코드 조각을 만들 수 있도록 도와줍니다. 저도 여태까지 따로 메모장이나 Sql 파일에다 템플릿 및 쿼리문을 저장해서 보관했었는데 이 기능을 알고 나니 생산성이 눈에 띄게 높아졌습니다. 자!! 본론으로 들어가서 어떻게 코드 조각을 불러오는 지 또 어떻게 내가 불러올 코드 조각을 저장하는지 알아보도록 하겠습니다. 코드 조각 불러오기 먼저 텍스트 입력창에서 오른쪽 마우스 클릭시 코드 조각 삽입을 확인 할 수 있습니다. 이를 클릭하게 되면 Index, Table, Stored Pr..
2020.03.17 -
OLTP(On-Line Transaction Processing) 다수의 이용자가 실시간으로 데이터를 갱신하거나 조회하는 경우 트랜잭션 단위로 작업을 처리하는 방식을 말합니다. 간단한 예시로 은행의 업무를 예로 A라는 사람 통장의 돈 5000원을 B라는 사람에게 이체하는 방식을 살펴봅시다 1. A의 통장에서 5000원이 감소 2. B의 통장에 5000원이 증가 3. 명세표를 출력 이렇게 동작할때 1,2,3이 하나의 단위 프로세스로 처리가 되어야한다는 것을 의미합니다. 이러한 일련의 과정을 하나의 트랜잭션으로 묶고 A의 통장에서 5000원이 감소하고 B의 통장에 5000원이 증가하기 전에 오류가 발생하게 되면 트랜잭션이 발생하기 전의 상황으로 돌아가게 되는 것입니다. OLAP(On-Line Analytic..
쉽게 이해할 수 있는 OLTP와 OLAP성 쿼리의 차이OLTP(On-Line Transaction Processing) 다수의 이용자가 실시간으로 데이터를 갱신하거나 조회하는 경우 트랜잭션 단위로 작업을 처리하는 방식을 말합니다. 간단한 예시로 은행의 업무를 예로 A라는 사람 통장의 돈 5000원을 B라는 사람에게 이체하는 방식을 살펴봅시다 1. A의 통장에서 5000원이 감소 2. B의 통장에 5000원이 증가 3. 명세표를 출력 이렇게 동작할때 1,2,3이 하나의 단위 프로세스로 처리가 되어야한다는 것을 의미합니다. 이러한 일련의 과정을 하나의 트랜잭션으로 묶고 A의 통장에서 5000원이 감소하고 B의 통장에 5000원이 증가하기 전에 오류가 발생하게 되면 트랜잭션이 발생하기 전의 상황으로 돌아가게 되는 것입니다. OLAP(On-Line Analytic..
2020.03.05 -
MSSQL에서는 기본적으로 PK 생성시 자동으로 클러스터 인덱스가 생성이 됩니다. 튜닝에 있어서 가장 기본적인 것이 인덱스 설정입니다. 아래의 쿼리는 클러스터 인덱스가 설정되지 않은 테이블을 조회하는 SP 입니다 SELECT A.id AS Object_id , A.Name AS Table_Name , B.name AS Index_Name , B.index_id AS index_id , B.type_desc AS type_desc FROM sysobjects AS A JOIN sys.indexes AS B ON A.id = B.object_id WHERE A.xType = 'U' AND B.index_id = 0 ORDER BY A.id, B.type_desc, B.name 간단히 설명 드리면 sys.in..
[MSSQL] 클러스터 인덱스가 설정 되지 않는 테이블 조회MSSQL에서는 기본적으로 PK 생성시 자동으로 클러스터 인덱스가 생성이 됩니다. 튜닝에 있어서 가장 기본적인 것이 인덱스 설정입니다. 아래의 쿼리는 클러스터 인덱스가 설정되지 않은 테이블을 조회하는 SP 입니다 SELECT A.id AS Object_id , A.Name AS Table_Name , B.name AS Index_Name , B.index_id AS index_id , B.type_desc AS type_desc FROM sysobjects AS A JOIN sys.indexes AS B ON A.id = B.object_id WHERE A.xType = 'U' AND B.index_id = 0 ORDER BY A.id, B.type_desc, B.name 간단히 설명 드리면 sys.in..
2020.02.26 -
SSMS에 다크테마를 적용하는 방법이 있다는 것 아시나요? 사실 이 기능은 미완성된 기능이라 공식적으로 오픈되지는 않았습니다. 하지만 추가적인 폰트 색상 변경을 하면 훨씬! 가독성있는 코드를 짤 수 있습니다. 우선 C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio 혹은 C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE 에 가서 ssms.pkgundef 파일을 엽니다. ※ 단, 해당 파일이 권한이 없어 수정이 되지 않기 때문에 SSMS에 오른쪽 마우스를 누른뒤 관리자 권한으로 실행을 눌러서 실행한뒤 파일> 열기 > 파일을 통해 해당 문..
SSMS 다크 테마 적용 및 텍스트 입력창 폰트 색상 변경하는 방법SSMS에 다크테마를 적용하는 방법이 있다는 것 아시나요? 사실 이 기능은 미완성된 기능이라 공식적으로 오픈되지는 않았습니다. 하지만 추가적인 폰트 색상 변경을 하면 훨씬! 가독성있는 코드를 짤 수 있습니다. 우선 C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio 혹은 C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE 에 가서 ssms.pkgundef 파일을 엽니다. ※ 단, 해당 파일이 권한이 없어 수정이 되지 않기 때문에 SSMS에 오른쪽 마우스를 누른뒤 관리자 권한으로 실행을 눌러서 실행한뒤 파일> 열기 > 파일을 통해 해당 문..
2020.02.08