SQL Server/SQL Server Tip 662

SQL Server Login Timeout 디버깅

SQL Server Login Timeout 디버깅 · Version : SQL Server, SQL Server Linux SQL Server 2017 및 SQL Linux에서 로그인시 랜덤하게 연결이 실패하는 경우가있다. 이번 포스트는 SQL Server Login 시 Timeout이 발생하는 원인을 분석하기 위한 디버깅 과정을 소개한다. [Report Symptoms] · SQL 인증 및 AD 기반 로그인 모두에서 무작위 연결 실패 · 서버의 원격 클라이언트 또는 sqlcmd 실행시 디렉토리(/opt/mssql-tools/bin)에서 오류가 발생 · 장애 발생시 예측 할 수 없음 · Non-yielding 스케줄러 보고서 · SQL Server 2017 CU10에 동작이 표시되지 않음 · SQL S..

SQL Server Worker Thread 기본 계산

SQL Server Worker Thread 기본 계산 · Version : SQL Server SQL Server 2017부터는 소규모 환경을 고려하여 SQL Server의 기본 worker thread 수가 약간 변경되었다. 소규모 환경에서 SQL Server를 실행하는 경우 SQL Server는 worker thread를 줄인다. X64 설치의 경우 sp_configure ‘max worker threads’ 값을 0으로 설정하면 SQL Server는 아래 계산 공식을 사용한다. Default 512 Small Environment 256 소규모 환경에서는 SQL Server는 항상 worker thread 256을 사용한다. 더 큰 환경에서 실행하면 worker thread는 512가 기본값이며 ..

SQL Linux의 fsync 및 버퍼된 IO (버퍼된 쓰기중 오류가 발생하였을때 파일은 유효할까?)

SQL Linux의 fsync 및 버퍼된 IO (버퍼된 쓰기중 오류가 발생하였을때 파일은 유효할까?) · Version : SQL Server Linux PostgreSQL에서 fsync() 오류처리는 안전하지 않으며 XFS에서 데이터 손실이 발생할 수 있다는 내용이 있다. · PostgreSQL's handling of fsync() errors is unsafe and risks data loss at least on XFS : https://www.postgresql.org/message-id/flat/CAMsr%2BYE5Gs9iPqw2mQ6OHt1aC5Qk5EuBFCyG%2BvzHun1EqMxyQg%40mail.gmail.com#CAMsr+YE5Gs9iPqw2mQ6OHt1aC5Qk5EuBFCyG+..

SQL Server와 SQL Linux에서 인스턴스 파일 초기화 차이점

SQL Server와 SQL Linux에서 인스턴스 파일 초기화 차이점 · Version : SQL Server, SQL Server Linux SQL Server는 로그 파일 또는 데이터 파일이 증가하거나 새로 작성될때, 인스턴트 파일 초기화 작업을 진행한다. 이번 포스트에서는 인스턴스 파일이 초기화 될때, 기본 파일 시스템 구현과 Windows 와 Linux 간의 동작 차이를 알아본다. · Database File Initialization : https://docs.microsoft.com/en-us/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-2017 SQL Server는 데이터 및 로..

BCP 실행시 동일 세션에서 여러개의 BULK INSERT 문으로 표시되는 이유

BCP 실행시 동일 세션에서 여러개의 BULK INSERT 문으로 표시되는 이유 · Version : SQL Server SQL Server에서 BCP 명령을 사용하여 대량의 데이터를 로드할때, sys.dm_exec_requests 항목을 모니터링 해보면 command 항목에 BCP 대신 BULK INSERT 라고 표시되어 있다. 아래 표를 보면 동일한 세션에 BULK INSERT라고 여러개의 작업이 표시된 것을 확인할 수 있다. cpu_time total_elapsed_time writes session_id start_time command 1387 1396 32 51 2018-08-07 00:45:42.670 BULK INSERT 1930 1941 66 51 2018-08-07 00:46:02.08..

삭제된 AD 그룹 계정으로 SQL Server 로그인 사례 (로그인 그룹 삭제 후 조치해야할 사항)

삭제된 AD 그룹 계정으로 SQL Server 로그인 사례 (로그인 그룹 삭제 후 조치해야할 사항) · Version : SQL Server 도메인 [DOMAIN\group]에 멤버 [DOMAIN\user]가 있고 [DOMAIN\group]에 SQL Server 인스턴스에 대한 로그인 권한이 있는 그룹이 있다고 가정한다. “Drop Login [DOMAIN\group]”을 실행하면 [DOMAIN\user] 사용자는 더 이상 SQL Server에 액세스 할 수 없을 것으로 예상했다. 그러나 아래와 같은 결과가 나왔다. · [DOMAIN\user]의 새로운 연결은 허용되지 않음 · 기존 연결된 사용자는 계속 작동함 (기존의 [DOMAIN\user] 연결에는 그룹 구성원 및 권한이 캐시되므로 해당 값을 새로 ..

QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인

QPI(Query Performance Insights) 라이브러리를 사용하여 Azure SQL Managed Instance의 로그쓰기 사용량 확인 · Version : Azure SQL Azure SQL Managed Instance는 Azure 클라우드에서 호스팅되는 완전히 관리되는 SQL Server 인스턴스이다. 관리형 인스턴스에는 최대 로그쓰기 처리량 성능에 일부 제한이 있어 워크로드 속도가 느려질 수 있다. 이번 포스트에서는 관리형 인스턴스에서 쓰기 로그 처리량 문제를 식별하는 방법에 대해서 살펴본다. Azure SQL Managed Instance에는 최대 로그 쓰기 속도와 같은 몇 가지 기본 제공 리소스 제한이 있다. 로그 쓰기 제한을 도입한 이유는 로그 백업이 들어오는 데이터를 포착할 ..

ODBC 드라이버를 사용하여 SQL Server에서 Azure CosmosDB 쿼리 실행

ODBC 드라이버를 사용하여 SQL Server에서 Azure CosmosDB 쿼리 실행 · Version : SQL Server, Azure CosmosDB Azure CosmosDB는 기존의 SQL Server와 같은 클래식 데이터베이스에서 CosmosDB 컬렉션을 조회할 수 있는 ODBC 드라이버를 제공한다. 이번 포스트에서는 Transaction-SQL을 사용하여 SQL Server에서 CosmosDB 컬렉션을 쿼리하는 방법을 설명한다. SQL Server에서 CosmosDB를 쿼리하는 이유는 무엇일까? CosmosDB는 문서 및 기타 비관계형 데이터 유형을 저장 및 검색하고, 필터링하고 정렬할 수 있는 SQL / API를 제공한다. 그러나 경우에 따라 GROUP BY, HAVING, 분석 기능이..

Azure SQL Managed Instance에서 로컬 스토리지 사용량 모니터링

Azure SQL Managed Instance에서 로컬 스토리지 사용량 모니터링 · Version : SQL Server, Azure SQL Managed Instance Azure SQL Managed Instance를 사용할때, 선택한 인스턴스의 vCore 및 예약 스토리지에 따라 사전에 정의된 스토리지 공간이 있다. 이번 포스트에서는 Managed Instance 스토리지 공간을 모니터링하는 방법에 대해서 알아본다. Managed Instance에서는 아래와 같은 제약이 있다. · 인스턴스의 스토리지 제한은 Azure Portal에서 선택할 수 있다. 범용은 8TB, 비즈니스 크리티컬은 4TB 보다 클 수 없다. · (범용 전용) 로컬 SSD 디스크 스토리지의 제한 – Managed Instanc..

SQL Server Enterprise Edition 에서 CPU를 40 Core 이상 사용하지 못하는 현상

SQL Server Enterprise Edition 에서 CPU를 40 Core 이상 사용하지 못하는 현상 · Version : SQL Server 호스트의 서버의 CPU가96 Core인 장비에서 SQL Server 2016 Enterprise Edition을 설치 후 사용하는데 CPU 를 40Core 이상을 사용하지 못하는 문제가 있었다. 처음에는 NUMA의 불균형이 발생하지 않았는지 의심했었지만, 증상을 보면 0번 코어부터 39번 코어까지만 정확히 사용하는것을 확인할 수 있었다. 여러가지 원인을 조사 결과 해당 문제는 SQL Server의 라이선스 업데이트로 해결 되었다. MS의 라이선스 정책은 좀 많이 어려운 편인데 (서비스를 제공하는 형태에 따라 다양한 라이선스가 있음, 라이선스의 자세한 내용은..