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
데이터베이스 테이블들을 저장할 수 있는 집합체를 의미합니다. 데이터베이스 생성 방법 "파일그룹 / 논리적 파일명 / 물리적 파일명 / 파일사이즈 / 최대파일사이즈 / 파일사이즈만큼 데이터가 늘었을 때 파일사이즈의 증가량"으로 구성됩니다. 하나의 파일그룹은 여러개의 논리적파일을 가질 수 있습니다. 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..
SQL Server 의 압축백업 방법 SQL Server 2008 버전부터 압축백업이 지원됩니다. 압축된 백업은 압축되지 않은 백업보다 작기 때문에, I/O 에 대한 비용이 절약되며 백업속도가 크게 향상됩니다. 다만 압축을 하기위해 CPU 오버헤드가 발생합니다. 반면 압축을 하지 않는다면 CPU 오버헤드는 발생하지 않지만 I/O 가 훨씬 많이 발생하게 될 것입니다. 그렇지만 I/O 와 CPU 의 부하 비교했을 때, CPU 의 오버헤드가 발생하는 부분이 훨씬 효율적입니다. 압축백업의 이점 압축된 백업에 대한 최종 백업 파일의 크기는 데이터를 어느정도나 압축할 수 있는지에 따라 달라집니다. 테스트했을 때 대략적으로는 원본백업파일의 80% 크기 정도를 생각하면 좋습니다. 참고로 이 80% 도 데이터 유형에 따..
인메모리 테이블 테이블의 데이터를 메모리로 올려, 모든 데이터 조작을 메모리상에서만 하도록 하는 방식입니다. 디스크를 거치지 않기 때문에 매우 빠른 속도로 진행되지만, 모든 데이터가 메모리상에 있어야 하기 때문에 메모리 사용률이 증가합니다. 메모리의 데이터는 서버가 재부팅되는 경우 소실됩니다. 이렇게 메모리에만 데이터가 있어 유실되는 부분을 방지하기 위해 File Stream 이라는 기능을 통해 디스크에 데이터를 영구보관 합니다. ( 단, 이렇게 데이터를 영구보관하기 위해서는 테이블에 Primary Key 가 무조건 있어야 합니다. ) 인메모리 테이블 생성을 위한 선행조건 데이터베이스에 메모리 파일그룹 영역 생성 메모리에 최적화된 파일그룹을 생성해 줍니다. 이 파일그룹에 SCHEMA_AND_DATA 옵션..
가끔씩 라이브에서 데이터를 추출해서 전달해 달라는 요청이 들어옵니다. 일반적인 경우 추출한 데이터는 따로 검증작업 없이 요청자에게 전달하여 CS 에서 확인하는 용도로 사용됩니다. 즉, 추출한 데이터를 라이브에서 다시 사용하지 않는다는 의미입니다. 하지만 추출한 데이터를 다시 라이브용도로 활용하려고 하는 경우에는 어떻게 해야할까요? DMA 툴이나 패키지를 사용하여 데이터를 마이그레이션 할 수도 있지만 환경이 안되어서 SRC 서버에서 INSERT 쿼리형식으로 추출하여 DST 서버에서 적재하는 방법도 검토해야 합니다. 이런경우 추출한 데이터가 정확한지 검증작업을 진행해야 합니다. ( 테이블에 PK 가 있는 경우에만 가능한 점 참고 부탁드립니다. ) 데이터 검증 방법 1. 데이터가 변경되지 않도록 설정합니다. ..
현상 다음 파일의 줄 끝에 일관성이 없습니다. 줄 끝을 정규화시키시겠습니까? 이런 대화창은 왜 나오는걸까? 원인 데이터에 줄바꿈(Enter)이 있고, 데이터를 넣고 추출하는 OS 가 다른경우에 발생하게 됩니다. 타 OS 에서 데이터를 넣고 추출하는 경우에 왜 이런 오류가 나올까요? 먼저 OS 마다 Enter 값을 저장하는 내부 값은 다릅니다. 운영체제 값 헥사 Windows CR LF (rn) 0x0D 0x0A Mac CR (r) 0x0D Unix LF (n) 0x0A 하나의 예를 보겠습니다. 리눅스 환경에서 Enter 값이 들어간 데이터를 한건 적재했습니다. 그렇게 되면 SQL Server 내부에는 0x0A 라는 값 하나만 저장되게 됩니다. 이 값을 Windows 환경에서 추출해서 확인하려고 하면, 0..
상황 API 에서 SP 를 호출하면 Timeout 이 발생합니다. SSMS 에서 매개변수를 똑같이 해서 제가 직접 SP 를 호출하면 0초만에 수행이 완료됩니다. 참고로 Timeout 의 기준은 3초입니다. 많은 사이트에서는 'recompile' 이나 '매개변스 스니핑'을 하라고 가이드 하고 있습니다. 실제로 recompile 을 하면 해결될 수 있습니다. 그러나 이 방법은 근본적인 방법은 아닙니다. 임시 해결 방안 SP recompile 타 사이트에서 말하는 것처럼 해결하기 위한 결론부터 말씀드리면 SP recompile 을 하면 해결됩니다. 다만 SP recompile 은 현재상황을 해결하기 위한 임시방편이고 다시 똑같은 상황이 발생할 수 있습니다. 1 exec sp_recompile 'sp_name'..
테이블이란 데이터들을 모아놓은 객체를 의미합니다. 하나의 테이블 안에는 다수의 데이터가 저장될 수 있습니다. 테이블 생성하는 방법 테이블은 기본적으로 컬럼을 가지고 있어야 합니다. 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..
꽁담
'SQL Server' 태그의 글 목록