SQL Server/SQL Server 이슈

상황 API 에서 SP 를 호출하면 Timeout 이 발생합니다. SSMS 에서 매개변수를 똑같이 해서 제가 직접 SP 를 호출하면 0초만에 수행이 완료됩니다. 참고로 Timeout 의 기준은 3초입니다. 많은 사이트에서는 'recompile' 이나 '매개변스 스니핑'을 하라고 가이드 하고 있습니다. 실제로 recompile 을 하면 해결될 수 있습니다. 그러나 이 방법은 근본적인 방법은 아닙니다. 임시 해결 방안 SP recompile 타 사이트에서 말하는 것처럼 해결하기 위한 결론부터 말씀드리면 SP recompile 을 하면 해결됩니다. 다만 SP recompile 은 현재상황을 해결하기 위한 임시방편이고 다시 똑같은 상황이 발생할 수 있습니다. 1 exec sp_recompile 'sp_name'..
이슈 상황 OPENROWSET 을 사용하여 실행계획 XML 타입을 수집하려고 하는 상황에서 오류가 발생하였습니다. 오류내용 [ErrorCode]9514 [ErrorMessage] 분산 쿼리에서 Xml 데이터 형식을 사용할 수 없습니다. 원격 개체 'a'에 xml 열이 있습니다. 쿼리 9번째 라인을 보면 XML 타입인 query_plan 을 OPENROWSET 을 사용하여 조회하려고 하고 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 set @query = 'SELECT @@SERVERNAME AS [ServerName], DB_NAME(t.[dbid]) AS [DBName], qs.plan_handle AS [PlanHandle], CASE WHEN ob..
Lock Waits/sec, Latch Waits/sec 수치가 높은 현상Batch Requests 수치가 증가하면서 Lock Waits 수치가 200 이상으로 증가하였습니다.Lock Waits 수치가 증가하면서 Lock Timeouts 수치도 함께 증가하였고Average Wait Time 수치가 2000ms (2초) 이상으로 증가하였습니다. 지표 의미 Batch Requests/sec DB 에 호출하는 초당 쿼리 수 ( 하나의 프로시저에서 여러개의 쿼리를 호출하더라도 1의 수치만 증가 ) Lock Waits/sec 초당 잠금을 획득하기 위해 대기하는 수 Lock Timeouts/sec 초당 잠금을 획득하기 위해 대기하다가 Timeout 되는 수 Average Wait Time (ms) 쿼리가 완료되기 ..
오류 발생 현상 SSMS 에서 데이터베이스 속성을 누르게 되면 아래와 같이 에러 창이 팝업되는 경우가 발생합니다.이 오류는 데이터베이스 소유자가 로그인 계정에 없는 경우 발생합니다. 요청한 대화 상자를 표시할 수 없습니다. 데이터베이스에 속성 Owner을(를) 사용할 수 없습니다. 이 속성이 이 개체에 대해 존재하지 않거나 액세스 권한이 부족하여 검색하지 못할 수 있습니다. 해결 방법sp_helpdb 명령어로 데이터베이스의 소유자를 확인해 봅니다.owner 가 '~~UNKNOWN~~' 으로 되어 있어서 소유자를 확인할 수 없습니다. 데이터베이스 소유자를 현재 생성되어 있는 로그인계정과 재 매핑해줍니다.이제 데이터베이스 속성창이 팝업되는 것을 볼 수 있습니다. 12345678910111213USE [TES..
데이터베이스 운용을 위해 필요한 파일은?DB 를 운영하기 위해서는 데이터파일과 트랜잭션로그파일이 필요합니다. 데이터파일은 말그대로 데이터가 저장된 파일을 의미하고트랜잭션 로그파일은 수행한 쿼리를 기록합니다. 만약 데이터파일이 유실되었고 백업파일이 없다면 복원이 불가능하지만트랜잭션파일이 유실된경우에는 현재 데이터파일에 있는 데이터만을 살릴 수 있습니다.* 커밋되지 않은 트랜잭션은 유실됩니다. 트랜잭션 로그파일이 손상된 경우 복원하는 방법1. 테스트 데이터베이스와 테이블 생성TEST 데이터베이스가 있고, 테스트를 위해 데이터를 저장할 샘플 테이블을 하나 생성합니다. 12345678CREATE DATABASE TESTON PRIMARY ( NAME = N'Test', FileName = N'C:\SQL Ser..
에러 내용 sp_rename 으로 테이블명을 변경 시 아래와 같은 오류가 발생하였습니다. [SQLSTATE 42000] (오류 15225)@itemtype '(null)'이(가) 입력으로 지정된 상태에서 이름이 'T1'인 항목을 현재 데이터베이스 'AdventureWorks'에서 찾을 수 없습니다. Msg 15225, Level 11, State 1,No item by the name of 'T1' could be found in the current database 'AdventureWorks', given that @itemtype was input as '(null)' 에러가 발생하는 원인sp_rename 의 Source 테이블에서 스키마가 명시되어 있지 않은 경우 발생할 수 있습니다.스키마가 명시..
에러내용 Integration Services 에 접속하려고 하면 아래와 같은 오류가 발생합니다. Connecting to the Integration Services service on the computer "localhost" failed with the following error:"This specified service does not exist as an installed service.". This error can occur when you try to connect to a SQL Server 2005 Integration Services service from the current version of the SQL Server tools.Instead, add folders to th..
데이터 파일 사용량이 가득찰 때 발생하는 이슈데이터파일의 사용량이 가득차게 되면, SQL Server 는 AutoGrow 옵션에 설정된 크기만큼 데이터파일 크기를 증가시킵니다.이 때 자동증가가 완료될 때까지 다른 세션의 트랜잭션은 대기하게 됩니다. 디스크의 성능이 좋지 않아서 데이터파일의 크기를 증가시키는데 오랜 시간이 걸리게 되면,파일 증가가 시간 내에 완료되지 못하고 파일 증가도 롤백되고, 에러로그에 아래와 같이 기록됩니다. - SQL Server has encountered x occurrences of I/O requests taking longer than 15 seconds to complete on file - Autogrow of file 'FILE_NAME' in database 'DAT..
단순 모드 ( Simple Mode)SQL Server 엔진에서 트랜잭션 로그를 주기적으로 비워줍니다.단순 모드라고 해서 트랜잭션 로그가 기록되지 않는 것은 아닙니다. 트랜잭션 로그가 계속 증가하는 원인 분석 단순모드 DB 의 트랜잭션 로그 사용량이 갑자기 증가하기 시작하였습니다. 처음에는 SQL Server 에서 비워주기 전 로그가 많이 쌓여 사용량이 증가한 것으로 생각하였지만,4시간이 지나도록 정리되지 못하고 사용량이 67% 까지 증가하고 있었습니다. 왜 정리를 못하는지 확인해보니, 2184 세션의 트랜잭션이 84910 초동안 활성화 되어 있었습니다.그래서 해당 트랜잭션 로그 시점 이후의 로그들은 정리되지 못하고 계속 쌓이고 있었습니다. 해당 세션을 KILL 한 후 로그 사용량을 확인해보니 0.7% ..
서브쿼리에서 옵티마이저의 실행계획아래와 같은 쿼리가 있다고 가정해 봅니다. 123456SELECT TOP 20 * FROM T1 WHERE C2 IN ( SELECT C2 FROM T2 WHERE C3 = 'ABC' )ORDER BY C1cs 보통의 경우 옵티마이저는 아래와 같은 실행계획을 세우게 됩니다.1. T2 테이블 C3='ABC' 인 C2 컬럼 데이터를 가져온다.2. T1 테이블의 C2 컬럼에 가져온 데이터가 존재하는 데이터를 가져온다.3. 이렇게 최종적으로 나온 데이터를 C1 컬럼으로 정렬하여 20 건만 출력한다. 이번 포스팅은 조금 특수한 경우로 아래 쿼리의 경우,부모쿼리부터 데이터를 가져오면서 서브쿼리와 비교하는 실행계획을 세우게 된 케이스 입니다. 1234567SELECT TOP 20 T1..
꽁담
'SQL Server/SQL Server 이슈' 카테고리의 글 목록