본문 바로가기

전체 글

오픈 트랜잭션 쿼리가 있는 데이터베이스 찾아보기 현재 오픈된 트랜잭션이 어느 데이터베이스에 있는지 찾는 방법은 여러 가지 있다. 이 활성화된 세션을 찾아야 블로킹세션을 찾을 수 있다. 아래와 같이 세션 2개를 열어서 확인해보자 -- session #1 tempdb 를 열고 실제 데이터베이스는 TD 에 있는 테이블을 업데이트 하고 있다. use tempdb go begin tran update A set diff = '1' from td.[dbo].[results] a -- rollback -- session #2 use tempdb go DBCC OPENTRAN 세션#1에서 tempdb를 오픈하고 Update를 하지만 실제는 TD 를 하고 있는 것을 찾아야 된다. SELECT spid, dbid FROM SYS.SYSPROCESSES WHERE OPE.. 더보기
SQL Server 다양한 와일드카드와 LIKE 연산자의 쓰임새 /* 다양한 와일드카드와 LIKE 연산자의 쓰임새*/ use AdventureWorks2014 go sp_helpindex [HumanResources.Department] /* AK_Department_Name nonclustered, unique located on PRIMARY Name PK_Department_DepartmentID clustered, unique, primary key located on PRIMARY DepartmentID */ -- p 로 시작하는 문자열 검색 SELECT name from HumanResources.Department WHERE Name LIKE 'p%'; -- index seek SELECT name from HumanResources.Department .. 더보기
주 복제본에서 파일 추가 작업시 실패경우의 문제 해결(가용성그룹) 가용성그룹 구축시 주, 보조 복제본의 데이터베이스 경로를 동일하게 하는것으로 권장한다. 하지만 구축환경에 따라 동일하지 않을 수 있다. 이런 환경에서 주복제본에서 특정 데이터베이스의 NDF 파일 추가시 정상 추가되지만, 보조 복제본에서는 데이터베이스가 일시 중지 될 수 있다. (NOT SYNCHRONIZING) 이런 장애시 아래와 같이 장애 해결이 가능하다. [Action Plan]1.가용성 그룹에서 보조 데이터베이스를 제거합니다.자세한 내용은 가용성 그룹에서 보조 데이터베이스 제거(SQL Server)를 참조하십시오. 2.기존 보조 데이터베이스에서 보조 복제본을 호스팅하는 서버 인스턴스에 대한 파일 경로를 지정하고 WITH NORECOVERY 및 WITH MOVE를 사용하여 보조 데이터베이스에 추가된 .. 더보기
가용성 그룹에 대한 읽기 전용 라우팅 구성 가용성 그룹에 대한 읽기 전용 라우팅 구성(SQL Server) Configure Read-Only Routing for an Availability Group https://msdn.microsoft.com/library/hh710054.aspx 읽기전용 라우팅을 언제 사용해야 적절할까는 고민할 부분이다. [환경] AG1㈜, AG2(보조), AG3(보조) 의 복제복이 존재한다. [Action Plan] A. 필수 구성 요소 가용성 그룹 수신기 있어야 한다. 읽기전용 보조 복제복이 있어야 한다. B. 적용은 T-SQL 또는 PowerShell 로만 적용이 가능하다. -- 1. 읽기전용 라우팅 설정 하기 /* 읽기전용이란 이름으로 정의하였기 때문에 보조복제본의 연결은 모두 ALL 이 아닌 READ_ONLY.. 더보기
명령 프롬프트 (cmd)를 다른 계정권한으로 시작하는 방법 명령 프롬프트 (cmd)를 다른 계정권한으로 시작하는 방법 Runas /user:시작할계정 cmd 위와 같이 명령어를 실행하면 아래와 같이 새로운 cmd 창이 자동으로 실행이 된다. 더보기
SQL Server 백업 with copy_only 사용하기 3탄 -- 시나리오 전체백업 + 전체백업 with copy_only + 로그백업 + 로그백업 with copy_only + 로그백업 with copy_only 백업파일이 존재한다. 여기서 복원시 전체백업 with copy_only + 마지막 로그백업 with copy_only 까지 전체복원이 되는가? 결론 : 잘된다. [로그백업 with copy_only] 이후의 로그백업을 순차적으로 복원하면 가능하다. with copy_only는 이전 정상백업과 연관이 되어 있으며 차등백업과 같은 변경점은 바로 직전의 로그백업 또는 전체백업 이후 변경점부터 모두 백업하게 된다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'B.. 더보기
SQL Server 백업 with copy_only 사용하기 2탄 -- 시나리오 전체백업 + 전체백업 with copy_only + 로그백업 ..... + 로그백업 백업파일이 존재한다. 여기서 복원시 전체백업 with copy_only + 마지막 로그백까지 전체복원이 되는가? 결론 : 잘된다. [로그백업 with copy_only] 이후의 로그백업을 순차적으로 복원하면 가능하다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST') DROP DATABASE BACKUPTEST GO CREATE DATABASE BACKUPTEST GO USE BACKUPTEST GO --drop table TBL IF OBJECT_ID('dbo.TBL') IS NOT NUL.. 더보기
SQL Server 백업 with copy_only 사용하기 1탄 -- 시나리오 전체백업 + 로그백업 ..... + 로그백업 with copy_only 백업파일이 존재한다. 여기서 복원시 전체백업 + 로그백업 with copy_only 하면 전체복원이 되는가? 결론 : 실패 왜? [로그백업 with copy_only] 이전의 로그백업이 존재하기에 이전 로그백업을 모두 복원 후 최종으로 [로그백업 with copy_only] 을 복원하면 가능하다. use master GO IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'BACKUPTEST') DROP DATABASE BACKUPTEST GO CREATE DATABASE BACKUPTEST GO USE BACKUPTEST GO --drop table .. 더보기