다수의 데이터 파일과는 다르게 다수의 로그파일은 성능이익에 전혀 영향을 미치지 않습니다. 트랜잭션 로그파일은 시간순으로 순차적으로 작성되어야 하며,따라서 SQL Server는 리두 로그 파일에 대해 I/O 작업을 병렬처리 할 수 없습니다. 만약 두번째 로그 파일이 사용하게 되는 경우는 첫 번째 로그 파일이 가득 차서 더이상 사용할 수 없게 되는 경우를 나타낼 것입니다. 따라서 저는 아래와 같은 방법이 더 좋다고 생각합니다. 하나의 큰 로그 파일을 사용하자1. 서비스 오픈 전 테스트를 진행하여 로그파일이 어느 사이즈까지 증가하는지를 산정2. 산정한 사이즈 량보다 충분한 여유공간이 있는 RAID10 디스크를 준비3. 해당 디스크에 로그파일의 경로를 설정4. 주기적으로 로그 축소 작업을 진행 추가적으로 FIL..
SQL Server
먼저 쿼리 하나를 보겠습니다. CREATE DATABASE [SampleDB] ON PRIMARY -- Primary Group( NAME = 'SampleDB_01', -- Primary Group 의 파일1 FILENAME = 'C:\Data\SampleDB_01.mdf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1MB ),( NAME = 'SampleDB_02', -- Primary Group 의 파일2 FILENAME = 'D:\Data\SampleDB_02.mdf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1MB ), FILEGROUP [SECONDARY] -- Secondary Group( NAME = 'Sa..
오라클의 DESC오라클에서 DESC 를 하게 되면 해당 테이블의 컬럼, 컬럼크기, NullAble 등의 정보를 확인할 수 있습니다.DESC TABLE_NAME SQL Server 의 DESCSQL Server 는 DESC 를 지원하지 않습니다.대신 sp_columns 의 프로시저와 INFORMATION_SCHEMA.COLUMNS 테이블로 정보를 조회할 수 있습니다. EXEC SP_COLUMNS TABLE_NAME SELECT * FROM INFORMATION_SCHEMA WHERE TABLE_NAME = 'TABLE_NAME'
MSSQL 서버 확인하기@@SERVERNAME 으로 확인할 수 있습니다.현재 접속해있는 서버를 반환합니다.SELECT @@SERVERNAME MSSQL 인스턴스 확인하기@@SERVICENAME 으로 확인할 수 있습니다.현재 접속해 있는 인스턴스를 반환합니다.SELECT @@SERVICENAME MSSQL 데이터베이스 확인하기DB_NAME() 으로 확인할 수 있습니다.현재 접속해 있는 데이터베이스를 반환합니다.SELECT DB_NAME() 현재 접속한 서버 / 인스턴스 / 데이터베이스 확인SELECT @@SERVERNAME, @@SERVICENAME, DB_NAME()
ORACLE 에서 출력된 데이터로 테이블 생성하기ORACLE 에서는 CREATE TABLE AS SELECT * 문으로 테이블을 생성할 수 있습니다.* 대신 컬럼을 지정할 수도 있습니다.CREATE TABLE NEW_TABLE AS SELECT C1, C2 FROM OLD_TABLE ; SQL Server 에서 출력된 데이터로 테이블 생성하기SQL Server 에서는 SELECT * INFO FROM 문으로 테이블을 생성할 수 있습니다.* 대신 컬럼을 지정할 수도 있습니다.SELECT C1, C2 INTO NEW_TABLE FROM OLD_TABLE ; 새로 생성되는 테이블들은 기존의 제약사항을 가지고 있지 않습니다.
ANSI_NULLS 와 ANSI_WARNINGS 이란ANSI_NULLS 는 NULL과 함께 사용될 경우 = , != () 비교 연산자의 ISO 호환 동작을 지정합니다.ANSI_WARNIGNS 은 집계함수에 NULL 값이 있으면 경고 메세지가 생성됩니다. https://docs.microsoft.com/ko-kr/sql/t-sql/statements/set-ansi-nulls-transact-sql?view=sql-server-2017https://docs.microsoft.com/ko-kr/sql/t-sql/statements/set-ansi-warnings-transact-sql?view=sql-server-2017 오류 해결법수행할 쿼리 위에 ANSI_NULLS 와 ANSI_WARNIGNS 을 ON ..
USE [?] 를 사용하자USE [?] 는 모든 데이터베이스에 접속하겠다는 의미를 나타냅니다.USE [?] 는 SQL Server 에서 지원하는 SP_MSFOREACHDB 프로시저와 함께 사용해야 합니다. USE [?] 의 사용법SELECT DB_NAME() 란에 원하는 쿼리를 넣어서 사용하시면 됩니다.참고로 쿼리에서 ' 를 쓰기를 원하는 경우 ' 를 하나 더 붙여서 '' 로 사용해야 합니다.EXEC MASTER..SP_MSFOREACHDB 'USE [?]BEGIN SELECT DB_NAME()END' USE [?] 에서 특정 데이터베이스 제외하기USE [?] 하단에 IF ''?' 로 제외할 수 있습니다.EXEC MASTER..SP_MSFOREACHDB 'USE [?]IF ''?'' ''master'' ..
MSSQL 은 백업시 백업 경로를 입력하는 대신에 백업 경로를 저장한 백업 장치를 사용하여 백업을 수행할 수 있습니다.매번 백업경로를 생각하고, 그 경로를 작성해야 하는 것보단 백업장치 명만 기억하면 되기 때문에 편리하게 사용할 수 있습니다. 이번 포스팅은 백업 장치를 만들어 보고 삭제하는 것을 알아보겠습니다. SSMS 를 이용하여 백업 장치를 만들어 보기1. 서버 개체 - 백업 장치 - 새 백업 장치를 클릭합니다. 2. 장치 이름에 원하는 백업 장치 명을, 아래에는 백업파일이 생성될 폴더 경로와 파일명을 입력해 줍니다.이 때, 폴더는 있어야 합니다. 3. 백업 장치가 만들어졌습니다. 나중에 백업할 때 경로를 작성하는 대신 백업 장치 명을 사용하여 진행 할 수 있습니다.아래의 2개 쿼리는 동일한 의미를 ..
MSSQL 은 전체 복원, 차등 복원, 로그 복원을 지원합니다. 전체 복원과 차등 복원은 같은 구문을 사용합니다.구문은 다음과 같습니다.RESTORE DATABASE AdventureWorks FROM DISK = 'C:\백업폴더\advbackup.bak'; 로그 복원 문법은 다음과 같습니다.RESTORE LOG AdventureWorks FROM DISK = 'C:\백업폴더\advbackup_log.bak'; 복원이 완료되면 다른 사용자는 바로 데이터베이스에 접근할 수 있습니다.하지만 전체 백업과 로그백업을 병행한 경우에는, 전체 복원을 한 후에 로그 복원을 해야 합니다.전체 복원만 한 상태에서 사용자가 데이터베이스에 접근한다면 아직 로그 복원되지 않은 불완전한 데이터베이스에 접근하는 것이기 때문엡니다..
MSSQL 은 SQL Server 로그를 확인할 수 있는 sp_readerrorlog 시스템 프로시저를 지원합니다.기본적으로 sp_readerrorlog 를 수행하면, 가장 최신 로그 파일의 모든 내용을 출력합니다. 추가적으로 sp_readerrorlog 에 옵션을 부여할 수 있는데,sp_readerrorlog @p1, @p2, @p3 와 같이 쓸 수 있습니다.@p1 은 파일 로그 시퀀스@p2 는 1과 2가 있는데 1 은 SQL Server 로그, 2 는 SQL Server 에이전트 로그@p3 은 찾기를 원하는 문자열 입니다. 문자열은 여러개로 구성될 수 있으며 and 연산자로 구성됩니다. xp_readerrorlog 는 추가적인 옵션을 부여할 수가 있습니다.xp_readerrorlog @p1, @p2,..