SQL Server/SQL Server Tip 662

키워드로 PROCEDURE, FUNCTION 찾기

키워드로 PROCEDURE, FUNCTION 찾기 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 개발 과정에서 많이 받는 질문 중 하나가 특정 테이블(키워드)을 사용하는 프로시저를 모두 찾을 수 있냐는 것이다. 당연히 프로시저 안에서 테이블을 호출 하는 코드가 있다면 검색이 가능하다. 시스템 테이블과 INFORMATION_SCHEMA.ROUTINE 방법을 이용하여 검색하는 방법을 알아 보자. [INFORMATION_SCHEMA.ROUTINE 사용] INFORMATION_SCHEMA.ROUTINE 을 사용한 방법이다. ROUTINE_DEFINITION : 사용자가 작성한 쿼리문 ROUTINE_TYPE에 : 프로시저 또는 함수 인지를 구분 프로시저 검색. SEL..

BCP 사용

BCP 사용 Version : SQL Server 2000, 2005, 2008, 2008R2, 2012 대량의 데이터를 내보내기 위한 방법에는 여러가지가 있다. SSIS를 이용하여 데이터를 내보낼 수도 있고 조회된 결과를 다른 이름으로 저장하여 파일로 저장 할 수도 있다. 하지만 대량의 데이터를 쉽고 빠르게 파일로 내보낼 수는 없을까? BCP를 사용하면 쉽고 빠르게 작업 할 수가 있다. BCP 유틸리티(BCP.exe)는 BCP(Bulk Copy Data) API를 사용하는 명령줄 도구이다. BCP는 다음과 같은 기능을 수행 할 수 있다. 데이터 파일로 SQL Server 테이블의 데이터를 대량으로 내보낸다. 쿼리의 데이터를 대량으로 내보낸다. SQL server 테이블로 데이터 파일의 데이터를 대량으로..

DATEADD를 사용한 날짜 추가 및 빼기

DATEADD를 사용한 날짜 추가 및 빼기 Version : SQL Server 2000, 2005, 2008R2, 2012 DATEADD 함수는 지정된 시간에 대해서 사용자가 원하는 시간을 더하거나 뺄 수 있다. DATEADD에 사용되는 시간 단위는 버전마다 약간의 차이가 있다. 단위SQL 2000, 20052008 / R2약어NANOSECONDNOYESnsMICROSECONDNOYESmcsMILLISECONDYESYESmsSECONDYESYESss, sMINUTSYESYESmi, nHOURYESYEShhWEEKDAYYESYESdw, wWEEKYESYESwk, wwDAYYESYESdd, dDAYOFYEARYESYESdy, yMONTHYESYESmm, mQUARTERYESYESqq, qYEARYESYES..

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 ~~]이라고 기록이 남아 있다. 최근 서버 시작 시간 뿐만 아니라 전체로..