SQL Server/SQL Server Tip 662

의도하지 않은 분산트랜잭션 사용 - 응용프로그램 개발 시 동일한 객체를 사용하지 않아 분산 트랜잭션으로 승

의도하지 않은 분산트랜잭션 사용 응용프로그램 개발 시 동일한 객체를 사용하지 않아 분산 트랜잭션으로 승격 Version : SQL Server 2012 트랜잭션은 논리적 작업 단위로 결합되는 작업 그룹이다. 트랜잭션은 시스템에서 발생할 수 있는 오류에 관계없이 트랜잭션의 각 동작에 대해 일관성과 무결성을 제어하고 유지 관리하는데 사용된다. 로컬 트랜잭션은 트랜잭션이 1단계인 것을 말하며 데이터베이스에서 직접 처리 한다. JDBC 드라이버는 setAutoCommit, commit 및 rollback과 같은 SqlserverConnection 클래스의 다양한 메서드를 사용하여 로컬 트랜잭션을 지원한다. 분산 트랜잭션은 리소스 관리자라고 하는 둘 이상의 서버에 분산된다. 트랜잭션 관리는 트랜잭션 관리자라고 하..

Affinity I/O Mask

Affinity I/O Mask Version : SQL Server 2005, 2008, 2008R2, 2012 Windows Server는 멀티태스킹을 수행하기 위해 경우에 따라 여러 프로세서 사이에 프로세스 스레드를 이동하기도 한다. 운영체제 측면에서는 효율적이지만 각 프로세서 캐시에 데이터가 반복적으로 다시 로드되어 시스템 로드가 많은 경우 이로 인해 SQL Server 성능이 저하될 수 있다. 프로세서를 특정 스레드에 할당하면 프로세서가 다시 로드 되지 않으므로 이러한 조건에서도 성능을 향상 시킬 수 있다. 스레드와 프로세서간의 이러한 연결을 프로세스 선호도라고 한다. SQL Server에서는 affinity mask(CPU affinity mask라고도 함) 및 affinity I/O mask..

LPE_BATCH 스핀락

LPE_BATCH 스핀락 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 동적관리뷰(DMV)를 사용하여 스핀락의 정보를 확인할 수 있다. Sys.dm_os_spinlock_stats 명령어어를 사용하여 현재 스핀락의 상태를 확인 할 수 있다. select * from sys.dm_os_spinlock_stats 스핀락은 특정 구조를 보호하는데 사용되는 가벼운 사용자 모드 동기화 개체이다. 스핀락의 목표는 빠르고 효율적인 것에 있다. 그래서 궁극적인 목표는 충돌을 0으로 하는 것과 스핀을 0으로 하는 것이다. SQL Server 2008은 150개 이상의 스핀락 개체가 포함되어 다중 스레드가 엑세스하는 동안 다양한 내부 구조를 보호한다. LPE_BA..

SQL Server 17953 오류 - SidePageTable::Init() DeviceIoControl() : Operating system error 1(Incorrect function.) encountered

SQL Server 17953 오류 SidePageTable::Init() DeviceIoControl() : Operating system error 1(Incorrect function.) encountered. Version : SQL Server 2005, 2008, 2008R2, 2012 DBCC CHECKDB를 실행하거나 데이터베이스 스냅샷을 생성할 때 스파스 파일을 지원하는 UNC 위치를 사용하는 경우 오류가 발생할 수 있다. 다음은 오류가 발생한 에러로그이다. 2010-09-21 17:27:26.47 spid82 Error: 17053, Severity: 16, State: 1. 2010-09-21 17:27:26.47 spid82 SidePageTable::Init() DeviceIoCo..

SQL 연결 18056 오류

SQL 연결 18056 오류 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server를 운영하면서 가장 많이 받는 질문 중 하나가 SQL Server 연결 실패에 관한 내용이다. SQL Server는 연결 실패 또는 오류에 따라 다양한 메시지를 나타내며 이 메시지에 따라 처리 방법이 매우 다양하다. 이전 포스트에서 SQL Server 인증 실패 시 반환되는 클라이언트메시지 정보에 대해서 다루었다. 관련 링크 : http://sqlmvp.kr/140186042807 이번 시간에는 클라이언트가 세션을 다시 시작할 수 없는 18056 오류와 어떤 흐름으로 제어되는지 알아보자. 이 포스트는 CSS SQL Server Engineer 블로그에 게시된 내용으로 필자가 읽..

SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류

SQL 2008 R2 Sp1 적용과 9013 오류 포맷 섹터 크기에 따른 오류 Version : SQL Server 2008R2 SP1 최근 디스크의 포맷 방식이 변화하고 있다고 한다. SQL Server를 운영할 때 기존의 포맷과 다른 섹터크기의 포맷을 사용하면 어떻게 될까? 오류에 대해서 살펴보기 전에 다음 포스트를 참고하여 포맷이 어떤 방향으로 변하는지 트렌드를 알아 보자. 디스크 섹터 크기와 데이터베이스 성능 : http://sqlmvp.kr/140192782721 이 포스트는 CSS SQL Server Engineer 블로그에 게시된 것으로 필자가 읽고 이해한 내용을 정리하였다. 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고하길 바란다. SQL Server 200..

JDBC 로깅 파일 위치 설정

JDBC 로깅 파일 위치 설정 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에 연결 할 때 자바를 사용한 JDBC의 로깅에 대해서 알아보자. 이번 포스트는 CSS SQL Server Engineer 블로그에 게시된 내용으로 필자가 읽고 이해한 내용을 정리하였다. 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고 한다. JDBC 로깅은 매우 유용하지만 등록된 속성파일에서 로그파일의 생성 위치 파악이 어려웠다. 그래서 훨씬 쉽게 만들 수 있는 방법을 연구하였다. 첫 번째는 자바가 기본적으로 User.Home 폴더에 로그 파일을 생성한다는 것이다. 따라서 내 코드의 한 부분을 그 위치로 출력하도록 설정 하였다. System.o..

NUMA Node 메모리 블록

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

AppDomain unloading 오류 로그 – CLR 오류

AppDomain unloading 오류 로그 – CLR 오류 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server를 운영할 때 SQL Server에서 지원하지 않는 기능을 어플리케이션으로 구현한 다음 SQL Server에서 로드해서 쓰는 경우가 많다. 일반적으로 CLR이라 불리는 기능으로 CLR 호출 시 발생하는 오류에 대해서 알아 보자. 이번 포스트는 CSS SQL Server Engineer 블로그에 게시된 내용으로 필자가 읽고 이해한 내용을 정리하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고하길 바란다. SQL Server 오류 로그에 다음과 같은 내용이 기록되어 있었다. ... 2013-01-22 08:07:..

SQL Server IO and Latch 설명

SQL Server IO and Latch 설명 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server의 latch에 관한 설명과 왜 latch가 발생하는지 알아보자. [래치는 무엇인가?] 래치는 목적으로 보면 잠금과 유사하지만 많은 차이점이 있다. 래치는 SQL Server 메모리에서 다른 개체로 부터 페이지 데이터 무결성을 보장하는 객체로 정의 할 수 있다. 이는 페이지를 사용할 때 자원을 고립시켜 제어된 액세스를 보장하는 논리적 구조이다. 잠금과의 차이점은 SQLOS 외부로 노출되지 않는 내부 SQL 서버 메커니즘이다. 래치는 많은 유형이 있지만 대략 버퍼 래치(Buffer Latch), 비버퍼래치(Non Buffer Latch) 2종류로 나눌 수 있다..