SQL Server/SQL Server 자주보는

SP 생성시간과 수정시간 확인하는 방법 all_objects 의 객체를 활용하여 SP 생성시간과 수정시간을 확인할 수 있습니다. is_ms_shipped 는 시스템객체는 제외되며, type P 는 프로시저만 조회하겠다를 의미합니다. 이렇게 출력된 결과는 현재 위치한 데이터베이스 내의 객체로 종속됩니다. 1 2 3 SELECT name, create_date, modify_date FROM sys.all_objects WHERE is_ms_shipped = 0 and type = 'P' cs
개요 데이터 건수가 많아질수록 인덱스 생성시간은 오래 소요됩니다. 벌크 데이터 적재나 갱신같은 경우 단위처리방식으로 끊어서 진행할 수 있어서 진행률을 확인 가능하지만 인덱스의 경우에는 단위처리 방식이 불가능합니다. 즉, 한번 실행하면 완료될때까지 쿼리가 계속 실행되어야 합니다. 오래수행되는 인덱스는 생성이 잘 진행이 되고 있는지, 어디에서 멈춰있는 것은 아닌지 알기가 힘듭니다. 이런 경우 인덱스 생성 진행률을 확인하여 완료시간또한 추정할 수 있습니다. (SQL Server 2014 이상) 단, 이 진행률을 알기 위해서는 선행조건이 필요합니다. 선행조건 profile on 혹은 '실제 실행 계획' 활성화가 필요합니다. 아래 방법 둘 중 하나를 적용해 줍니다. SSMS 창에서 빨간 네모박스를 활성화 합니다...
SQL Server 테이블 조회에 필요한 뷰 sys.dm_db_partitions_stats 현재 데이터베이스의 파티션에 구성된 페이지와 로우 수 정보를 반환합니다. sys.internal_tables 내부 테이블 전용입니다. sys.all_objects 스키마에 구성된 모든 객체를 보여줍니다. SQL Server 모든 테이블 크기를 조회하는 쿼리 + 테이블의 건수와, 테이블에 구성된 인덱스들의 합도 같이 확인할 수 있습니다. 쿼리로 확인하는 방법 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 32 33 SELECT OBJECT_SCHEMA_NAME(a2.object_id) AS SchemaName, ..
SQL Server 인덱스 조회에 필요한 뷰sys.indexes인덱스와 힙 개체를 포함합니다.이 때 힙은 클러스터 인덱스가 없는 테이블을 의미합니다. sys.partitions파티션ID에 속한 개체 내부의 인덱스ID를 포함합니다. sys.allocation_units데이터베이스 할당된 유닛을 포함합니다.하나의 유닛에 몇 페이지(KB)가 할당되었는지를 알 수 있습니다. 유닛의 used_pages 가 1 이라면 8KB 가 사용되었다는 의미로 해석할 수 있습니다. SQL Server 모든 인덱스 크기를 조회하는 쿼리위 3개의 뷰를 조인하여 SQL Server 전체 인덱스의 크기를 조회하는 쿼리입니다. 123456789101112131415161718192021222324252627SELECT OBJECT_SC..
syscomments 특정 단어가 포함된 프로시저를 찾을 때 사용하는 뷰 입니다.현재 위치한 데이터베이스의 프로시저에 대해서만 조회가 가능합니다. 특정 단어가 포함된 프로시저 찾는 방법 특정 데이터베이스에 아래 프로시저가 있습니다. 123456CREATE PROCEDURE [dbo].[P1]ASBEGIN SELECT 'mozi tistory'ENDGOcs syscomments 뷰를 사용하여 mozi tistory 문자열이 있는 프로시저를 검색합니다. 1234567SELECT textFROM sys.syscomments WITH(NOLOCK)WHERE OBJECTPROPERTY(id, 'IsProcedure') = 1 AND text LIKE '%mozi tistory%'OPTION (MAXDOP 1)cs
오랫동안 활성화 되어있는 트랜잭션이 있는 경우 문제점트랜잭션이 오랫동안 수행되고 있는 경우, 이후에 같은 페이지를 접근하는 다른 세션들은 대기해야 합니다.이런 경우 트랜잭션을 수행하는 세션을 정리해야 이후의 세션들이 작업을 진행할 수 있습니다. 또한 트랜잭션이 활성화 되어 있다면, 트랜잭션 로그도 정리할 수 없어 사용량이 계속 늘어나게 됩니다. 다양한 원인(락, 네트워크 등)으로 트랜잭션을 정상종료하지 못하고 남아있는 좀비세션들이 있을 수 있습니다. 오랫동안 수행되는 트랜잭션을 찾는 쿼리오랫동안 수행되는 트랜잭션의 세션ID, 현재 상태, 접속계정, 접속 hostname, 수행된 시간, 쿼리를 확인할 수 있습니다. 12345678910111213141516SELECT p.spid , p.cmd , p.st..
데이터베이스 마지막으로 접속한 시간 확인하는 방법데이터베이스를 마지막으로 접근한 시간은 약간 우회적으로 표현해야 합니다.데이터베이스의 객체를 언제 마지막으로 사용했는지로 확인할 수 있습니다. 즉, 객체의 마지막 접근(사용) 시간을 확인하는 방식으로 할 수 있습니다. 객체의 마지막 접근 시간을 확인하는 쿼리특정 데이터베이스에서 마지막 접근한 시간을 확인합니다.4개의 결과값 중 제일 최근의 값이 사용자가 마지막으로 DB에 접근한 시간입니다. 1234567SELECT MAX(last_user_seek) as Last_User_Seek, MAX(last_user_scan) as Last_User_Scan, MAX(last_user_lookup) as Last_User_Lookup, MAX(last_user_up..
dm_db_index_usage_stats DMV 뷰이 DMV 뷰를 통해서 테이블에 마지막으로 접근한 시간을 확인할 수 있습니다. 뷰의 명칭만 보면 인덱스만 확인할 수 있는 것으로 착각할 수 있으나,인덱스가 없는 테이블에도 적용이 가능합니다. 인덱스가 없는 테이블에 접근하는 경우 DMV 뷰의 last_user_scan 컬럼에 마지막 접근 시간이 UPDATE 됩니다. TABLE 에 마지막으로 접근한 시간을 확인하는 쿼리 123456789101112131415161718192021222324select DB_NAME(usage.database_id) AS db_name, schema_name, table_name, max(last_access) as last_access from( select sta.dat..
dm_exec_procedures_stats DMV 뷰이 DMV 뷰를 통해서 마지막으로 실행한 SP 를 확인할 수 있습니다. 그러나 dm_exec_procedures_stats 동적뷰는 캐시된 저장 프로시저에 대한 통계를 반환하기 때문에캐시에서 제거되면 해당 레코드가 동적뷰에서 제거되어 확인이 불가능 합니다. 캐시에서 제거되는 경우다음과 같은 경우 캐시된 저장 프로시저가 캐시에서 제거될 수 있습니다.캐시를 채우면서 전체 절차를 단위 테스트 하는 경우sp_configure 변경 (특정 옵션은 프로시저 캐시를 삭제하는 부작용이 있습니다.)큰 메모리를 필요로 하는 쿼리DBCC FREEPROCCACHE 구문 수행명시적 재컴파일 또는 프로시저 삭제 및 재작성 SP 를 마지막으로 수행한 시간 확인하는 쿼리 1234..
파티션 테이블, 구성표, 함수란파티션 테이블은파티션 별로 파일그룹을 지정한 '파티션 구성표' 와파티션 별로 저장할 데이터 경계값을 지정하는 '파티션 함수' 로 구성됩니다. 경계값은 경계값을 포함할 건지, 포함하지 않을 건지에 대한 옵션을 설정할 수 있습니다. 파티션 테이블, 파일그룹, 경계값을 확인하는 쿼리아래 쿼리는 TEST_T1 의 파티션 테이블의 구성만 확인할 수 있지만,전체 파티션 테이블을 확인하고 싶은 경우 12 라인의 조건을 주석처리 해주시면 됩니다. 1234567891011121314151617181920212223242526SELECT a.name "테이블 이름", f.name "파티션 함수", c.name "파티션 구성표", e.name "파일 그룹", f.type_desc "파티션 타입..
꽁담
'SQL Server/SQL Server 자주보는' 카테고리의 글 목록