1. 신규 MSSQL 설치 전 기존 DB의 데이터 정렬 (캐릭터 셋) 값 확인
보통은 다 Korean_Wansung_CI_AS
2. DB 복원 방법 선택
트랜잭션이 없는 DB라고 하면 걍 온라인 FULL백업 - 복원.
트랜잭션이 있는 경우 온라인 FULL백업 복원 후 데이터 유입을 막은 후에 로그백업 진행 후 복원.
※ 현재 트랜잭션 있는지 여부 확인
※ 트랜잭션 로그 trn_id / LSN확인
USE ReadingDBLog;
GO
select [Current LSN],
[Operation],
[Transaction Name],
[Transaction ID],
[Transaction SID],
[SPID],
[Begin Time]
FROM fn_dblog(null,null)
2-1. DB버전이 달라질 경우..
복원한 후 DB 속성에서 호환성을 이관된 DB로 맞춰주기
2-2. tempdb 개수
보통 코어수만큼 생성. tempdb.ldf는 100mb growth.
tempdb는 기본 8mb 크기로
코어가 8개 넘어가면 걍 8개까지만 생성...
2-3. error reporting
2016?부터 자동으로 활성화되는듯 하다. 내가 선택 안 해도...
SQL SERVER 시작 속성 > 고급탭에서 아니오로 바꾸자. (재시작 필요)
3. 본 DB에서 login 정보 추출하여 create sql 생성
http://blog.daum.net/99lib/618
※ 주의 : 암호까지는 복사가 되나 서버역할은 복사가 안 되는 듯.
create login 후 서버역할 / db멤버역할 은 일일이 확인 필요.
4. DB 유저 - 로그인명 매핑
create login 으로 새로 생성한 GUID와 DB내 GUID 가 맞지 않기 때문에 GUID 매핑 필요.
이 문제는 해당 DB를 사용하는 사용자의 GUID가 syslogins.sid 테이블에 있는 것과 다르기때문이다.
이것을 해결하기 위해서는 새 서버의 로그인 계정과 복원한 DB의 사용자 를 연결해야 한다.
USE [DB명]
GO
sp_change_users_login 'Update_one', 'USER이름', 'LOGIN이름'
5. 시스템 DB에 남아있는 프로시저 이관
사용자 DB의 프로시저는 DB복원할 때 같이 생성된다.
시스템DB에 생성해 둔건 저장 프로시저 > 스크립팅 > CREATE로 생성 스크립트 생성
6. JOB 이관
작업은 하나하나 우클릭해서 작업 스크립팅 - CREATE 로 생성
7. 링크드 서버 유무 확인
8. optimize foradhoc workloads 구성
- Ad-Hoc쿼리가 많은 OLTP 환경에서, Plan Cache에 저장되는 크기를 줄여, Buffer Pool 의 여유 공간을 확보할 수 있는 옵션입니다.
- optimize for ad hoc workloads 옵션은 여러 개의 일회용 임시 일괄 처리를 포함하는 작업에서 계획 캐시의 효율성을 높이는 데 사용됩니다. 이 옵션을 1로 설정하면 데이터베이스 엔진이 일괄 처리가 처음으로 컴파일 되었을 때 전체 컴파일 된 계획 대신 계획 캐시에 포함된 작은 컴파일 된 계획 스텁을 저장합니다. 이렇게 하면 계획 캐시에 다시 사용할 수 없는 컴파일 된 계획이 채워지지 않게 되므로 메모리 가중을 줄일 수 있습니다
- optimize for ad hoc workloads를 1로 설정하면 새 계획만 영향을 받으며, 이미 계획 캐시에 있던 계획은 영향을 받지 않습니다.
sp_configure 'optimize for ad hoc workloads', 4
go
reconfigure with override
go
9. 테이블 개수 비교
http://blog.daum.net/99lib/580
https://docs.microsoft.com/ko-kr/sql/tools/tablediff-utility?view=sql-server-2017
tablediff로 테이블간 정합성 확인.
primary key나 unique key가 없어서 tablediff가 안 된다면...
걍 테이블별 row개수 확인하기
SELECT o.name
, i.rows
FROM sysindexes i
INNER JOIN sysobjects o on i.id = o.id
WHERE i.indid < 2
AND o.xtype = 'U'
ORDER BY
i.id
'Database > MS-SQL' 카테고리의 다른 글
[스크랩] SQL Server 트랜잭션 로그 아키텍처 및 관리 가이드 (0) | 2018.07.08 |
---|---|
[스크랩] MSSQL 트랜잭션 로그 읽기 (0) | 2018.07.08 |
[스크랩] DB 로그인 정보 이관 (0) | 2018.07.08 |
MSSQL 로그인정보 확인 (생성일, 수정일 등) (0) | 2018.01.23 |
익스텐트(EXTENT) / 인덱스 (INDEX) / 페이지 (PAGE) (0) | 2018.01.18 |