[MSSQL] Blocking 유발하는 세션(root blocker)을 찾아내고, 운영자 계정에 root blocker만 kill할 수 있는 프로시저 제공하기
·
DB/SQL Server (MSSQL)
원래 MSSQL 에서 Session Kill 할 수 있는 권한은 DBA만 가지고 있는 게 바람직하다.MSSQL에서의 Session Kill 권한은 기본적으로, 'ALTER ANY CONNECTION' 권한이 부여되어 있어야 하며, 이는 서버 인스턴스 범위의 권한이기에, 해당 권한을 가진 SQL Login은 모든 세션에 대해 Kill 할 수 있는 아주 강력하고 위험한 권한을 가지게 된다. 그러나, 모든 운영 환경에 있어 DBA가 365일 24시간 내내 5분대기조처럼 있을 수는 없고,상황에 따라서 Kill 을 수행할 수 있는 조건만 잘 제어한다면, 운영자에게 특정 상황의 경우에만 Kill 할 수 있는 프로시저를 제공하는 게, 긴급한 장애도 해결하고 DBA도 한결 편해질 수 있는 방법임을 요즘 체감한다. 오늘..
[MSSQL] SQL Server Failover Cluster 구성
·
DB/SQL Server (MSSQL)
0. 사전 준비0.1. Windows Server Failover Cluster(WSFC) Feature(기능) 설치아래와 같이 [Server Manager] 를 통해, 'Failover Clustering' Feature를 설치해 주어야 한다.해당 feature 설치 후에는 안정적인 운영을 위해 시스템 reboot 가 필요할 수 있는 점 인지하자. 0.2. Windows Server Failover Cluster 구성[Create Cluster] 를 클릭 후, [Create Clustser Wizard] 에서 아래와 같이, Failover Cluster에 추가할 node(서버)들의 hostname을 입력하여 추가한다. 그럼 다음과 같이 Failover Cluster 구성이 가능한 지 Validation..
[MSSQL] 모든 유저 데이터베이스의 파일 사이즈 기록하는 Agent Job 만들기
·
DB/SQL Server (MSSQL)
DB 마이그레이션이나 다른 유지보수성 작업을 할 때,DB에서의 데이터 사용량이 날마다 얼마나 늘어나는 지 기록해 둘 필요가 있을 수 있다. 물론, 요즘엔 모니터링 Tool 이 너무나 잘 나와서 이런 프로시저나 Agent Job 을 굳이 생성해야 하나 싶지만, 그런 모니터링 Tool 도입이나 사용이 어려운 상황이 있을 수 있으므로, SQL Server 상에서 아래와 같이 관리용 테이블과 프로시저를 생성하고,SQL Server Agent Job 을 활용하여 해당 DB의 사이즈들을 기록하는 방법에 대해 알아보자.1. 파일 사이즈 기록해 둘 테이블 [DBFileSizesLog] 생성-- 여러 관리 작업과 관련된 데이터가 저장되는 곳인 [msdb]에 테이블을 만들기로 했다.USE [msdb];GO/* 각 DB들의..
[MSSQL] SQL Server 점검 시 유용한 쿼리 모음
·
DB/SQL Server (MSSQL)
DBA라고 하기 부끄러운 수준이지만, 그래도 다른 사람보다 DB를 조금 더 자주 접하면서 MSSQL에서 가지고 있으면 유용한 쿼리를 아래에 정리해 본다. 모두 sysadmin의 Server-level role을 가지고 수행하였다. 참고로, 아래 모든 쿼리들이 서버에 부하를 얼마나 유발하는 지 확인해 보지 않았고, 매우 심각한 상황(쿼리 하나가 서버를 죽이든,살리든 하는 상황)에서는 한 번도 사용해보지 않았으므로, 반드시 유의해서 사용해야 한다...! 부하를 최소화한다든지, 새로운 쿼리를 알아내게 되면 이 포스팅에 계속 업데이트할 예정이므로, 이 포스팅 내용은 계속 변할 수 있다!1. 현재 MSSQL의 상태 조회 쿼리MSSQL 인스턴스 내 활성화되어 있는 모든 세션 정보 확인 - sys.dm_exec_se..
[MSSQL] 데이터베이스명, 논리적 파일명, 물리적 파일명(.mdf, .ldf)을 쿼리로 변경하기
·
DB/SQL Server (MSSQL)
0. 현재 변경하려는 데이터베이스를 반드시 single_user 모드로 변경하기 USE [master] -- DB 단일 사용자 모드(Single User mode)로 변경 -- 'WITH ROLLBACK IMMEDIATE' : 이 ALTER문이 발생하는 도중 생기는 다른 트랜잭션들은 모두 즉시 롤백하라는 옵션 ALTER DATABASE [데이터베이스명] SET SINGLE_USER WITH ROLLBACK IMMEDIATE -- 작업 완료 후 DB를 다시 원상태(Multi User mode)로 변경 ALTER DATABASE [데이터베이스명] SET MULTI_USER 1. 데이터베이스 이름 변경 -- 만약 현재 변경하려는 데이터베이스가 특정 SQL User에서 default database로 설정되어 ..
[MSSQL] SQL Server Linked Server(연결된 서버) 추가와 로그인 매핑정보 / 삭제
·
DB/SQL Server (MSSQL)
SQL Server (MSSQL)의 Linked Server(연결된 서버)란?: 데이터베이스 엔진에서 다른 SQL Server 인스턴스 또는 Oracle과 같은 이기종 데이터베이스 제품의 테이블을 포함하는 Transact-SQL 문을 실행할 수 있도록 설정하는 것이다.Linked Server 를 Configuration 하는 데에 있어, 서버의 기능 및 필수 Parameter는 MS 공식 문서에서 제공하는 일반적인 예시와는 크게 다를 수 있다고 공식 문서에서도 명시되어 있으니, 다양한 케이스에 따라 많은 학습이 필요할 것으로 보인다.필자의 경우에는, SSMS GUI로는 원인 파악이 제대로 되지 않는(?) 다양한 에러(대부분 복잡한 권한 문제가 아닐까 싶다…)가 나는 것 같아, 아래와 같이 쿼리로 확실하게..