SQL Server 818

SQL Server Error Log 보관 주기 설정

SQL Server Error Log 보관 주기 설정 Version : SQL Server 2005, 2008, 2008R2, 2012 DB를 운영할 때 많이 보게 되는 항목 중 하나가 SQL Server ErrorLog 이다. 에러로그는 SQL Server에 문제가 발생 하였을 때나 서비스가 재시작, 또는 사용자가 지정한 내용에 대해서 로그를 남겨주는 기능을 한다. 서비스가 재시작 될 때마다 SQL Server Errorlog는 다음 순서로 싸이클링 된다. 문제는 장애나 기타 문제로 인하여 SQL Server의 에러로그가 많이 남았을 때 보관 개수로 인하여 실제 문제가 발생했던 시점의 에러를 확인하지 못하는 경우가 발생 한다. 그래서 에러로그의 보관 개수를 크게 설정 할 필요가 있다. 지난 아티클에서 ..

Anti-Virus로 인한 SQL Server 트러슈팅 (백신으로 인한 SQL Server 장애)

Anti-Virus로 인한 SQL Server 트러슈팅 (백신으로 인한 SQL Server 장애) Version : All Version Anti-Virus(백신 소프트웨어)가 정말 SQL Server 운영에 영향을 미치는가? 결론부터 말하면 '그렇다' 이다. 이 문제는 필자도 겪은 문제이기도 하지만 해결은 의외로 간단하다. 우선 이슈부터 살펴보자. 아래 이슈는 2013년 3월29일 SQL Server CSS 팀블로그의 내용이다. 아마도 이 글을 보는 DBA분들 중에도 동일하거나 비슷한 이슈를 겪은 분들이 있으리라 생각한다. 원본 링크 : http://blogs.msdn.com/b/psssql/archive/2013/03/29/the-case-of-anti-virus-filter-drive-interfe..

SQL Server 네트워크 백업 트러블슈팅(UNC 설정)

SQL Server 네트워크 백업 트러블슈팅(UNC 설정) Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 데이터베이스를 백업 할 때 로컬에 있는 하드디스크 뿐만 아니라 네트워크에 있는 다른 서버의 드라이브에도 백업 할 수도 있다. 그런데 네트워크에 있는 서버의 디스크를 네트워크 드라이브로 잡아서 해당 드라이브에 백업하려고 하면 백업 실패가 발생 한다. 이럴 때 UNC 방식을 사용하면 백업 작업을 수행 할 수 있다. [UNC란?] 네트워크에서 UNC는 컴퓨터 내의 공유 폴더 또는 파일이 저장되어 있는 장치를 명시하지 않고도 그 파일을 확인하기 위한 방법이다. 윈도우 운영체제에서 UNC 형식은 다음과 같아. \\Servername\Sharename\..

SQL Server 인증 실패시 반환되는 클라이언트 메시지 정보

SQL Server 인증 실패시 반환되는 클라이언트 메시지 정보 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에 로그인을 할 때 오류가 발생 하였다. 이때 클라이언트에 반환되는 오류 메시지에는 다양한 정보가 포함되어 있다. 이 메시지를 파악함으로써 문제 해결에 큰 도움이 된다. 다음의 경우를 살펴보자. 아래 그림은 단순히 SSMS에서 비밀번호와 ID를 틀리게 작성하여 로그인을 시도한 결과이다. (대부분의 경우는 응용프로그램에서 SQL Server에 접속하여 사용는 환경일 것이다.) 또는 .NET 어플리케이션에서 다음과 같은 메시지를 반환 할 수도 있다. 사용자 ''이(가) 로그인하지 못했습니다.(.Net SqlClient 데이터 공급자)" -----..

SQL Server에 할당된 메모리 개체 확인

SQL Server에 할당된 메모리 개체 확인 Version : SQL Server 2008, 2008R2, 2012 최근 들어 내가 관리하는 서버에 다음과 같인 Memory pressure라는 에러 로그를 확인 하였다. 이 에러는 무엇 일까? 왜 일어 났을까? Memory prossure는 SQL Server에서 시스템 메모리의 압박을 받을 때 메모리의 내용을 드릴다운 하여 발생 한다. 나의 경우에는 CLR을 사용하는 부분이 있는데 이 부분에서 개체 할당에 대한 압력 있을 때 발생 한다. (대부분 닷넷 코드를 잘못 만들었을 때 발생 하는 듯 하다.) 그렇다면 현재 할당되어 있는 메모리 개체 정보를 확인 하는 방법은 없을까? 다음 DMV를 통하여 확인 할 수 있다. SELECT SUM (omo.pages..

SQL Server 비동기 업데이트 활성 / 비활성에 따른 특성

SQL Server 비동기 업데이트 활성 / 비활성에 따른 특성 Version : SQL Server 2005, 2008, 2008R2, 2012 SQL Server에서 AUTO_UPDATE-STATISTICS_ASYNC(비동기 통계 업데이트) 옵션은 자동 통계 업데이트에 영향을 준다. 쿼리 최적화 프로그램이 동기 또는 비동기 통계 업데이트를 사용하는지를 결정 한다. AUTO_UPDATE-STATISTICS_ASYNC의 기본 값은 OFF 이다. 동기 통계 업데이트의 경우 쿼리는 항상 최신 통계로 컴파일 하고 실행 한다. 통계가 최신이 아닌 경우 쿼리를 컴파일 하고 실행하기 전에 쿼리 최적화 프로그램에서 업데이트 된 통계를 기다린다. [사용 경우] 대량 업데이트를 수행 하는 경우와 같이 데이터 분포를 변경..

DBCC CHECKDB와 Compute Column 인덱스의 성능 관계

DBCC CHECKDB와 Compute Column 인덱스의 성능 관계 Version : SQL Server 2005, 2008, 2008R2, 2012 하단의 참고 자료를 바탕으로 내용을 이해 하려고 하였으며 테스트를 진행 하였지만 원하는 결과가 도출 되지 않았다. (첨부 그림은 필자가 테스트한 내용이다.) 자세한 내용은 참고자료를 확인 하길 바란다. 참고 자료에 의하면 우리가 흔히 사용하는 DBCC CHECKDB (CHECKTABLE_의 성능이 계산된 열의 인덱스를 포함하고 있을 때 성능이 느려진다고 한다. 계산된 열에 비클러스터형 인덱스를 사용하는 경우 계산된 열의 값은 열 정의에 따라 계산되어야 한다. 이를 위해 내부 메커니즘은 'expression evaluator'이라는 것을 생성 한다. 'e..

Collation에 따른 DMV 실행 오류

Collation에 따른 DMV 실행 오류 Version : SQL Server 2005, 2008, 2008R2, 2012 대부분 DBA들은 자신만의 스크립트를 준비하여 필요할 때 꺼내어 사용한다. 또는 DB관리 툴에서 자동화된 스크립트를 이용하여 SQL Server의 상태를 확인 하곤 한다. 물론 나 또한 항상 준비된 스크립트 DMV 명령을 통해 잘 사용하고 있다. 그런데 한가지 문제가 발생 했다. 특정 서버에서 작동하지 않는 것이다. 상황을 설명하자면 국내에서 잘 사용하던 스크립트가 있었다. 그래서 이 스크립트를 내가 관리하는 해외 고객님 서버에서 실행 하였더니 에러가 발생 하였다. 무엇이 문제 일까? 스크립트에 오류가 있었던 것일까? 원인은 Collation에 따른 데이터 정렬셋으로 인하여 DMV..

참조 개체 확인 (sys.sql_expression_dependencies)

참조 개체 확인 (sys.sql_expression_dependencies) Version : SQL Server 2008, 2008R2, 2012 데이터베이스에서 엔티티의 참조 관계를 확인 하는 방법을 알아 보자. 사용자 정의 엔티티는 이름별 종속성 마다 한 개의 행을 가지고 있다. 두 엔터티 간의 종속성은 한 엔티티가 참조 엔티티라고 하는 다른 엔티티의 영구 SQL 식에 이름별로 나타나는 경우 생성된다. 예를 들어 뷰 정의에서 테이블을 참조하면 참조 엔터티인 뷰는 참조된 엔터티인 테이블에 종속됩니다. 테이블이 삭제되면 뷰를 사용할 수 없다. 실습을 통해서 참조된 엔티티를 확인 하는 방법을 알아 보자. [SSMS에서 확인하기] 종속성을 확인하려는 개체에서 마우스 오른쪽을 클릭하여 [종속성 보기]를 선택..

특정 테이블의 마지막 접근 시간 알아보기

특정 테이블의 마지막 접근 시간 알아보기 Version : SQL Server 2005, 2008, 2008R2, 2012 특정 테이블에 대하여 마지막 접근 시간 및 액세스 방법을 어떻게 알 수 있을까? 가장 좋은 솔루션은 데이터베이스 감사 작업을 생성하고 특정 테이블을 감사하는 것이다. 하지만 이와 같이 감사 작업을 생성하지 않고 간단히 정보를 보고 싶을 땐 어떻게 할까? 실습을 통해 알아 보자. 실습은 AdventureWorks2008R2 예제 데이터베이스를 이용 하였다. 다음과 같이 테이블을 스캔하는 쿼리와 인덱스를 탐색하는 2종류의 쿼리를 실행 하였다. select * from person.Address select * from person.Address where AddressID = 1 다음 ..