SQL Server 818

SQL Server 2016 대용량 데이터 로드시 최소 로깅(minimal logging) 과Batch Size

SQL Server 2016 대용량 데이터 로드시 최소 로깅(minimal logging) 과Batch Size · Version : SQL Server 2016 SQL Server에서는 대용량 데이터를 로드(bulk load)할때 시스템의 오버헤드를 줄이기 위해 최소 로깅(minimal logging)을 사용한다. 최소 로깅에 대해서는 아래 링크를 참고한다. · Bulk Import Optimizations (Minimal Logging) : https://blogs.msdn.microsoft.com/sqlserverstorageengine/2008/02/04/bulk-import-optimizations-minimal-logging/ SQL Server 2016에서는 최소 로깅의 기능 개선 일부로 인..

SQL Server 설치시 발생하는 1638 오류

SQL Server 설치시 발생하는 1638 오류 · Version : SQL Server 2017 SQL Server를 설치할 때, 아래와 같이 오류코드1638에 해당하는 오류가 발생하는 경우가 있다. 이 문제는 Microsoft Visual C ++ 2017 Redistributable 를 설치하여 해결할 수 있다. 아래 링크에서 다운로드 할 수 있다. · X64 : https://go.microsoft.com/fwlink/?LinkId=746572 · x86 : https://go.microsoft.com/fwlink/?LinkId=746571 설치 후 재부팅이 필요할 수 있기 때문에, SQL Server를 설치하기전에 해당 재배포 가능 패키지를 설치 후 SQL Server를 설치 할 수 있도록 한..

SQL Server 666코드의 고유 식별자 오류

SQL Server 666코드의 고유 식별자 오류 · Version : SQL Server SQL Server에서 UNIQUE 속성을 사용하여 클러스터된 인덱스(clustered index)를 만들지 않으면 데이터베이스 엔진은 4바이트의 고유 식별자 열을 테이블에 자동 추가하고 필요한 경우 데이터베이스 엔진은 키를 고유하게 만들기 위해 행에 고유 식별자 값을 자동으로 추가한다. 이 열과 해당 값은 내부적으로 사용되며 사용자가 보거나 액세스할 수 없다. 고유 식별자와 관련된 문제는 발생할 가능성의 거의 없지만 고유 식별자 키 값 제한인 2,147,483,648에 도달할 경우 오류코드 666이 발생할 수 있다. Msg 666, Level 16, State 2, Line 1 The maximum system-..

SQL Server AlwaysOn synchronous-commit 환경에서 동기화 레이턴시 트러블슈팅

SQL Server AlwaysOn synchronous-commit 환경에서 동기화 레이턴시 트러블슈팅 · Version : SQL Server SQL Server AlwaysOn synchronous-commit(동기 커밋) 환경에서HADR_SYNC_COMMIT 대기 정보를 이용해서 레이턴시 상태를 확인할 수 있다. HADR_SYNC_COMMIT대기는 SQL Server가 원격 복제본의 신호가 트랜잭션을 커밋하기를 기다리고 있음을 나타낸다. 트래잭션 커밋 대기 시간에 대한 자세한 정보는 아래 링크를 확인한다. · Troubleshooting High HADR_SYNC_COMMIT wait type with Always On Availability Groups : https://blogs.msdn.mi..

SQL Server Scheduling and Yielding 트러블슈팅

SQL Server Scheduling and Yielding 트러블슈팅 · Version : SQL Server SQL Server는 다중 스레드및 다중 태스크 시스템으로 SQLOS라고 불리는 자체 스레드 스케줄링 메커니즘을 가지고 있다. SQLOS에 대한 내용은 아래 링크를 참조 한다. · A new platform layer in SQL Server 2005 to exploit new hardware capabilities and their trends : https://blogs.msdn.microsoft.com/slavao/2005/07/20/platform-layer-for-sql-server · Inside the SQL Server 2000 User Mode Scheduler : https..

SQL Server 2016 Tempdb 경합(contention) 최적화

SQL Server 2016 Tempdb 경합(contention) 최적화 · Version : SQL Server 2017, 2016, 2014 SQL Server에서 tempdb는 경합이 자주 발생하는 부분이므로 항상 모니터링의 주요 대상이다. SQL Server 2016에서는 최신 업데이트를 통해 tempdb file 및 trace flag 개선작업이 진행 되었다. [Object Allocation Contention] SQL Server에서 tempdb 구성시 일반적인 권장사항은 아래와 같다. 1. 여러 데이터 파일 생성 : CPU 코어당 최소 1개 이상으로 데이터 파일을 생성하며 최대8개의 파일로 구성한다.(필요에 따라 더 많이 생성할 수도 있다.) 모든 파일의 크기는 동일 해야한다. 2. SQ..

SQL Linux Instance Name 변경

SQL Linux Instance Name 변경 · Version : SQL Linux, Ubuntu SQL Linux 에서 인스턴스 이름을 변경하는 방법에 대해서 알아본다. 인스턴스 이름을 변경하는 방법은 Windows 환경의 SQL Server 인스턴스 이름 변경 방법과 동일하다. 아래 실습을 통해서 SQL Linux에서 변경하는 방법에 대해서 알아 본다. sqlcmd 유틸리티를 사용하여 SQL Linux에 접속하여 현재의 인스턴스 이름을 확인한다. 현재 필자의 SQL Linux 인스턴스 이름은 “ubuntu”인 것을 확인할 수 있다. sqlcmd -S localhost -U sa select @@servername go 아래 명령은 기존의 SQL Linux 인스턴스 이름을 삭제하는 명령이다. 명령어..

SQL Linux 업그레이드

SQL Linux 업그레이드 · Version : SQL Linux, Ubuntu SQL Linux 를 최신버전으로 업그레이드 하는 방법에 대해서 살펴본다. 필자는 Ubuntu에 SQL Linux가 설치된 상태이다. SQL Linux를 업그레이드 진행 하기전 전체 사용자 및 데이터베이스 백업을 진행한다. 만약 업그레이드가 잘못되어 데이터베이스를 복원해야 할 경우를 대비해서 백업본을 보관하는 것이 좋다. 서버 로컬 접속 또는 Putty등을 사용하여 Ubuntu 서버에 연결한다.필자의 경우 Putty를 사용하여 Ubuntu 서버에 접속 하였다. Ubuntu에서 기존에 실행되고 있는 SQL Linux의 버전을 확인한다. Sqlcmd 유틸리티를 사용하여 SQL Linux에 연결하여 정보를 확인 할 수 있다. (..

XEvent를 사용하여 Auto tuning 작업 모니터링

XEvent를 사용하여 Auto tuning 작업 모니터링 · Version : SQL Server 2017 SQL Server 2017 부터 Auto tuning 기능이 도입되어 사용자 쿼리에 대해 SQL plan change regression방식으로 쿼리의 플랜이 변경되었을때 변경 사항을 감지하고 더 나은 플랜을 사용하도록 자동 조정한다. SQL Server는 각 쿼리에 대해 마지막으로 성공한 플랜을 추적하고 기존의 플랜과 비교하여 마지막 실행 플랜이 더 좋다고 판단되는 경우 강제로 마지막 플랜으로 변경 한다. 이번 포스트에서는 XEvent를 활용하여 Auto tuning이 적용되어 강제로 플랜이 변경 되었을때 추적하는 방법에 대해서 알아본다. Automatic tuning process는 변경된 ..

SQL Server In-Memory OLTP에 ASP.NET 세션 상태 저장하기

SQL Server In-Memory OLTP에 ASP.NET 세션 상태 저장하기 · Version : SQL Server, ASP.NET SQL Server In-Memory OLTP에 ASP.NET의 세션 상태를 저장하는 방법에 대해서 알아본다. ASP.NET 에서 세션 상태를 사용하면 사용자가 웹 응용 프로그램을 구성하는 다른 ASP.NET 페이지를 탐색할때, 사용자 값을 저장하고 검색할 수 있다. 현재 ASP.NET에는 Microsoft ASP.NET 세션 상태 모듈과 세션 상태 데이터 원본 간의 인터페이스를 제공하는 세 가지 세션 공급자가 있다. · InProcSesstionStateStore : ASP.NET 작업자 프로세스의 메모리에서 세션 상태를 저장 · OutOfProcSesstionSa..