본문 바로가기

SQL Server

(82)
[SQL Server] 데이터 저장과 관련한 세 가지 프로세스 데이터베이스에서 일어나는 모든 작업(Transaction)은 메모리에서 처리되며, 처리된 내용은 체크 포인트(Check Point), 레이지 라이터(Lazy Writer), 로그 라이터(Log Writer)라는 세가지 프로세스에 의하여 데이터 파일과 로그 파일에 기록된다. 1. 체크 포인트(Check Point) - 체크 포인트 프로세스는 현재까지 메모리에서 진행된 모든 내용을 데이터 파일과 로그 파일에 기록하는 프로세스 - 비주기적으로 발생, 수동으로 개발자가 발생시킬 수도 있음 2. 레이지 라이터(Lazy Writer) - 레이지 라이터 프로세스는 메모리 상의 프로시저 캐시에서 사용 빈도가 낮은 실행 계획을 메모리에서 제거하고 버퍼 캐시에 있는 더티 페이지(Dirty Page)들을 디스크에 기록함으로..
[SQL Server] 여러 개의 스크립트 한 번에 생성하기 테이블이나 프로시저의 스크립트를 생성할 때 개체 탐색기에서 필요한 테이블이나 프로시저를 한 개씩 마우스 오른쪽 클릭 -> 테이블 스크립팅 - > CREATE 이런식으로 스크립트를 생성하였었다. 개체 탐색기에서는 여러 개가 선택되지 않았으므로... 하지만 요약 탭을 이용하면 여러 개의 스크립트를 한 번에 생성할 수 있다. 1. SSMS 실행 2. 요약 탭 선택 (F7) 3. 작업할 데이터베이스 더블 클릭 4. 테이블 항목을 더클 클릭하면 테이블 리스트가 보임 5. 스크립트 생성할 개체를 선택 (여러개 선택 가능) 6. 마우르 오른쪽 클릭하고 테이블 스크립팅을 선택 7. CREATE 를 선택 8. 쿼리 편집기창, 파일, 클립보드 중 하나를 선택하면 스크립트가 생성됨
[SQL Server] 중복된 Row 제거하기 이미 데이터가 저장된 테이블에 Primary Key나 Unique 인덱스를 만들고 싶지만 중복된 로우가 있으면 에러가 발생한다. 이럴경우 중복된 Row를 제거하여 보자. -- 테스트를 위해 테이블을 생성 CREATE TABLE dbo.TEST_TBL ( NUM INT NOT NULL , ID VARCHAR(32) NOT NULL ) GO -- 중복된 데이터를 삽입 INSERT INTO dbo.TEST_TBL (NUM, ID) VALUES (1, 'APPLE'), (2, 'BANANA'), (2, 'GRAPE') GO /* Primary Key 제약조건추가 NUM 컬럼은 중복된 값을 가지고 있으므로 오류가 발생*/ ALTER TABLE dbo.TEST_TBL ADD CONSTRAINT PK_TEST_TBL..
[SQL Server] SQL 인젝션과 예방 SQL 인젝션과 예방 SQL 인젝션은 sql 쿼리문에 개발자가 의도 하지 않은 쿼리 문을 추가하도록 하여 비정상적인 결과를 얻기 위한 해킹 기법이다. 웹페이지 상에서 사용자 로그인 등 폼 입력 부분에서 특수 문자 등을 포함한 SQL 문의 일부 내용을 작성하여 해킹을 시도 한다. 이것은 특히 DB 에서 관리자 권한 등 불필요하게 많은 권한을 가진 계정으로 만들어 진 사이트에서 치명적일 수가 있다. 예를 들어 아래와 같은 코드를 살펴 보자. Select name from user where id=’id’ and password=’pwd’ 웹페이지 사용자 로그인 부분에서 유저아이디와 패스워드를 입력 받아서 위와 같은 sql 쿼리문을 완성 한 다음 쿼리를 실행 하여 리턴 되는 레코드가 있으면 로그인을 성공 시키..
[SQL Server] SQL Server Management Studio 단축키 내가 자주 사용하는 SSMS 단축키 단축키 동작 F5, Alt + X, Ctrl + E 선택 부분을 실행하거나 선택한 것이 없을 경우 전체 쿼리 편집기 실행 Ctrl + K + C 주석 Ctrl + K + U 주석 제거 Ctrl + R 결과창 보이기 / 감추기 Ctrl + Shift + L 선택영역을 소문자로 Ctrl + Shift + U 선택영역을 대문자로 Tab 줄 들여쓰기 Tab + Shift 줄 내어쓰기 Ctrl + L 예상 실행 계획 표시 Ctrl + M 쿼리 출력에 실제 실행 계획 포함 Ctrl + N, Alt + N 현재 연결에서 새 쿼리 열기 Alt + Break 실행 중인 쿼리 취소
[SQL Server] 집계 함수와 NULL 값 집계 함수와 NULL 값 COUNT(*) : NULL 값을 포함한 행의 수 COUNT(표현식) : 표현식의 값이 NULL 값인 것을 제외한 행의 수 SUM() : NULL 값을 제외한 합계 AVG() : NULL 값을 제외한 평균 ※ 조건절에 해당하는 데이터가 없을 때 COUNT(*)의 결과 값은 0 COL1 COL2 COL3 COL4 NULL NULL 50 30 30 20 10 30 NULL 10 NULL NULL 문제) SUM(COL1) + SUM(COL2 + COL3) + SUM(COL4)의 값은? 1.120 2.180 3.NULL 4.90 답은 120
[SQL Server] 프로시저의 모든 매개변수 한번에 보기 프로시저의 모든 매개변수 한번에 보기 SELECT 'Procedure_name' = b.name , 'Parameter_name' = a.name , 'Type' = type_name(user_type_id) , 'Length' = max_length , 'Prec' = CASE WHEN type_name(system_type_id) = 'uniqueidentifier' THEN precision ELSE OdbcPrec(system_type_id, max_length , precision) END , 'Scale' = OdbcScale(system_type_id, scale) , 'Param_order' = parameter_id , 'Collation' = CONVERT(sysname , CASE W..
[SQL Server] 버전, 서비스팩, 설치버전 알아보는 쿼리 SQL Server 버전, 서비스팩, 설치버전 알아보는 쿼리 SELECT @@VERSION as 풀버전 , SERVERPROPERTY ('productversion') as 버전번호 , SERVERPROPERTY ('productlevel') as 서비스팩이름 , SERVERPROPERTY ('edition') as 설치버전