분류 전체보기 1385

페이지 분할이 발생 하였을 때 롤백을 하면 어떻게 될까?

페이지 분할이 발생 하였을 때 롤백을 하면 어떻게 될까? Version : SQL Server 2005, 2008, 2008R2, 2012 페이지 분할이 발생하였을 때 롤백을 시도할 경우 분할된 페이지도 롤백이 될까? 다음 실습을 통해서 알아 보자. 실습을 위해 데이터베이스와 테이블을 생성한다. 페이지 분할을 발생 시킬 수 있는 클러스터 인덱스를 생성한다. USE MASTER; GO CREATE DATABASE pagesplittest; GO USE pagesplittest; GO CREATE TABLE t1 (c1 INT, c2 VARCHAR (1000)); GO CREATE CLUSTERED INDEX t1c1 ON t1 (c1); GO 페이지 분할을 위해 데이터를 입력 한다. 분할을 할 수 있도록 ..

DBCC WRITEPAGE - DBCC 명령을 사용한 데이터 파괴하기

DBCC WRITEPAGE DBCC 명령을 사용한 데이터 파괴하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 문서화 되지 않은 기능 DBCC WRITEPAGE 기능에 대해서 알아 본다. 이 명령을 사용한 문제는 전적으로 자신에게 있으니 사용시 주의하길 바란다. DBCC WRITEPAGE는 시스템 관리자 권한이 있을 경우 데이터베이스의 있는 모든 페이지의 바이트를 변경 할 수 있다. DBCC WRITEPAGE는 작업에 대해 트랜잭션을 기록하지 않는다. 이는 곧 롤백이 불가능하다는 것으로 해석 할 수 있다. 또한 시스템 관리자 권한이 있는 모든 사람이 사용할 수 있으므로 막을 수 있는 방법이 없다. 실습을 통해서 DBCC WRITEPAGE 사용방..

SQL Server Backup Error 3023

SQL Server Backup Error 3023 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 백업을 실행 하였는데 다음과 같은 오류가 발생 하였다. 에러로그에는 다음과 같은 오류 메시지가 기록되었다. Error 3023 Severity Level 16 Message Text Backup and file manipulation operations (such as ALTER DATABASE ADD FILE) on a database must be serialized. Reissue the statement after the current backup or file manipulation operation is completed. 오류 내용을 보..

Delete 작업과 페이지 offset 변화

Delete 작업과 페이지 offset 변화 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 테이블의 레코드를 삭제하는 경우 어떻게 처리되는지 알아본다. 실습을 위해 4개의 레코드가 8K의 페이지에 있는 테이블을 만든다. -- Create a simple table where 4 records fit onto 1 page CREATE TABLE TestTable ( Col1 INT IDENTITY(1, 1), Col2 CHAR(2000) ) GO 데이터가 한 페이지에 들어가도록 입력한다. -- Insert 4 records INSERT INTO TestTable VALUES ( REPLICATE('1', 2000) ), ( REPLICATE('2'..

트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구

트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 일어나는 모든 일은 트랜잭션 로그에 기록 된다. 지난 시간에 트랜잭션 로그를 활용하여 누가 어떤 명령을 실행하였는지 찾는 방법에 대해서 알아 보았다. SQL Server에서 Drop 및 Delete 사용자 찾기 : http://sqlmvp.kr/140202164558 이번 시간에는 트랜잭션 로그 및 LSN을 사용하여 삭제된 데이터를 복구하는 방법에 대해서 알아 본다. SQL Server 트랜잭션의 모든 레코드에는 LSN(로그 시퀀스 번호)으로 고유하게 식별된다. LSN은 numeric(25.0)의 값을 가지며 변경이 발생한 순서에 따라 번호가 매겨..

로그 전달에 새로운 데이터베이스 파일 추가하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 로그 전달 구성에서 주 데이터베이스의 파일 구성이 변경되었을 때 (데이터 파일의 추가 또는 삭제) 전체 복원을 하지 않고 로그 전달을 유지하는 방법에 대해서 알아 본다. 로그 전달을 사용하기 위해서는 데이터베이스의 복구 모드가 전체모드이어야 하며 로그 백업이전에 반드시 전체 백업이 이루어 져야 한다. 다음 스크립트는 데이터베이스의 복구 모델을 [전체]로 변경하고 전체 백업하는 스크립트이다. 주 데이터베이스의 복구 모델 변경과 전체 백업을 실행 한다. USE [master] GO ALTER DATABASE [SQLMVP] SET RECOVERY FULL; GO..

PFX 형식의 인증서를 SQL Server에서 사용하기

PFX 형식의 인증서를 SQL Server에서 사용하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server는 DER(Distinguished Encoding Rules) 파일 포맷의 통합 인증서를 사용 할 수 있다. 이 파일은 이진 인코딩 인증서로 CER 또는 CRT로 확장을 할 수 있다. SQL Server의 암호화에 사용되는 모든 인증서는 DER 서식을 사용해야 한다. SQL Server에서 PFX 형식의 인증서를 사용하려면 Microsoft에서 제공하는 PVKConvert를 사용하여 PFX 인증서 파일을 PVK/DER 형식으로 변환하여 사용해야 한다. PFX 형식의 인증서를 SQL Server 에서 사용하는 방법 : http://support.mic..

SQL Server NUMA 메모리 노드와 Operating System 접근

SQL Server NUMA 메모리 노드와 Operating System 접근 Version : SQL Server 2005, 2008, 2008R2, 2012 NUMA 아키텍처는 각 프로세서 그룹에 자체 메모리가 있으며 자체 I/O 채널이 있는 경우도 있다. 그러나 각 CPU는 일관된 방법으로 다른 그룹과 연결된 메모리에 액세스 한다. 각 그룹을 NUMA노드라 한다. NUMA에 대한 내용은 다음 아티클을 참고하여 이해를 할 수 있도록 한다. NUMA 아키텍처 : http://sqlmvp.kr/140150873571 이번 포스트는 CSS SQL Server Engineers 블로그에 게시된 내용으로 필자가 읽고 이해한 내용을 바탕으로 정리 하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세..

SQL Server 에러 핸들링 비용 비교 - TRY / CATCH, 제약조건 선행 검사

SQL Server 에러 핸들링 비용 비교 TRY / CATCH, 제약조건 선행 검사 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 2005부터 TRY / CATCH 기능이 제공되어 에러 핸들링에 많이 사용 되고 있다. 이는 확실히 프로그래밍을 더 쉽게 하고 에러를 처리하는데 많은 도움이 되었다. 데이터 입력 시 TRY / CATCH를 사용하여 에러를 핸들링하는 경우와 체크 조건을 미리 확인하여 수동으로 에러를 핸들링 하는 것에 대한 비용 차이를 확인해 보자. 다음 실습을 통하여 TRY / CATCH 예외 처리에 발생하는 비용에 대해서 알아 보자. 실습을 위해 기본 키가 테이블에 고유한 값의 100,000행을 입력 한다. CREATE TABLE db..

압축 백업 시 Checksum 옵션으로 손상 확인하기

압축 백업 시 Checksum 옵션으로 손상 확인하기 Version : SQL Server 2012 데이터베이스를 백업할 때 이미 백업 자체가 손상되어 있다면 백업이 아무런 의미가 없다. 백업 할 때 CHECK 옵션을 사용하여 손상 여부를 확인 할 수 있다. 백업할 때 WITH CHECKSUM 매개변수는 각 페이지의 체크섬을 확인하고 손상이 있을 경우 경고를 발생 한다. SQL Server Backup : http://technet.microsoft.com/ko-kr/library/ms186865.aspx NO_CHECKSUM : 백업 체크섬 생성 및 페이지 체크섬의 유효성 검사를 명시적으로 해제 한다. CHECKSUM : 백업 작업이 각 페이지의 체크섬과 조각난 페이지를 확인하고 사용 가능할 경우 전체..