DBMS/MSSQL
[MSSQL] LDF 파일 없이 MDF 로만 DB 복원 방법
/**[LDF 파일 없이 MDF 로만 DB 복원 방법 쿼리]********************* CREATE DATABASE [DB명] ON (FILENAME='[경로명') FOR ATTACH_FORCE_REBUILD_LOG ATTACH_FORCE_REBUILD_LOG = 로그파일을 강제로 재생성하는 구문 **************************************************************/
[MSSQL] 로그인 히스토리 쿼리
MSSQL 에서 로그인 히스토리를 추적 하는 쿼리 2가지 확인이 되어 정리 해 볼까 한다. 1. 보안 - 감사를 통한 히스토리 SELECT TOP 2000 Audit.EVENT_TIME , Audit.ACTION_ID , Audit.SUCCEEDED-- 1 - TRUE(성공), 0 - FALSE (실패) , Audit.SERVER_PRINCIPAL_NAME --서버 보안 주체 이름 , Audit.SERVER_PRINCIPAL_SID --서버 보안 주체 SID , Audit.STATEMENT , Audit.FILE_NAME FROM sys.fn_get_audit_file ('\\*',default,default) Audit INNER JOIN (SELECT DISTINCT action_id, [name] ..
[MSSQL] 로그온 트리거 (Login Trigger)
SQL 접속시 언제 누가 로그온 했는지 기록을 남겨야 했다 간단하게 Login Trigger 를 사용하여 DB 에 기록을 남겨보도록 하겠다 1. 접속 기록을 보관할 테이블 생성 USE DatabaseName CREATE TABLE [dbo].[TableName]( [SessionId] [INT] NULL, [SID] [VARCHAR](50) NULL, [LogonTime] [DATETIME] NULL, [ProgramName] [VARCHAR](50) NULL, [HostName] [VARCHAR](50) NULL, [ClientHost] [VARCHAR](50) NULL, [LoginName] [VARCHAR](50) NULL, [EventType] [VARCHAR](10) NULL, [ServerNa..
[MSSQL] 메시지 3702, 수준 16, 상태 3, 줄 1Cannot drop database "database name" because it is currently in use.
mssql 데이터 베이스를 삭제 하려고 하니 삭제가 되지 않고 오류가 난다. [에러내용] " 메시지 3702, 수준 16, 상태 3, 줄 1 Cannot drop database "ABC" because it is currently in use. " [발생원인] ABC 라는 데이터 베이스 삭제를 하려고 하니 삭제가 되지 않는다 [해결] 1. 해당 데이터베이스를 다른 세션에서 사용하고 있어 강제로 종료 하는 쿼리를 사용했다 USE master GO ALTER DATABASE 데이터베이스이름 SET OFFLINE WITH ROLLBACK IMMEDIATE GO 2. 데이터베이스 삭제 DROP DATABASE 데이터베이스이름
[MSSQL] index 리빌드 - 인덱스 다시 구성
운영하던 DB에 특정 쿼리 속도가 나오지 않는다... 쿼리 튜닝도 이슈 없어 보이고 인덱스 (INDEX) 도 확인했더니 이상이 없어 보인다 마지막 방법.. index 리빌드 진행 하기 !! [원인] - 지속적인 데이터 변경 작업에 따라 반복되는 페이지 분할의 문제로 인해 인덱스 조각화가 발생 - 해당 원인으로 성능 저하가 되며 인덱스 조각모음을 통해 다시 작성 해서 조각화를 제거 한다 [확인] - 인덱스 리빌드 대상을 확인 SELECT DB_NAME() AS 'DatabaseName' , OBJECT_NAME(S.OBJECT_ID) AS 'TableName' , I.NAME AS 'IndexName' , ROUND(AVG_FRAGMENTATION_IN_PERCENT, 2) AS 'AVGT %' FROM ..
[MSSQL] DB(Database) 전체 백업, 데이터베이스 Full BackUp
DBA 기본 업무중에 하나는 데이터베이스(DB) 백업 이다 데이터베이스 (DB) 백업 을 자동으로 설정 해두지 않는다면 장애발생, 문제발생시에 대응이 어렵다 SSMS 유지관리계획 을 통해 자동으로 데이터베이스 전체 백업 설정 하도록 정리를 해볼까 한다. 1. [관리탭 OPEN] > [유지관리계획 클릭] 2. [유지관리계획 오른쪽마우스 클릭] > [유지관리계획마법사 클릭] 3. [유지관리계획마법사 시작] > [다음 클릭] 4. [계획 속성 선택] > [이름, 설명 작성] > [다음 클릭] 5. [데이터베이스백업 (전체) 선택] > [유지 관리 정리 태스크 선택] > [다음 클릭] 6. [데이터베이스 백업(전체)] > [다음 클릭] 7. [데이터베이스 백업 태스크 정의] > [데이터베이스 오른쪽 화살표 선택..
[MSSQL] Identity 초기화 (DBCC CHECKIDENT)
간혹 Identity 컬럼의 시작 값을 초기화 해야할 때가 있다 이럴땐 어떻게 해야 할까? 1. 현재 Identity 값 확인 DBCC CHECKIDENT(테이블명, NORESEED) 2. Identity 값 변경 DBCC CHECKIDENT( 테이블명 , RESEED, 초기화 값 )
[MSSQL] 데이터베이스 (DB) 백업 압축 설정
운영 하는 DB 관리 중에 IDC 서버와 EC2 에서 운영 중인 DB들이 있다 모니터링 하다보니 디스크 공간이 부족하여 공간확보하기 위한 점검들을 하였다 공간 확보를 하기 위해 전체데이터 (FULL) 백업시 압축 설정을 하여 공간 확보 한 내용을 정리해보았다. [현상] DB SERVER 모니터링 하다보니 디스크 공간이 부족한 현상 발견 [확인] 전체 데이터베이스 자동 백업 시 백업 압축 설정 되지 않은 부분 확인 [해결] 1. [데이터베이스백업태스크] > [백업압축설정 확인] 2. [백업압축설정 확인] - 기본서버 설정 사용 : 백업 압축 기본값 서버 구성 옵션으로 설정 - 백업 압축 : 서버 수준 기본값에 관계 없이 백업을 압축 - 백업 압축 안함 : 서버 수준 기본값에 관계업싱 압축되지 않는 백업 3..
[MSSQL] DB 접근 접속자 로그 조회
현재 DB(데이터베이스) 에 누가 접근 했는지 확인 할때가 종종 있다. 예를 들면 강제로 KILL 을 해야 하는 경우 , 데이터베이스 정보 변경 , 데이터베이스 접속기록을 남기고자 할때 등의 경우다. 1. 쿼리 (Query) 실행 SELECTSP.SPID , SP.LOGINAME , SP.LOGIN_TIME , SP.LAST_BATCH , SP.PROGRAM_NAME , SP.CMD , SC.CLIENT_NET_ADDRESS FROMSYS.SYSPROCESSES SP INNER JOIN SYS.DM_EXEC_CONNECTIONS SC ON SP.SPID = SC.SESSION_ID 2. 결과 LOGINAME : 접속자명 LOGIN_TIME : 로그인 시간 LAST_BATCH : 마지막 실행시간 PROGR..
[MSSQL] 데이터베이스 삭제 (DROP DATABASE)
SSMS 로 데이터 베이스 삭제 (DROP DATABASE) 하고자 한다. 1. [접속하고자 하는 DB 접근] > [DB 선택] > [오른쪽마우스클릭] 2. [삭제 선택] > [개체 삭제 팝업] > [확인 버튼 클릭] - 삭제 하고자 하는 데이터베이스 정보 가 맞는지 확인 후 버튼 클릭을 한다 3. 삭제 진행 중 4. 데이터베이스 삭제 확인 USE 데이터베이스이름