msSQL

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
데이터베이스 테이블들을 저장할 수 있는 집합체를 의미합니다. 데이터베이스 생성 방법 "파일그룹 / 논리적 파일명 / 물리적 파일명 / 파일사이즈 / 최대파일사이즈 / 파일사이즈만큼 데이터가 늘었을 때 파일사이즈의 증가량"으로 구성됩니다. 하나의 파일그룹은 여러개의 논리적파일을 가질 수 있습니다. DEFAULT 가 붙은 파일그룹은 테이블이 생성될 때 기본으로 지정되는 파일그룹을 의미합니다. 1 2 3 4 5 6 7 8 9 10 CREATE DATABASE [Sample] ON PRIMARY ( NAME = N'Sample', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\Sample.mdf' , SIZE =..
인덱스란 테이블에 있는 데이터를 빠르게 검색하기 위해 생성되는 객체입니다. 예를 들어 1억건이 들어있는 테이블에서 A 라는 key 를 찾기 위해서는 1억건을 모두 조회해야 합니다. 그러나 인덱스가 있는 경우에는 b-tree 기법을 사용하여 A key 를 더 빠르게 찾을 수 있습니다. 인덱스를 생성하는 방법 인덱스는 테이블을 생성할 때 묶어서도 생성할 수 있지만 여기에서는 인덱스만을 생성하는 방법을 다룹니다. 인덱스는 여러 종류가 있습니다. Primary, Unique, Normal 방식이 있으며 Clustered 와 Non-Clustered 로 나뉩니다. 이 포스팅에서는 위의 개념들을 다루지는 않겠습니다. 인덱스는 테이블을 기반으로 생성하기 때문에, 아래와 같은 테이블이 있는 상태에서 진행합니다. 1 C..
가끔씩 라이브에서 데이터를 추출해서 전달해 달라는 요청이 들어옵니다. 일반적인 경우 추출한 데이터는 따로 검증작업 없이 요청자에게 전달하여 CS 에서 확인하는 용도로 사용됩니다. 즉, 추출한 데이터를 라이브에서 다시 사용하지 않는다는 의미입니다. 하지만 추출한 데이터를 다시 라이브용도로 활용하려고 하는 경우에는 어떻게 해야할까요? DMA 툴이나 패키지를 사용하여 데이터를 마이그레이션 할 수도 있지만 환경이 안되어서 SRC 서버에서 INSERT 쿼리형식으로 추출하여 DST 서버에서 적재하는 방법도 검토해야 합니다. 이런경우 추출한 데이터가 정확한지 검증작업을 진행해야 합니다. ( 테이블에 PK 가 있는 경우에만 가능한 점 참고 부탁드립니다. ) 데이터 검증 방법 1. 데이터가 변경되지 않도록 설정합니다. ..
테이블이란 데이터들을 모아놓은 객체를 의미합니다. 하나의 테이블 안에는 다수의 데이터가 저장될 수 있습니다. 테이블 생성하는 방법 테이블은 기본적으로 컬럼을 가지고 있어야 합니다. 1 2 3 4 5 CREATE TABLE dbo.table_name ( column_name1 INT ,column_name2 VARCHAR(10) ) cs 파일그룹을 지정하는 방법 MSSQL 은 다른DBMS 와 다르게 하나의 DB에서 다수의 파일그룹을 가질 수 있습니다. 파일그룹은 물리적파일을 그룹으로 묶어놓은 개념으로, 파일그룹을 다르게 지정함으로 써 데이터가 저장되는 파일을 나눌 수 있습니다. 1 2 3 4 5 CREATE TABLE dbo.table_name ( column_name1 INT ,column_name2 V..
프로시저란? DBMS 에서 제공하는 프로그램 SQL 를 의미합니다. DB 기능이지만 프로그램이기 때문에 간단한 문법인 IF, WHILE 등 프로그래밍 문법을 사용할 수 있고, 프로시저를 호출할 때 매개변수를 받거나 전달해 줄 수 있습니다. DB 객체로 생성할 수 있고 여러 프로그래밍 문법과 SQL 을 하나의 객체내로 묶어서 사용할 수 있습니다. 따라서 개발에서 코드의 복잡도를 줄여줄 수 있습니다. 프로시저 생성하는 방법 기본 문법 제일 기본이 되는 문법입니다. CREATE PROCEDURE 프로시저 명으로 시작하고, AS BEGIN 과 END 사이에 원하는 쿼리를 입력하는 방식입니다. 1 2 3 4 5 6 CREATE PROCEDURE Schema_Name.Procedure_Name AS BEGIN SE..
단순 모드 ( Simple Mode)SQL Server 엔진에서 트랜잭션 로그를 주기적으로 비워줍니다.단순 모드라고 해서 트랜잭션 로그가 기록되지 않는 것은 아닙니다. 트랜잭션 로그가 계속 증가하는 원인 분석 단순모드 DB 의 트랜잭션 로그 사용량이 갑자기 증가하기 시작하였습니다. 처음에는 SQL Server 에서 비워주기 전 로그가 많이 쌓여 사용량이 증가한 것으로 생각하였지만,4시간이 지나도록 정리되지 못하고 사용량이 67% 까지 증가하고 있었습니다. 왜 정리를 못하는지 확인해보니, 2184 세션의 트랜잭션이 84910 초동안 활성화 되어 있었습니다.그래서 해당 트랜잭션 로그 시점 이후의 로그들은 정리되지 못하고 계속 쌓이고 있었습니다. 해당 세션을 KILL 한 후 로그 사용량을 확인해보니 0.7% ..
오랫동안 활성화 되어있는 트랜잭션이 있는 경우 문제점트랜잭션이 오랫동안 수행되고 있는 경우, 이후에 같은 페이지를 접근하는 다른 세션들은 대기해야 합니다.이런 경우 트랜잭션을 수행하는 세션을 정리해야 이후의 세션들이 작업을 진행할 수 있습니다. 또한 트랜잭션이 활성화 되어 있다면, 트랜잭션 로그도 정리할 수 없어 사용량이 계속 늘어나게 됩니다. 다양한 원인(락, 네트워크 등)으로 트랜잭션을 정상종료하지 못하고 남아있는 좀비세션들이 있을 수 있습니다. 오랫동안 수행되는 트랜잭션을 찾는 쿼리오랫동안 수행되는 트랜잭션의 세션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..
꽁담
'msSQL' 태그의 글 목록