SQL Server/SQL Server Tip 662

SQL Server 2016 JSON 형식을 일반 ROW 형식으로 반환하기

SQL Server 2016 JSON 형식을 일반 ROW 형식으로 반환하기 · Version : SQL Server 2016 SQL Server 2016 부터 지원되는 JSON 형식은 쿼리 결과를 JSON 형식으로 반환 할 수 있으며 JSON 형식의 데이터를 일반 ROW로 데이터를 반환할 수도 있다. 이번 포스트에서는 JSON 형식의 데이터를 일반 ROW형식으로 반환하는 방법에 대해서 알아본다. JSON 형식의 텍스트를 구문 분석하여 일반 ROW 형식으로 데이터를 반환하는 함수는 OPENJSON 이다. OPENJSON 함수를 사용하여 JSON 컬렉션을 행 집합으로 변환한 후 데이터에 대해서 SQL 쿼리를 실행하거나 SQL Server 테이블에 삽입할 수 있다. OPEN JSON 함수는 단일 JSON 개체..

model Database 손상시 발생하는 영향 및 복구 방법

model Database 손상시 발생하는 영향 및 복구 방법 · Version : SQL Server SQL Server에서 사용되는 system database에는 master, model, msdb, temp 4가지가 있다. master 경우 SQL Server에 대한 속성 정보를 가지고 있기 때문에 중요성에 대해서 많은 사람들이 인지하고 있다. 이번 시간에는 model 데이터베이스의 중요성에 대해서 알아보고 model 데이터베이스가 손상되었을때 어떤 영향이 있는지, 그리고 복구 방법에 대해서 알아본다. model 데이터베이스는 SQL Server 인스턴스에서 생성된 모든 사용자 데이터베이스의 템플릿으로 사용된다. 새로운 데이터베이스를 생성하면 데이터베이스 옵션을 포함하여 model 데이터베이스 전..

In-Memory OLTP 사용시 메모리 할당량 초과 오류

In-Memory OLTP 사용시 메모리 할당량 초과 오류 · Version : SQL Server 2014, 2016 SQL Server 에서 In-Memory OLTP를 사용하는 환경에서 아래와 같은 오류가 에러로그에 기록되어 있다면 현재 적용되어 있는 In-Memory 용량을 초과한 것이다. [INFO] HkDatabaseTryAcquireUserMemory(): Database ID: [7]. Out of user memory quota: requested = 131200; available = 74641; quota = 34359738368; operation = 1. 오류 로그에 기록된 내용은 아래와 같다.· requested = 131200 : 요청된 바이트 수· available = 746..

SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계

SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계 · Version : SQL Server 2014 SP2, 2016 SQL Server 2016에서 쿼리 성능 문제를 해결할 때 참고 할 수 있는 몇 가지 정보가 추가 되었다. 그 중 대표적인 것이 라이브 쿼리 통계 이다.· SQL Server 2016 라이브 쿼리 통계 : http://sqlmvp.kr/220453033961 하지만 아직도 많은 쿼리 성능 문제를 해결하기 위한 메트릭은 부족한 편이다. 이번에 소개하는 기능은 showplan XML을 활성화하고 쿼리를 실행하였을때 각 스레드(오퍼레이터)에서 실행한 결과를 확인할 수 있는 기능이다. 예를 들어 SQL Server2014까지는 쿼리 실행결과 행결과를 반환하지만 스..

Multisubnet환경의 AG 그룹에서 링크드 서버 사용시 주의점

Multisubnet환경의 AG 그룹에서 링크드 서버 사용시 주의점 · Version : SQL Server 2012, 2014, 2016 SQL Server 2012부터 도입된 가용성 그룹(AG)은 SQL Server에서 제공할 수 있는 최고의 가용성을 보장하지만 구성이 까다로울 수 있다. 특히 다중 서브넷 환경에서 장애 조치를 구성하는 경우 예상치 못한 문제를 많이 겪을 수 있다. 필자 또한 단일 서브넷에서의 AG 경험은 있었지만 다중 서브넷 환경에서 구성 및 운영은 처음이어서 (Cloud VM으로 다중 서브넷(Multi Region구성) 다양한 이슈를 겪고 있다.(기술적 이슈는 아님) 이번 이슈는 Multisubnet AG구성을 구성한 환경에서 링크드 서버를 구성할때, Native Client를 사..

SQL Server DBA 체크리스트

SQL Server DBA 체크리스트· Version : SQL Server SQL Server를 운영할때 DBA role에서 정기적으로 수행하는 작업이 있을 것이다. 관리자마다 중요하게 생각하는 포인트는 다르겠지만 매일, 매주, 매월 일반적으로 점검해야하는 사항들에 대해서 정리해보려고 한다. 이번 포스트에서는 목록만 나열하고 추후 기회가 된다면 체크리스트 표를 만들어서 관리할 수 있는 방안에 대해서도 다루도록 한다. [Daily Check list]· 백업 : 백업 프로세스마다 성공적으로 잘 수행되었는지 확인한다. 백업 단계마다 시간을 확인하여 평소와 다르게 시간이 오래걸렸는지 확인하는 것도 중요하다. (평소와 다르게 오래 걸렸다면 블록커가 있거나 다른 서비스에 영향을 줄 수도 있기 때문이다.) ü S..

SQL Server 데이터베이스 백업이 성공적인지 확인하는 방법

SQL Server 데이터베이스 백업이 성공적인지 확인하는 방법· Version : SQL Server SQL Server 뿐만 아니라 모든 데이터베이스를 운영하는데 있어서 가장 중요한 작업은 백업이다. 아무리 유능한 DBA라도 백업 파일이 없으면 데이터베이스가 크래쉬 되었을때, 데이터 손실을 피할 수 없다. 수 많은 DBA들이 백업 실패가 발생하였을때 이메일, 이벤트 로그 등으로 알림을 받도록 시스템을 구성하여 사용하고 있다. 하지만 구성 매개변수가 변경되거나 메일 시스템의 오류, 또는 예상하지 못한 서브 시스템 오류로 인해 수일 또는 수주 동안 실패에 대한 메일을 받지 못하면 어떻게 될까? 또한 백업을 수행하는데 사용되는 응용프로그램 및 프로세스의 실패한작업과 관련된 검사가 있지만 이들이 성공적으로 ..

트리거가 적용된 메모리 최적화 테이블에서 alter table 실패

트리거가 적용된 메모리 최적화 테이블에서 alter table 실패· Version : SQL Server 2014, 2016 SQL Server 메모리 최적화 테이블에 트리거가 적용되어 있는경우 alter table 작업이 아래 오류와 함께 실패한다. Msg 41317, Level 16, State 3, Procedure ddl_trigger, Line 5 [Batch Start Line 28] A user transaction that accesses memory optimized tables or natively compiled modules cannot access more than one user database or databases model and msdb, and it cannot wri..

메모리 최적화 테이블 변수 및 예상 행수

메모리 최적화 테이블 변수 및 예상 행수 · Version : SQL Server 2014, 2016 이번 포스팅에서 메모리 최적화 테이블은 배치 작업이 완료될 때 까지 메모리를 소비한다고 하였다.· 메모리 최적화 테이블변수와 701 오류 (loop 사용으로 인한 메모리 부족 오류) : http://sqlmvp.kr/220996905075 이번 포트스트는 메모리 최적화 테이블에서 예상 행수에 대해서 알아본다. 기본적으로 메모리 최적화 테이블 변수는 디스크 기반 테이블 변수와 동일한 방식으로 작동한다. 아래 스크립트를 실행하면 예상 행수가 1로 나타나는것을 확인할 수 있다. 실습용 데이터 베이스 및 기본 데이터 생성 create database IMOLTP go ALTER DATABASE imoltp AD..

백업 파일 복원과 3241 오류 (Microsoft® SQL Server® Backup to Microsoft Azure®Tool 사용)

백업 파일 복원과 3241 오류 (Microsoft® SQL Server® Backup to Microsoft Azure®Tool 사용) · Version : SQL Server 2008R2, Azure VM 온프레미스 환경의 SQL Server 2008R2에서 Microsoft® SQL Server® Backup to Microsoft Azure®Tool을 사용하여 데이터베이스를 백업하고 Azure VM(동일한 2008R2 빌드 버전)에서 복원을 시도하였으나 아래와 같은 오류가 발생 하였다. Msg 3241, Level 16, State 0, Line 4 The media family on device ‘c:\temp\test.bak’ is incorrectly formed. SQL Server can..