SQL Server 818

Change Data Capture(CDC) – 변경 이력 추적

Change Data Capture(CDC) – 변경 이력 추적 Version : SQL Server 2008, 2008R2, 2012 많은 분들의 문의 하는 내용 중 하나가 테이블의 데이터가 변경되었을 때 변경 내역을 알고 싶다는 것이다. 물론 프로시저를 사용할 경우 프로시저 내에서 기록용 코드를 추가하여 사용 할 수도 있지만 비즈니스를 변경 하지 않고 어떻게 추적이 가능 할까? 그래서 CDC 라는 기능을 소개 하려 한다. CDC는 데이터베이스 및 테이블에 대해서 변경된 사항이 있으면 캡처 하는 기능이며 SQL Server 2008 부터 추가 되었다. 변경 내용 추적은 DML(INSERT, UPDATE, DELETE)에 대해서 가능 하다. CDC 관령 링크 : http://msdn.microsoft.c..

SSMS 에서 디버깅 하기

SSMS 에서 디버깅 하기 Version : SQL Server 2008, 2008R2, 2012 SQL Server 2008 부터 디버깅 기능이 추가 되었다. 이 기능을 사용하면 코드 라인을 통하여 현재 상태 값을 확인 할 수 있다. Microsoft Visual Studio 를 사용해본 사용자라면 매우 익숙 할 듯 하다. 사용법은 기존의 Visual Studio 사용법과 동일하다. [F9]를 이용한 중단점과 출력창, 호출 스택 등 다양한 상태를 확인 할 수 있다. 디버그 모드로 실행하는 방법은 디버그 단추를 클릭하거나 [디버그] – [시작 디버깅]을 클릭하거나 [Alt+5]를 눌러 디버거를 시작 할 수 있다. 우선 쿼리 편집기 창에서 간단한 코드를 생성하여 중단점 및 디버깅을 해보자. 소스 코딩 후 ..

CLR 등록 및 활성화 하기

CLR 등록 및 활성화 하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 2005 부터 Microsoft Windows .NET Framework 의 CLR(공용 언어 런타임) 을 제공 한다. 이를 통하여 Visual Basic .NET 및 Visual C#을 포함한 모든 .NET Framework 언어를 사용하여 저장 프로시저, 트리거, 사용자 정의 형식, 사용자 정의 함수, 사용자 정의 집계 및 다양한 함수를 만들 수 있다. [CLR 활성화] Clr enabled 옵션을 사용하여 SQL Server에서 사용자 어셈블리를 실행 여부를 지정 한다. 설정 변경 후 WOW64 모드를 제외한 경우 서버를 재시작 하지 않아도 된다. 값설명0사용자 어셈블리..

SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적

SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 Version : SQL Server 2008, 2008R2, 2012 SQL Server의 성능 관련해서는 Tempdb와 관련된 문제가 많다. Tempdb에서는 크고 작은 임시 테이블과 작업 테이블을 만들어서 사용한다. SQL Server를 운용하는데 있어서 매우 중요한 부분이다. 이때 Tempdb를 제대로 구성하지 않을 경우에는 할당하는 동안 병목이 발생 하여 SQL Server 성능은 심각한 저하가 발생한다. 할당 병목이 발생한 경우 어떻게 찾을 수 있을까? 또한 성능을 향상 시키기 위해 어떻게 해야 할까? 할당 병목 이란? : http://blogs.msdn.com/b/sqlserverstorageengine/archive/200..

MAXDOP 설정

MAXDOP 설정 Version : SQL Server 2005, 2008, 2008R2, 2012 MAXDOP 은 하나 이상의 프로세서 또는 CPU가 있는 컴퓨터에서 각 쿼리에 대한 단일 문을 실행하는데 병렬 실행 계획에 사용할 수 있는 프로세서 수 이다. 그렇다면 MAXDOP은 어디에서 사용할까? 정답은 없다. 환경에 따라 다르며 시스템의 특성에 따라 다르다. MAXDOP의 기본값은 0 (모든 프로세서 사용)이며 다음의 설정을 통하여 MAXDOP 값을 변경 할 수 있다. Sp_configure 명령어는 현재의 값을 확인 할 수 있다. (기본값 0) Sp_configure 명령어를 통하여 병렬처리에 사용되는 프로세서 수를 제한 하자. 변경 후 즉시 적용 되므로 SQL 서비스를 재시작 하지 않아도 된다...

SQL Server 이름 변경 하기

SQL Server 이름 변경 하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server 이름은 실제 서버 이름을 기반으로 하지만 Windows에서 서버 이름을 변경 하였을 때 SQL Server의 메타데이터 정보는 변경 되지 않는다. (이 때문에 대부분의 사람들이 Windows 서버의 이름 변경 후 SQL 서비스가 제대로 작동하지 않는다고 말한다.) 이때에는 SQL Server의 물리적 이름을 재설정하여 해결 할 수 있다. SQL Server의 물리적 이름을 변경하기 전 사용하는 시스템의 특성에 따라 고려해야 할 주의사항과 함께 알아보도록 하자. Windows Server의 이름과 SQL Server이름을 확인 한다. 이름이 다르다면 다음과 같은 사항을 ..

SQL Server 마지막 시작 시간 확인 하기

SQL Server 마지막 시작 시간 확인 하기 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server가 마지막으로 시작된 시간은 언제 일까? 또는 SQL Server가 시작된 시간의 기록은 어디서 확인 할까? 에러로그와 이벤트로그, 대시보드 등을 통하여 알아 보자. [DMV 사용] DMV를 통하여 SQL Server 서비스 시작 시간을 확인 할 수 있다. select sqlserver_start_time from sys.dm_os_sys_info [SQL Server Error Log] SQL Server Error Log에 서비스가 시작되었을 때 [SQL Server Starting ~~]이라고 기록이 남아 있다. 최근 서버 시작 시간 뿐만 아니라 전체로..

여러 포트를 사용하도록 SQL Server 구성

여러 포트를 사용하도록 SQL Server 구성 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server의 기본 포트는 1433이다. 최근에는 (이미 오래전부터) 보안과 관련하여 공개되어 있는 1433 기본 포트를 사용하지 않고 따로 포트를 지정해서 사용 한다. 그런데 이미 사용하고 있는 포트에 새로운 서비스가 붙으려고 할 때 만약 사용하는 포트가 다르다면 어떻게 할까? 예를 들어 14331 포트를 사용하는 서비스가 있는데 다른 웹서비스에서 38080 이라는 포스트를 사용한다고 한다. 모든 웹서비스의 포트를 바꿀 것인가? 아니면 SQL Server의 사용 포트를 바꿀바꿀 것인가? 이번 실습에서는 TCP/IP 속성에서 여러 포트를 지정하는 방법을 알아 본다. S..

SQL Server가 사용중인 TCP/IP 포트 확인

SQL Server가 사용중인 TCP/IP 포트 확인 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server가 사용하는 특정 포트가 어떤 것이 있는지 확인 하는 방법을 알아 보자. 여기에서는 3가지 방법을 통하여 SQL Server가 사용중인 포트를 확인 할 수 있다. SQL Server 에러로그를 사용한 확인 SQL Server 구성관리자를 사용한 확인 윈도우 이벤트를 사용한 확인 [SQL Server 에러로그 사용] SQL Server 에러로그는 데이터베이스 서버에서 어떤 일이 일어나고 있는지에 대한 정보를 확인 할 수 있는 매우 좋은 기능이다. SQL Server 데이터베이스 엔진의 인스턴스가 수신 대기하는 포트를 기록하고 정보를 제공한다. 에러로그 관..

SQL Server SP_Congifure 변경 사항 캡처

SQL Server SP_Congifure 변경 사항 캡처 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server가 처음 구성되면 DBA는 많은 구성관리를 한다. DBA는 승인되지 않은 구성 옵션의 변경을 감지하고 변경된 내용을 추적 할 수 있어야 한다. 기본적으로 추적에 사용할 수 있는 도구는 Profiler 또는 'fn_trace_gettable(@trc_Path) 가 있다. 이번 실습에서는 'fn_trace_gettable(@trc_path)'를 사용하여 변경사항을 확인해 보자. 우선 기본 추적이 활성화 되어 있는지 쿼리 이용하여 확인해 보자. SELECT NAME, CASE WHEN VALUE_IN_USE = 1 THEN 'ENABLED' WHEN V..