독까의 이야기

1. 감사 사양 설정 및 실행

-- 서버 수준에서 감사 사양 생성
USE master
CREATE SERVER AUDIT ServerAudit
TO FILE (FILEPATH = 'D:\MSSQL\AuditLogs\');

-- 서버 감사 사양을 시작
USE master
ALTER SERVER AUDIT ServerAudit
WITH (STATE = ON);

-- 데이터베이스 수준에서 감사 사양 생성
use MYDATABASENAME
CREATE DATABASE AUDIT SPECIFICATION DatabaseAuditSpec
FOR SERVER AUDIT ServerAudit
ADD (INSERT, UPDATE, DELETE ON DATABASE::MYDATABASENAME BY PUBLIC);

-- 데이터베이스 감사 사양을 시작
use MYDATABASENAME
ALTER DATABASE AUDIT SPECIFICATION DatabaseAuditSpec
WITH (STATE = ON);

--------------------------------------------------------------------------------------------

2. 감사 사양 종료 및 삭제

-- 감사 사양 종료 및 삭제
USE master
ALTER SERVER AUDIT ServerAudit
WITH (STATE = OFF);

-- 서버 감사 사양 삭제
USE master
DROP SERVER AUDIT ServerAudit;

-- 데이터베이스 감사 사양을 종료
use MYDATABASENAME
ALTER DATABASE AUDIT SPECIFICATION DatabaseAuditSpec
WITH (STATE = OFF);

-- 데이터베이스 감사 사양 삭제
use MYDATABASENAME
DROP DATABASE AUDIT SPECIFICATION DatabaseAuditSpec;

--------------------------------------------------------------------------------------------

3. 감사 사양 로그 조회

-- 감사 로그 파일 조회 (로컬 시간으로 변환)
SELECT 
    DATEADD(HOUR, DATEDIFF(HOUR, GETUTCDATE(), GETDATE()), event_time) AS local_event_time,
    server_instance_name,
    database_name,
    schema_name,
    object_name,
    statement
FROM sys.fn_get_audit_file('D:\MSSQL\AuditLogs\*.sqlaudit', DEFAULT, DEFAULT);

--------------------------------------------------------------------------------------------

4. 에이전트 작업 스케쥴 등록 :  매일 오전 00:00 신규 파일 생성

작업명 : DailyAuditLogRotation

-- T-SQL 작성
DECLARE @currentDateTime NVARCHAR(50);
DECLARE @auditFilePath NVARCHAR(500);
DECLARE @sqlCmd NVARCHAR(MAX);
DECLARE @innerSqlCmd NVARCHAR(MAX);

-- 현재 시간 문자열 생성
SET @currentDateTime = REPLACE(CONVERT(NVARCHAR, GETDATE(), 120), ':', '');

-- 감사 로그 파일 경로 설정 (예: D:\MSSQL\AuditLogs\AuditLog_YYYYMMDD_HHMMSS.audit)
SET @auditFilePath = 'D:\MSSQL\AuditLogs\AuditLog_' + @currentDateTime + '.audit';

-- 새로운 감사 로그 파일 생성을 위한 동적 SQL 명령 준비
SET @innerSqlCmd = '
    ALTER SERVER AUDIT ServerAudit
    WITH (STATE = OFF);

    ALTER SERVER AUDIT ServerAudit
    WITH (STATE = ON);
';

-- 동적 SQL 명령 실행
EXEC sp_executesql @innerSqlCmd;

# MSSQL 버전 업그레이드 테스트



1. 기존 MSSQL 2014 를 MSSQL 2017 로 업그레이드 테스트

현재 버전 : Microsoft SQL Server 2014 (SP1-GDR) (KB4019091) - 12.0.4237.0 (X64) 

 

2. MSSQL 2017 iso 파일 삽입 후 setup.exe 실행 

 

3. 이전 버전의 SQL Server 에서 업그레이드 선택 후 순차 진행.

업그레이드 진행 중에는 SQL 및 에이전트 서비스가 중지되었다가 재실행 되므로, 실제 운영 중인 DB 서버에서 진행시 외부 연결 차단 후 진행을 권장. 

 

4. 상위 버전의 SSMS 설치 


설치 된 SQL 버전보다 낮은 버전의 SSMS 로 작업시 오류 발생함. 
참고 : https://gunnm.tistory.com/40

 

SQL 2014 로 DB 이전 후 테이블 행 편집시 나오는 에러 문구

웹호스팅 서비스 이전을 진행하면서 DB 접속 시 발생하는 에러 확인 신규 서버에 설치 된 SQL 의 버전은 MS-SQL 2014 1. 2005 SSMS 에서 접속 2005 SSMS 에서는 MS-SQL 2008 이상에 접속 불가 2. 2008 SSMS 에서 접

gunnm.tistory.com

 

5. DB 버전 및 데이타 확인 

변경 된 버전 : Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64)

 

오라클 12c 설치를 해봤으니깐, 삭제 하는 것도 테스트를 한다. 

기본은 11g 삭제때와 동일하다.


# 1 

오라클 프로그램 항목들 중에서, Universal Installer 를 실행한다.


프로그램이 실행되면, "제품 설치 해제" 를 클릭한다.


설치 되어 있는 제품 체크 후, 제거 버튼 누른다. 


그러면 11g 때와 마찬가지로 경고창 호출 된다. 배치 파일 실행해서 삭제하라는 얘기다. 한결 같은 오라클이다. 



# 2

경고창이 시키는대로 배치 파일 실행하러 경로 이동한다.

D:\app\Administrator\product\12.2.0\dbhome_1\deinstall

CMD 를 관리자 모드로 실행해서 배치 파일 실행하던,  파일 탐색기에서 deinstall.bat 를 관리자 권한으로 실행하던 알아서 하면 된다. 

나는 그냥 CMD 에서 한다. 


뭐 하라고 나오면 그냥 Default 로 쭉쭉 진행하면 된다. 


몇 분 지나니깐 삭제 다 됐다고 나온다. 



# 3

CMD 에서 sqlplus 실행 및 1521 리스너 체크해도 아무것도 안나온다. 


서비스 목록에서도 안 보인다. 안 보이는데 캡처하면 무쓸모니깐 생략한다.


11g 때와 마찬가지로, 완전 삭제를 위해서 오라클 폴더 및 관련 레지스트리까지 삭제한다.

레지스트리 편집기 실행 후, 찾기 : oracle 입력 후, F3 계속 누르면서 나오는 오라클 12c 관련 항목 다 삭제해버리면 된다. 

java 나 oledb 관련 삭제하면 안 됨. 

리부팅 1회 하면 끝난다. 

뭐 삭제도 어려운거 아니니깐 그냥 해보면 된다.