SQL Server/SQL Server Tip 662

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 – 강제 매개 변수화

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 강제 매개 변수화 Version : SQL Server 2005, 2008, 2008R2, 2012 데이터베이스의 모든 SELECT, INSERT, UPDATE, DELETE 문이 특정 제한에 따라 매개 변수화되도록 지정하여 SQL Server의 기본 단순 매개 변수화 동작을 무시 할 수 있다. ALTER DATABASE 문에서 PARAMETERIZATION FORCED로 설정하면 강제 매개 변수화를 설정 할 수 있다. --강제 매개변수화 적용 ALTER DATABASE SW_TEST SET PARAMETERIZATION FORCED GO --단순 매개변수화 적용 ALTER DATABASE SW_TEST SET PARAMETERIZAT..

Event log 기록 실패로 인한 SQL Agent Service 시작 실패

Event log 기록 실패로 인한 SQL Agent Service 시작 실패 SQL Server 2008 R2 Windows Server [문제 발생] SQL Server Agent Service 시작 시 종료되는 현상. (서비스 시작이 실패됨) SQL Server Agent Errorlog 내용. [241] 시작 오류: 오류 보고 시스템을 초기화할 수 없습니다(원인: EventLog 서비스가 시작되지 않았습니다.). [098] SQLServerAgent이(가) 종료됨(정상적으로) [원인] SQL Server Agent 시작 시 윈도우 이벤트로그파일에 오류, 경고, 정보를 로깅하는 API를 호출하는데 이때 호출이 실패하는 경우 초기화 프로세스가 정상적으로 실행하지 못해 SQL Server Agent 서..

TCP Provider: The semaphore timeout period has expired

TCP Provider: The semaphore timeout period has expired SQL Server 2012 Windows Server 2012R2 (Amazon VM) [문제 발생] 링크드 서버를 사용하여 데이터를 가져오는 시스템에서 비정기적으로 다음과 같은 에러가 발생 Message Executed as user: NT SERVICE\SQLSERVERAGENT. TCP Provider: The semaphore timeout period has expired. [SQLSTATE 07008] (Error 121). The step failed. [원인] 네트워크 속성의 TCP Chimney offload 설정이 Enabled로 설정되어 대용량의 데이터를 전송할 때 네트워크의 부하로 문..

SQL Server 연결 실패

SQL Server 연결 실패 - Version : Windows, SQL Server, SQL Server [문제 발생] 어플리케이션에서 SQL Server 연결 실패가 발생 연결 실패가 발생한 패턴이 없음. SQL Error 로그 확인 결과 17054 및 Windows 1717 로그 기록. This instance of SQL Server has been using a process ID of 832 since 2013-09-02 오전 10:32:30 (local) 2013-09-02 오전 1:32:30 (UTC). This is an informational message only; no user action is required. SQL Server is terminating because of ..

CRL 사용 환경의 메모리 누수

CRL 사용 환경의 메모리 누수 - App Domain Unload due to Memory Pressure - Version: SQL Server 2005, 2008R2 [문제 발생] l SQLServer Log에 unload memory pressure 오류 로그 남음.(특히 전체 백업 이후) l Memoryunload 발생시 간헐적 CPU 증가 현상 발생 [원인] CLR을 사용하는 SQL Server 환경에서 가비지 수집 핸들 해제 오류 가능성. 실제 메모리부족 현상 가능성. 인터넷 검색결과 여러 커뮤니티에서 해당 이슈 제기 http://social.msdn.microsoft.com/Forums/sqlserver/en-US/7e36aa04-00ce-46a8-9a29-f63f4ac3b6b5/appdo..

Windows8 에서 TFS 2012 Express 오류

Windows8 에서 TFS 2012 Express 오류 - Version : Windows 8, SQL Server 2012 Express [문제 발생] Windows8에서 TFS 2012 설치시 TF400533 에러 발생 [해결 방법] TF400533 설치에러가 발생 하였을 때에는 제어판 -> 프로그램 추가/삭제 에서 SQL Server Express 를 삭제 한다. 프로그램 삭제 후 TFS E를 설치 한다. SQL Server가 설치 되어 있는 상태라면 SQL Server 인스턴스는 유지하고 Express 버전만 삭제 한다. [TF400533 Error] TF400533 오류는 SQL Express를 최신 버전으로 업데이트하라는 경고 오류이다. [TFS 업그레이드 요구 사항] http://msdn..

WindowsServer 2012 Hyper-V 와 특정 NIC의 VMQ 이슈

WindowsServer 2012 Hyper-V 와 특정 NIC의 VMQ 이슈 - Version : Windows Server 2012 Hyper-V [문제발생] 서버 장비교체 후 Windows Server 2012 hyper-V 환경에서Guest Server의 외부 통신 저하 및 불안정한 연결 상태 Guest Server의 CPU 사용량 증가. 통신시 latency 증가 [원인] 서버의 특정모델에 포함된 NIC카드에서 지원하는 VMQ(VirtualMachine Queue) 문제로 확인(Dell R620에 장착되어 있는 Broadcom NIC BCM5720QP) 인터넷 검색결과 여러 커뮤니티에서 해당 이슈 제기 [해결방법] Hyper-V에서 GuestServer의 NIC설정에서 가상 네트워크 큐 비활성화..

인덱스 튜닝을 통한 DB 성능 향상

인덱스 튜닝을 통한 DB 성능 향상 - Version : SQL Server 2005 [문제발생] 특정 시간에 쿼리의 응답 속도 저하 발생 [증상확인]  Sysprocesses 에서 현재 수행되고 있는 프로세스 중 처리시간이 긴 프로세스 확인.  오랫동안수행중인 쿼리의 플랜을 수집하여 분석. [문제원인] 1. 쿼리가 실행 될 때 원격지에서 실행되는 쿼리부분이 대상 서버의 비효율 적인 로직으로 인하여성능 저하 발생. 2. 잘못된 쿼리 작성으로 인하여 효율적인 인덱스를 활용하지 못함. [해결방법] 1. 원격 대상 서버의 비효율적인 비즈니스 로직 부분을 변경.반복적 디스크 스캔 작업을 한 번만 읽고 처리 할 수 있도록 변경. 2. Where 절의 컬럼이 가공되어 인덱스를 활용 하지 못함. 인덱스를 활용 할..

SQL Server xp_readerrorlog의 CPU 100% 점유 현상

SQL Server xp_readerrorlog의 CPU 100% 점유 현상 - Version : SQL Server 2005, 2008 [문제 발생]  SQL Server의 CPU 사용량이 비정상적 증가.  요청 받은쿼리의 응답 속도가 저하. [증상 확인] 성능 모니터, sysprocesses, SQL Serverer 에러로그등을 통하여 문제 진단. -- blocking select t1.resource_type as [lock type] ,db_name(resource_database_id) as [database] ,t1.resource_associated_entity_id as [blk object] ,t1.request_mode as [lock req] ,t1.request_session_i..

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 - 단순 매개 변수화

SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용 단순 매개 변수화 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서는 T-SQL문에 매개변수를 사용하여 새 SQL문을 이전에 컴파일된 기존의 실행 계획과 일치 시켜 관계형 엔진의 성능을 향상 시킨다. 매개 변수를 사용하지 않고 SQL문이 실행되면 SQL Server는 내부적으로 해당 문을 매개 변수화하여 기존 실행계획과 일치할 가능성을 높인다. 이 프로세스를 단순 매개변수화라 한다. (SQL Server 2000에서는 자동 매개변수화라 한다) 다음 스크립트를 보면 Where 절의 값이 1인 매개변수로 지정될 수 있다. 관계형 엔진은 값 1 대신 매개변수가 지정된 것처럼 일괄 처리에..